X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fcm-plugins.git;a=blobdiff_plain;f=validators%2Fsrc%2FHostsValidation.py;fp=validators%2Fsrc%2FHostsValidation.py;h=9fd35772a5c5f0168b13da5ee45a5d6e2dacc0cc;hp=e59ed26257a8744679796133b58471312fd1575c;hb=e8deeb0fdaa020920f27a3a0f6a4355808dd11f6;hpb=174629ea1aeb5b719f8bf28f78671119399f391d diff --git a/validators/src/HostsValidation.py b/validators/src/HostsValidation.py index e59ed26..9fd3577 100644 --- a/validators/src/HostsValidation.py +++ b/validators/src/HostsValidation.py @@ -43,6 +43,7 @@ class HostsValidation(cmvalidator.CMValidator): performance_profile_attr = 'cloud.performance_profiles' networking_attr = 'cloud.networking' MIN_PASSWORD_LENGTH = 8 + caas_service_profiles = (caas_master_profile, caas_worker_profile) def get_subscription_info(self): logging.debug('get_subscription info called') @@ -97,6 +98,8 @@ class HostsValidation(cmvalidator.CMValidator): self.validate_network_ranges(host_dict, net_profile_dict, networking_dict) + is_caas_oam_mapped_on_any_hosts = False + for host_name, host_data in host_dict.iteritems(): attr = 'network_profiles' profiles = host_data.get(attr) @@ -147,6 +150,14 @@ class HostsValidation(cmvalidator.CMValidator): raise validation.ValidationError('%s is not mapped for %s' % (subnet_name, host_name)) + if self.is_host_caas_node(host_data): + subnet_name = 'caas_oam' + if self.network_is_mapped(value_dict.get(profile_name), subnet_name): + is_caas_oam_mapped_on_any_hosts = True + elif is_caas_oam_mapped_on_any_hosts: + raise validation.ValidationError('%s is not mapped for %s' % + (subnet_name, host_name)) + elif key == self.storage_profile_attr: profile_list = [] if not value_dict else value_dict.keys() @@ -563,6 +574,9 @@ class HostsValidation(cmvalidator.CMValidator): return True return False + def is_host_caas_node(self, host): + return bool(set(self.caas_service_profiles).intersection(host['service_profiles'])) + def _get_type_of_nodes(self, nodetype, config): nodes = [k for k, v in config.iteritems() if nodetype in v['service_profiles']] return nodes