Set the base set of services
Use the test-matrix role from devstack-gate to define a base set of
services to be enabled for the controller and compute nodes.
Extend the local conf module to handle the base set of services.
Since the test-matrix defines services for primary and subnode nodes, we
need a multinode job to test that this works. Add a new host group
called subnode that includes the non-controller hosts. Add a new job
that runs devstack on a two nodes environment.
Using service from the test matrix enables swift in the gate, so we need
to set SWIFT_HASH for devstack to work.
Depends-on: Ie36ba0cd7cfcd450b75000a76a64d856f2a83eba
Depends-on: Id9ad3be4be25e699f77d6b5a252f046ce8234f45
Change-Id: I379abf482c89122533324e64fefbff3d5a618a89
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 dbd60f5..55ba4af 100644
--- a/roles/write-devstack-local-conf/library/devstack_local_conf.py
+++ b/roles/write-devstack-local-conf/library/devstack_local_conf.py
@@ -106,13 +106,13 @@
class LocalConf(object):
- def __init__(self, localrc, localconf, services, plugins):
+ def __init__(self, localrc, localconf, base_services, services, plugins):
self.localrc = []
self.meta_sections = {}
if plugins:
self.handle_plugins(plugins)
- if services:
- self.handle_services(services)
+ if services or base_services:
+ self.handle_services(base_services, services or {})
if localrc:
self.handle_localrc(localrc)
if localconf:
@@ -123,9 +123,12 @@
if v:
self.localrc.append('enable_plugin {} {}'.format(k, v))
- def handle_services(self, services):
- base_services = services.pop('base', True)
- if not base_services:
+ def handle_services(self, base_services, services):
+ enable_base_services = services.pop('base', True)
+ if enable_base_services and base_services:
+ self.localrc.append('ENABLED_SERVICES={}'.format(
+ ",".join(base_services)))
+ else:
self.localrc.append('disable_all_services')
for k, v in services.items():
if v is False:
@@ -164,6 +167,7 @@
module = AnsibleModule(
argument_spec=dict(
plugins=dict(type='dict'),
+ base_services=dict(type='list'),
services=dict(type='dict'),
localrc=dict(type='dict'),
local_conf=dict(type='dict'),
@@ -174,6 +178,7 @@
p = module.params
lc = LocalConf(p.get('localrc'),
p.get('local_conf'),
+ p.get('base_services'),
p.get('services'),
p.get('plugins'))
lc.write(p['path'])