From 0b855007f8d44662ad4fd52bda7df85f94b241c2 Mon Sep 17 00:00:00 2001 From: Jens Harbott Date: Wed, 19 Dec 2018 12:20:51 +0000 Subject: [PATCH] Allow plugin names to contain non-letter characters There are already devstack plugins that contain a hyphen in the name, like `networking-baremetal`. In order to allow ordering for these to work properly, amend the regexes we are using to match any non-whitespace characters instead of only alphanumerics. Amend the test to cover this use case. Change-Id: I91093a424f8d5e8007f140083e1ea36a81fe849f Closes-Bug: 1809016 --- .../library/devstack_local_conf.py | 4 ++-- roles/write-devstack-local-conf/library/test.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/roles/write-devstack-local-conf/library/devstack_local_conf.py b/roles/write-devstack-local-conf/library/devstack_local_conf.py index bba7e31f96..b1ad2dd4b4 100644 --- a/roles/write-devstack-local-conf/library/devstack_local_conf.py +++ b/roles/write-devstack-local-conf/library/devstack_local_conf.py @@ -155,8 +155,8 @@ class PluginGraph(DependencyGraph): continue self.loadDevstackPluginInfo(settings) - define_re = re.compile(r'^define_plugin\s+(\w+).*') - require_re = re.compile(r'^plugin_requires\s+(\w+)\s+(\w+).*') + define_re = re.compile(r'^define_plugin\s+(\S+).*') + require_re = re.compile(r'^plugin_requires\s+(\S+)\s+(\S+).*') def loadDevstackPluginInfo(self, fn): name = None reqs = set() diff --git a/roles/write-devstack-local-conf/library/test.py b/roles/write-devstack-local-conf/library/test.py index 65d327b267..88d404b856 100644 --- a/roles/write-devstack-local-conf/library/test.py +++ b/roles/write-devstack-local-conf/library/test.py @@ -78,12 +78,12 @@ class TestDevstackLocalConf(unittest.TestCase): with open(os.path.join( self.tmpdir, 'foo-plugin', 'devstack', 'settings'), 'w') as f: - f.write('define_plugin foo\n') + f.write('define_plugin foo-plugin\n') with open(os.path.join( self.tmpdir, 'bar-plugin', 'devstack', 'settings'), 'w') as f: - f.write('define_plugin bar\n') - f.write('plugin_requires bar foo\n') + f.write('define_plugin bar-plugin\n') + f.write('plugin_requires bar-plugin foo-plugin\n') localrc = {'test_localrc': '1'} local_conf = {'install': @@ -94,8 +94,8 @@ class TestDevstackLocalConf(unittest.TestCase): # We use ordereddict here to make sure the plugins are in the # *wrong* order for testing. plugins = OrderedDict([ - ('bar', 'git://git.openstack.org/openstack/bar-plugin'), - ('foo', 'git://git.openstack.org/openstack/foo-plugin'), + ('bar-plugin', 'git://git.openstack.org/openstack/bar-plugin'), + ('foo-plugin', 'git://git.openstack.org/openstack/foo-plugin'), ]) p = dict(localrc=localrc, local_conf=local_conf, @@ -119,7 +119,7 @@ class TestDevstackLocalConf(unittest.TestCase): for line in f: if line.startswith('enable_plugin'): plugins.append(line.split()[1]) - self.assertEqual(['foo', 'bar'], plugins) + self.assertEqual(['foo-plugin', 'bar-plugin'], plugins) def test_libs_from_git(self): "Test that LIBS_FROM_GIT is auto-generated"