1
# Various utilies for dealing with Neutron and the renaming from Quantum.
3
from subprocess import check_output
5
from charmhelpers.core.hookenv import (
11
from charmhelpers.contrib.openstack.utils import os_release
14
def headers_package():
15
"""Ensures correct linux-headers for running kernel are installed,
16
for building DKMS package"""
17
kver = check_output(['uname', '-r']).strip()
18
return 'linux-headers-%s' % kver
22
def quantum_plugins():
23
from charmhelpers.contrib.openstack import context
26
'config': '/etc/quantum/plugins/openvswitch/'
27
'ovs_quantum_plugin.ini',
28
'driver': 'quantum.plugins.openvswitch.ovs_quantum_plugin.'
31
context.SharedDBContext(user=config('neutron-database-user'),
32
database=config('neutron-database'),
33
relation_prefix='neutron')],
34
'services': ['quantum-plugin-openvswitch-agent'],
35
'packages': [[headers_package(), 'openvswitch-datapath-dkms'],
36
['quantum-plugin-openvswitch-agent']],
37
'server_packages': ['quantum-server',
38
'quantum-plugin-openvswitch'],
39
'server_services': ['quantum-server']
42
'config': '/etc/quantum/plugins/nicira/nvp.ini',
43
'driver': 'quantum.plugins.nicira.nicira_nvp_plugin.'
44
'QuantumPlugin.NvpPluginV2',
46
context.SharedDBContext(user=config('neutron-database-user'),
47
database=config('neutron-database'),
48
relation_prefix='neutron')],
51
'server_packages': ['quantum-server',
52
'quantum-plugin-nicira'],
53
'server_services': ['quantum-server']
58
def neutron_plugins():
59
from charmhelpers.contrib.openstack import context
62
'config': '/etc/neutron/plugins/openvswitch/'
63
'ovs_neutron_plugin.ini',
64
'driver': 'neutron.plugins.openvswitch.ovs_neutron_plugin.'
67
context.SharedDBContext(user=config('neutron-database-user'),
68
database=config('neutron-database'),
69
relation_prefix='neutron')],
70
'services': ['neutron-plugin-openvswitch-agent'],
71
'packages': [[headers_package(), 'openvswitch-datapath-dkms'],
72
['quantum-plugin-openvswitch-agent']],
73
'server_packages': ['neutron-server',
74
'neutron-plugin-openvswitch'],
75
'server_services': ['neutron-server']
78
'config': '/etc/neutron/plugins/nicira/nvp.ini',
79
'driver': 'neutron.plugins.nicira.nicira_nvp_plugin.'
80
'NeutronPlugin.NvpPluginV2',
82
context.SharedDBContext(user=config('neutron-database-user'),
83
database=config('neutron-database'),
84
relation_prefix='neutron')],
87
'server_packages': ['neutron-server',
88
'neutron-plugin-nicira'],
89
'server_services': ['neutron-server']
94
def neutron_plugin_attribute(plugin, attr, net_manager=None):
95
manager = net_manager or network_manager()
96
if manager == 'quantum':
97
plugins = quantum_plugins()
98
elif manager == 'neutron':
99
plugins = neutron_plugins()
101
log('Error: Network manager does not support plugins.')
105
_plugin = plugins[plugin]
107
log('Unrecognised plugin for %s: %s' % (manager, plugin), level=ERROR)
116
def network_manager():
118
Deals with the renaming of Quantum to Neutron in H and any situations
119
that require compatability (eg, deploying H with network-manager=quantum,
122
release = os_release('nova-common')
123
manager = config('network-manager').lower()
125
if manager not in ['quantum', 'neutron']:
128
if release in ['essex']:
129
# E does not support neutron
130
log('Neutron networking not supported in Essex.', level=ERROR)
132
elif release in ['folsom', 'grizzly']:
133
# neutron is named quantum in F and G
136
# ensure accurate naming for all releases post-H