diff --git a/roles/ComputeHCIOvsDpdk.yaml b/roles/ComputeHCIOvsDpdk.yaml index 4fbc2fe592..bce7d32b6d 100644 --- a/roles/ComputeHCIOvsDpdk.yaml +++ b/roles/ComputeHCIOvsDpdk.yaml @@ -13,6 +13,8 @@ subnet: storage_subnet StorageMgmt: subnet: storage_mgmt_subnet + # CephOSD present so serial has to be 1 + update_serial: 1 RoleParametersDefault: TunedProfileName: "cpu-partitioning" VhostuserSocketGroup: "hugetlbfs" diff --git a/roles/ComputeLocalEphemeral.yaml b/roles/ComputeLocalEphemeral.yaml index 8a13c64e00..81623ecf3e 100644 --- a/roles/ComputeLocalEphemeral.yaml +++ b/roles/ComputeLocalEphemeral.yaml @@ -15,6 +15,7 @@ subnet: tenant_subnet Storage: subnet: storage_subnet + update_serial: 25 HostnameFormatDefault: '%stackname%-novacompute-local-%index%' RoleParametersDefault: TunedProfileName: "virtual-host" diff --git a/roles/ComputeRBDEphemeral.yaml b/roles/ComputeRBDEphemeral.yaml index f10b9c4108..33a443bab4 100644 --- a/roles/ComputeRBDEphemeral.yaml +++ b/roles/ComputeRBDEphemeral.yaml @@ -15,6 +15,7 @@ subnet: tenant_subnet Storage: subnet: storage_subnet + update_serial: 25 HostnameFormatDefault: '%stackname%-novacompute-rbd-%index%' RoleParametersDefault: TunedProfileName: "virtual-host" diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py index a13d32d581..889c33af75 100755 --- a/tools/yaml-validate.py +++ b/tools/yaml-validate.py @@ -452,8 +452,27 @@ def validate_with_compute_role_services(role_filename, role_tpl, exclude_service 'ServicesDefault in roles/Compute.yaml'.format(role_filename, ', '.join(missing_services))) return 1 - return 0 + cmpt_us = cmpt_tpl[0].get('update_serial', None) + tpl_us = role_tpl[0].get('update_serial', None) + + if 'OS::TripleO::Services::CephOSD' in role_services: + if tpl_us not in (None, 1): + print('ERROR: update_serial in {0} ({1}) ' + 'is should be 1 as it includes CephOSD'.format( + role_filename, + tpl_us, + cmpt_us)) + return 1 + elif cmpt_us is not None and tpl_us != cmpt_us: + print('ERROR: update_serial in {0} ({1}) ' + 'does not match roles/Compute.yaml {2}'.format( + role_filename, + tpl_us, + cmpt_us)) + return 1 + + return 0 def validate_multiarch_compute_roles(role_filename, role_tpl): errors = 0