diff --git a/hooks/charmhelpers/contrib/openstack/neutron.py b/hooks/charmhelpers/contrib/openstack/neutron.py index d18d41e3..d27820e7 100644 --- a/hooks/charmhelpers/contrib/openstack/neutron.py +++ b/hooks/charmhelpers/contrib/openstack/neutron.py @@ -1,5 +1,7 @@ # Various utilies for dealing with Neutron and the renaming from Quantum. +from subprocess import check_output + from charmhelpers.core.hookenv import ( config, log, @@ -9,6 +11,13 @@ from charmhelpers.core.hookenv import ( from charmhelpers.contrib.openstack.utils import os_release +def headers_package(): + """Ensures correct linux-headers for running kernel are installed, + for building DKMS package""" + kver = check_output(['uname', '-r']).strip() + return 'linux-headers-%s' % kver + + # legacy def quantum_plugins(): from charmhelpers.contrib.openstack import context @@ -23,7 +32,7 @@ def quantum_plugins(): database=config('neutron-database'), relation_prefix='neutron')], 'services': ['quantum-plugin-openvswitch-agent'], - 'packages': [['openvswitch-datapath-dkms'], + 'packages': [[headers_package(), 'openvswitch-datapath-dkms'], ['quantum-plugin-openvswitch-agent']], }, 'nvp': { @@ -49,7 +58,7 @@ def neutron_plugins(): database=config('neutron-database'), relation_prefix='neutron')], 'services': ['neutron-plugin-openvswitch-agent'], - 'packages': [['openvswitch-datapath-dkms'], + 'packages': [[headers_package(), 'openvswitch-datapath-dkms'], ['quantum-plugin-openvswitch-agent']], }, 'nvp': { diff --git a/hooks/charmhelpers/contrib/openstack/utils.py b/hooks/charmhelpers/contrib/openstack/utils.py index 39f627df..62d207f9 100644 --- a/hooks/charmhelpers/contrib/openstack/utils.py +++ b/hooks/charmhelpers/contrib/openstack/utils.py @@ -45,16 +45,17 @@ OPENSTACK_CODENAMES = OrderedDict([ ]) # The ugly duckling -SWIFT_CODENAMES = { - '1.4.3': 'diablo', - '1.4.8': 'essex', - '1.7.4': 'folsom', - '1.7.6': 'grizzly', - '1.7.7': 'grizzly', - '1.8.0': 'grizzly', - '1.9.0': 'havana', - '1.9.1': 'havana', -} +SWIFT_CODENAMES = OrderedDict([ + ('1.4.3', 'diablo'), + ('1.4.8', 'essex'), + ('1.7.4', 'folsom'), + ('1.8.0', 'grizzly'), + ('1.7.7', 'grizzly'), + ('1.7.6', 'grizzly'), + ('1.10.0', 'havana'), + ('1.9.1', 'havana'), + ('1.9.0', 'havana'), +]) def error_out(msg): @@ -137,8 +138,11 @@ def get_os_codename_package(package, fatal=True): try: if 'swift' in pkg.name: - vers = vers[:5] - return SWIFT_CODENAMES[vers] + swift_vers = vers[:5] + if swift_vers not in SWIFT_CODENAMES: + # Deal with 1.10.0 upward + swift_vers = vers[:6] + return SWIFT_CODENAMES[swift_vers] else: vers = vers[:6] return OPENSTACK_CODENAMES[vers]