Disable c-bak and etcd3 in grenade jobs

Grenade only runs tempest smoke tests and there are no
cinder-backup service related smoke tests in the main
tempest repo so running the c-bak service on the primary
and subnode (in multinode jobs) is just a waste of resources
since it's not used in testing.

Similarly, etcd3 is really only interesting for cinder in
a multinode job but in grenade multinode jobs etcd3 is not
enabled on the subnode, so only the primary node cinder
services are configured to use etcd3, so again it's a waste
of resources.

There is a theory that bug 1844929 is failing primarily on
OVH nodes because they aggressively restrict iops so we're
running into swap issues [1]. Freeing up more resources on
the nodes used in grenade jobs might alleviate some of that
swap pressure.

To do this using the feature test matrix in devstack-gate
the test_matrix.py script has to be updated such that
services can be added/removed per config rather than per
feature because otherwise grenade says it wants cinder but
cannot remove cinder-specific services like c-bak.

[1] http://lists.openstack.org/pipermail/openstack-discuss/2019-November/010506.html

Change-Id: Ide146793053ae6b62f93a5af45c6130a21514e87
Related-Bug: #1844929
This commit is contained in:
Matt Riedemann 2019-12-20 14:43:54 -05:00
parent 3e2df9e972
commit cab3fb81ab
3 changed files with 25 additions and 3 deletions

View File

@ -22,6 +22,9 @@ config:
# feature changes for different test matrixes
grenade:
rm-features: [trove, sahara, neutron-adv, horizon]
# Disable c-bak and etcd3 since they are not used in grenade runs
# and just take up resources (iops) which can cause gate failures.
rm-services: [c-bak, etcd3]
tempest:
features: [tempest]
cells:

View File

@ -73,7 +73,7 @@ def configs_from_env():
return configs
def calc_services(branch, features, role):
def calc_services(branch, features, configs, role):
LOG.debug('Role: %s', role)
services = set()
for feature in features:
@ -99,6 +99,25 @@ def calc_services(branch, features, role):
services.difference_update(
grid_feature[branch].get('rm-services', []))
# Finally, calculate any services to add/remove per config.
# do all the adds first
for config in configs:
if config in GRID['config']:
add_services = GRID['config'][config].get('services', [])
if add_services:
LOG.debug('Adding services for config %s: %s',
config, add_services)
services.update(add_services)
# deletes always trump adds
for config in configs:
if config in GRID['config']:
rm_services = GRID['config'][config].get('rm-services', [])
if rm_services:
LOG.debug('Removing services for config %s: %s',
config, rm_services)
services.difference_update(rm_services)
return sorted(list(services))
@ -188,7 +207,7 @@ def main():
features = calc_features(branch, configs)
LOG.debug("Features: %s " % features)
services = calc_services(branch, features, role)
services = calc_services(branch, features, configs, role)
LOG.debug("Services: %s " % services)
if opts.ansible:

View File

@ -22,7 +22,7 @@ TEMPEST_NEUTRON_MASTER="n-api,n-api-meta,n-cpu,n-sch,n-cond,n-novnc,g-api,g-reg,
TEMPEST_HEAT_SLOW_MASTER="n-api,n-api-meta,n-cpu,n-sch,n-cond,n-novnc,g-api,g-reg,key,c-api,c-vol,c-sch,c-bak,s-proxy,s-account,s-container,s-object,mysql,rabbit,dstat,peakmem_tracker,etcd3,tempest,q-svc,q-agt,q-dhcp,q-l3,q-meta,q-metering,placement-api"
GRENADE_NEW_MASTER="n-api,n-api-meta,n-cpu,n-sch,n-cond,n-novnc,g-api,g-reg,key,c-api,c-vol,c-sch,c-bak,s-proxy,s-account,s-container,s-object,mysql,rabbit,dstat,peakmem_tracker,etcd3,tempest,placement-api"
GRENADE_NEW_MASTER="n-api,n-api-meta,n-cpu,n-sch,n-cond,n-novnc,g-api,g-reg,key,c-api,c-vol,c-sch,s-proxy,s-account,s-container,s-object,mysql,rabbit,dstat,peakmem_tracker,tempest,placement-api"
# Utility function for tests
function assert_list_equal {