74 lines
2.3 KiB
Python
Raw Normal View History

2014-06-05 11:59:23 +01:00
from charmhelpers.contrib.openstack.neutron import neutron_plugin_attribute
from copy import deepcopy
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"
NEUTRON_CONF = '%s/neutron.conf' % NEUTRON_CONF_DIR
NEUTRON_DEFAULT = '/etc/default/neutron-server'
ML2_CONF = '%s/plugins/ml2/ml2_conf.ini' % NEUTRON_CONF_DIR
2014-06-05 11:59:23 +01:00
BASE_RESOURCE_MAP = OrderedDict([
(NEUTRON_CONF, {
'services': ['neutron-plugin-openvswitch-agent'],
'contexts': [neutron_ovs_context.OVSPluginContext(),
2014-09-09 13:09:30 +00:00
context.AMQPContext(),
2014-09-10 17:16:46 +00:00
context.ZeroMQContext(),
context.NotificationDriverContext()],
}),
2014-06-05 11:59:23 +01:00
(ML2_CONF, {
'services': ['neutron-plugin-openvswitch-agent'],
'contexts': [neutron_ovs_context.OVSPluginContext()],
}),
])
TEMPLATES = 'templates/'
2014-06-19 10:56:25 +01:00
2014-06-05 11:59:23 +01:00
def determine_packages():
return neutron_plugin_attribute('ovs', 'packages', 'neutron')
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):
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)
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()}
2014-09-09 13:09:30 +00:00
def get_topics():
2014-09-09 17:04:26 +00:00
topics = []
topics.append('q-agent-notifier-port-update')
topics.append('q-agent-notifier-network-delete')
topics.append('q-agent-notifier-tunnel-update')
topics.append('q-agent-notifier-security_group-update')
topics.append('q-agent-notifier-dvr-update')
2014-10-15 08:56:43 +00:00
if neutron_ovs_context.neutron_api_settings()['l2_population']:
topics.append('q-agent-notifier-l2pop')
2014-09-09 17:04:26 +00:00
return topics
2014-09-09 13:09:30 +00:00