Local metadata
This commit is contained in:
commit
d9d06ecefe
|
@ -98,4 +98,6 @@ options:
|
|||
traffic to the external public network. Valid values are either MAC
|
||||
addresses (in which case only MAC addresses for interfaces without an IP
|
||||
address already assigned will be used), or interfaces (eth0)
|
||||
|
||||
enable-local-dhcp-and-metadata:
|
||||
type: boolean
|
||||
default: false
|
||||
|
|
|
@ -108,10 +108,10 @@ def get_shared_secret():
|
|||
return secret
|
||||
|
||||
|
||||
class DVRSharedSecretContext(OSContextGenerator):
|
||||
class SharedSecretContext(OSContextGenerator):
|
||||
|
||||
def __call__(self):
|
||||
if NeutronAPIContext()()['enable_dvr']:
|
||||
if NeutronAPIContext()()['enable_dvr'] or config('enable-metadata'):
|
||||
ctxt = {
|
||||
'shared_secret': get_shared_secret(),
|
||||
'local_ip': resolve_address(),
|
||||
|
|
|
@ -39,6 +39,7 @@ from neutron_ovs_utils import (
|
|||
register_configs,
|
||||
restart_map,
|
||||
use_dvr,
|
||||
enable_metadata,
|
||||
)
|
||||
|
||||
hooks = Hooks()
|
||||
|
@ -71,6 +72,8 @@ def config_changed():
|
|||
CONFIGS.write_all()
|
||||
for rid in relation_ids('zeromq-configuration'):
|
||||
zeromq_configuration_relation_joined(rid)
|
||||
for rid in relation_ids('neutron-plugin'):
|
||||
neutron_plugin_joined(relation_id=rid)
|
||||
|
||||
|
||||
@hooks.hook('neutron-plugin-api-relation-changed')
|
||||
|
@ -90,10 +93,14 @@ def neutron_plugin_api_changed():
|
|||
|
||||
@hooks.hook('neutron-plugin-relation-joined')
|
||||
def neutron_plugin_joined(relation_id=None):
|
||||
secret = get_shared_secret() if use_dvr() else None
|
||||
print "Enable metadata: {}".format(enable_metadata())
|
||||
if config('enable-local-dhcp-and-metadata'):
|
||||
apt_install(['neutron-metadata-agent', 'neutron-dhcp-agent'] fatal=True)
|
||||
secret = get_shared_secret() if enable_metadata() else None
|
||||
rel_data = {
|
||||
'metadata-shared-secret': secret,
|
||||
}
|
||||
print rel_data
|
||||
relation_set(relation_id=relation_id, **rel_data)
|
||||
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ GIT_PACKAGE_BLACKLIST = [
|
|||
]
|
||||
|
||||
NOVA_CONF_DIR = "/etc/nova"
|
||||
NEUTRON_DHCP_AGENT_CONF = "/etc/neutron/dhcp_agent.ini"
|
||||
NEUTRON_CONF_DIR = "/etc/neutron"
|
||||
NEUTRON_CONF = '%s/neutron.conf' % NEUTRON_CONF_DIR
|
||||
NEUTRON_DEFAULT = '/etc/default/neutron-server'
|
||||
|
@ -95,6 +96,17 @@ BASE_RESOURCE_MAP = OrderedDict([
|
|||
'contexts': [context.PhyNICMTUContext()],
|
||||
}),
|
||||
])
|
||||
METADATA_RESOURCE_MAP = OrderedDict([
|
||||
(NEUTRON_METADATA_AGENT_CONF, {
|
||||
'services': ['neutron-metadata-agent'],
|
||||
'contexts': [neutron_ovs_context.SharedSecretContext(),
|
||||
neutron_ovs_context.APIIdentityServiceContext()],
|
||||
}),
|
||||
(NEUTRON_DHCP_AGENT_CONF, {
|
||||
'services': ['neutron-dhcp-agent'],
|
||||
'contexts': [],
|
||||
}),
|
||||
])
|
||||
DVR_RESOURCE_MAP = OrderedDict([
|
||||
(NEUTRON_L3_AGENT_CONF, {
|
||||
'services': ['neutron-l3-agent'],
|
||||
|
@ -108,11 +120,6 @@ DVR_RESOURCE_MAP = OrderedDict([
|
|||
'services': ['neutron-l3-agent'],
|
||||
'contexts': [context.ExternalPortContext()],
|
||||
}),
|
||||
(NEUTRON_METADATA_AGENT_CONF, {
|
||||
'services': ['neutron-metadata-agent'],
|
||||
'contexts': [neutron_ovs_context.DVRSharedSecretContext(),
|
||||
neutron_ovs_context.APIIdentityServiceContext()],
|
||||
}),
|
||||
])
|
||||
TEMPLATES = 'templates/'
|
||||
INT_BRIDGE = "br-int"
|
||||
|
@ -158,8 +165,13 @@ def resource_map():
|
|||
resource_map = deepcopy(BASE_RESOURCE_MAP)
|
||||
if use_dvr():
|
||||
resource_map.update(DVR_RESOURCE_MAP)
|
||||
resource_map.update(METADATA_RESOURCE_MAP)
|
||||
dvr_services = ['neutron-metadata-agent', 'neutron-l3-agent']
|
||||
resource_map[NEUTRON_CONF]['services'] += dvr_services
|
||||
if enable_metadata():
|
||||
resource_map.update(METADATA_RESOURCE_MAP)
|
||||
metadata_services = ['neutron-metadata-agent']
|
||||
resource_map[NEUTRON_CONF]['services'] += metadata_services
|
||||
return resource_map
|
||||
|
||||
|
||||
|
@ -209,7 +221,7 @@ def configure_ovs():
|
|||
|
||||
|
||||
def get_shared_secret():
|
||||
ctxt = neutron_ovs_context.DVRSharedSecretContext()()
|
||||
ctxt = neutron_ovs_context.SharedSecretContext()()
|
||||
if 'shared_secret' in ctxt:
|
||||
return ctxt['shared_secret']
|
||||
|
||||
|
@ -218,6 +230,10 @@ def use_dvr():
|
|||
return context.NeutronAPIContext()()['enable_dvr']
|
||||
|
||||
|
||||
def enable_metadata():
|
||||
return use_dvr() or config('enable-local-dhcp-and-metadata')
|
||||
|
||||
|
||||
def git_install(projects_yaml):
|
||||
"""Perform setup, and install git repos specified in yaml parameter."""
|
||||
if git_install_requested():
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
###############################################################################
|
||||
# [ WARNING ]
|
||||
# Configuration file maintained by Juju. Local changes may be overwritten.
|
||||
###############################################################################
|
||||
[DEFAULT]
|
||||
state_path = /var/lib/neutron
|
||||
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
|
||||
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
|
||||
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
|
||||
|
||||
enable_metadata_network = True
|
||||
enable_isolated_metadata = True
|
||||
|
||||
ovs_use_veth = True
|
Loading…
Reference in New Issue