Make nova ephemeral storage backend configurable per-role

When multiple Compute roles are used, admins may want to use different storage
backends on each role.

This change turns NovaEnableRbdBackend into a role specific param.
Any other config that is implicitly enabled by the global NovaEnableRbdBackend
now requires a dedicated param.

Co-Authored-By: ratailor@redhat.com
Change-Id: I9f40a2a3561fcb1d1fec9d9c3c1f9cabaf02650c
Implements: blueprint nova-backend-per-role
This commit is contained in:
Oliver Walsh
2019-03-28 02:10:00 +00:00
parent e3edf7b84c
commit 65d7e55f54
8 changed files with 207 additions and 13 deletions

View File

@@ -442,7 +442,7 @@ def validate_controller_no_ceph_role(filename, tpl):
return 1
return 0
def validate_with_compute_role_services(role_filename, role_tpl, exclude_service):
def validate_with_compute_role_services(role_filename, role_tpl, exclude_service=()):
cmpt_filename = os.path.join(os.path.dirname(role_filename),
'./Compute.yaml')
cmpt_tpl = yaml.load(open(cmpt_filename).read())
@@ -1105,6 +1105,10 @@ def validate(filename, param_map):
if filename == './roles/Compute.yaml':
retval |= validate_multiarch_compute_roles(filename, tpl)
if filename in ('./roles/ComputeLocalEphemeral.yaml',
'./roles/ComputeRBDEphemeral.yaml'):
retval |= validate_with_compute_role_services(filename, tpl)
# NOTE(hjensas): The routed network data example is very different ...
# We need to develop a more advanced validator, probably using a schema
# definition instead.