2014-06-05 11:59:23 +01:00
|
|
|
from charmhelpers.contrib.openstack.neutron import neutron_plugin_attribute
|
|
|
|
from copy import deepcopy
|
2014-06-11 09:44:51 +00:00
|
|
|
|
|
|
|
from charmhelpers.contrib.openstack import context, templating
|
2014-06-05 11:59:23 +01:00
|
|
|
from collections import OrderedDict
|
|
|
|
from charmhelpers.contrib.openstack.utils import (
|
2014-06-19 10:56:25 +01:00
|
|
|
os_release,
|
2014-06-05 11:59:23 +01:00
|
|
|
)
|
|
|
|
import neutron_ovs_context
|
|
|
|
|
|
|
|
NOVA_CONF_DIR = "/etc/nova"
|
|
|
|
NEUTRON_CONF_DIR = "/etc/neutron"
|
2014-06-11 09:44:51 +00:00
|
|
|
NEUTRON_CONF = '%s/neutron.conf' % NEUTRON_CONF_DIR
|
2014-06-10 10:28:12 +00:00
|
|
|
NEUTRON_DEFAULT = '/etc/default/neutron-server'
|
2015-02-02 13:31:39 +00:00
|
|
|
NEUTRON_L3_AGENT_CONF = "/etc/neutron/l3_agent.ini"
|
|
|
|
NEUTRON_FWAAS_CONF = "/etc/neutron/fwaas_driver.ini"
|
2014-06-11 09:44:51 +00:00
|
|
|
ML2_CONF = '%s/plugins/ml2/ml2_conf.ini' % NEUTRON_CONF_DIR
|
2014-06-05 11:59:23 +01:00
|
|
|
|
|
|
|
BASE_RESOURCE_MAP = OrderedDict([
|
2014-06-11 09:44:51 +00:00
|
|
|
(NEUTRON_CONF, {
|
|
|
|
'services': ['neutron-plugin-openvswitch-agent'],
|
|
|
|
'contexts': [neutron_ovs_context.OVSPluginContext(),
|
2015-01-28 09:44:49 +00:00
|
|
|
context.AMQPContext(ssl_dir=NEUTRON_CONF_DIR)],
|
2014-06-11 09:44:51 +00:00
|
|
|
}),
|
2014-06-05 11:59:23 +01:00
|
|
|
(ML2_CONF, {
|
|
|
|
'services': ['neutron-plugin-openvswitch-agent'],
|
|
|
|
'contexts': [neutron_ovs_context.OVSPluginContext()],
|
|
|
|
}),
|
2015-02-02 13:31:39 +00:00
|
|
|
(NEUTRON_L3_AGENT_CONF, {
|
|
|
|
'services': ['neutron-vpn-agent'],
|
|
|
|
'contexts': [neutron_ovs_context.L3AgentContext()],
|
|
|
|
}),
|
|
|
|
(NEUTRON_FWAAS_CONF, {
|
|
|
|
'services': ['neutron-vpn-agent'],
|
|
|
|
'contexts': [neutron_ovs_context.L3AgentContext()],
|
|
|
|
}),
|
2014-06-05 11:59:23 +01:00
|
|
|
])
|
|
|
|
TEMPLATES = 'templates/'
|
2014-06-09 10:37:59 +00:00
|
|
|
|
2014-06-19 10:56:25 +01:00
|
|
|
|
2015-02-02 13:31:39 +00:00
|
|
|
def determine_dvr_packages():
|
|
|
|
pkgs = []
|
|
|
|
if neutron_ovs_context.use_dvr():
|
|
|
|
pkgs = 'neutron-vpn-agent'
|
|
|
|
return pkgs
|
|
|
|
|
|
|
|
|
2014-06-05 11:59:23 +01:00
|
|
|
def determine_packages():
|
2015-02-02 13:31:39 +00:00
|
|
|
pkgs = neutron_plugin_attribute('ovs', 'packages', 'neutron')
|
|
|
|
pkgs.extend(determine_dvr_packages())
|
|
|
|
return pkgs
|
2014-06-05 11:59:23 +01:00
|
|
|
|
2014-06-19 10:56:25 +01:00
|
|
|
|
2014-06-05 11:59:23 +01:00
|
|
|
def register_configs(release=None):
|
2014-06-23 14:37:47 +01:00
|
|
|
release = release or os_release('neutron-common', base='icehouse')
|
2014-06-05 11:59:23 +01:00
|
|
|
configs = templating.OSConfigRenderer(templates_dir=TEMPLATES,
|
|
|
|
openstack_release=release)
|
|
|
|
for cfg, rscs in resource_map().iteritems():
|
|
|
|
configs.register(cfg, rscs['contexts'])
|
|
|
|
return configs
|
|
|
|
|
2014-06-19 10:56:25 +01:00
|
|
|
|
2014-06-05 11:59:23 +01:00
|
|
|
def resource_map():
|
|
|
|
'''
|
|
|
|
Dynamically generate a map of resources that will be managed for a single
|
|
|
|
hook execution.
|
|
|
|
'''
|
|
|
|
resource_map = deepcopy(BASE_RESOURCE_MAP)
|
2015-02-02 13:31:39 +00:00
|
|
|
if not neutron_ovs_context.use_dvr():
|
|
|
|
resource_map.pop(NEUTRON_L3_AGENT_CONF)
|
2014-06-05 11:59:23 +01:00
|
|
|
return resource_map
|
|
|
|
|
2014-06-19 10:56:25 +01:00
|
|
|
|
2014-06-05 11:59:23 +01:00
|
|
|
def restart_map():
|
|
|
|
'''
|
|
|
|
Constructs a restart map based on charm config settings and relation
|
|
|
|
state.
|
|
|
|
'''
|
|
|
|
return {k: v['services'] for k, v in resource_map().iteritems()}
|