def validate_availability_zones(self, context, resource_type, availability_zones): """Verify that the availability zones exist.""" if not availability_zones or resource_type != 'router': return azs = {az['name'] for az in self._plugin_driver.list_availability_zones(context).values()} diff = set(availability_zones) - azs if diff: raise az_exc.AvailabilityZoneNotFound( availability_zone=', '.join(diff))
def validate_obj_azs(self, availability_zones): """Verify that the availability zones exist, and only 1 hint was set. """ # For now we support only 1 hint per network/router # TODO(asarfaty): support multiple hints if len(availability_zones) > 1: err_msg = _("Can't use multiple availability zone hints") raise n_exc.InvalidInput(error_message=err_msg) # check that all hints appear in the predefined list of availability # zones diff = (set(availability_zones) - set(self.get_azs_names())) if diff: raise az_exc.AvailabilityZoneNotFound(availability_zone=diff.pop())
def validate_availability_zones(self, context, resource_type, availability_zones): """Verify that the availability zones exist.""" if not availability_zones: return if resource_type == 'network': agent_type = constants.AGENT_TYPE_DHCP elif resource_type == 'router': agent_type = constants.AGENT_TYPE_L3 else: return azs = get_availability_zones_by_agent_type(context, agent_type, availability_zones) diff = set(availability_zones) - set(azs) if diff: raise az_exc.AvailabilityZoneNotFound(availability_zone=diff.pop())
def _validate_availability_zones(context, az_list): if not az_list: return t_ctx = t_context.get_context_from_neutron_context(context) with context.session.begin(subtransactions=True): pods = core.query_resource(t_ctx, models.Pod, [], []) az_set = set(az_list) known_az_set = set([pod['az_name'] for pod in pods]) known_az_set = known_az_set | set( [pod['region_name'] for pod in pods]) diff = az_set - known_az_set if diff: raise az_exc.AvailabilityZoneNotFound( availability_zone=diff.pop())
def _validate_availability_zones(context, az_list): if not az_list: return t_ctx = t_context.get_context_from_neutron_context(context) with db_api.CONTEXT_WRITER.using(context): pods = core.query_resource(t_ctx, models.Pod, [], []) az_set = set(az_list) known_az_set = set([pod['az_name'] for pod in pods]) known_az_set = known_az_set | set( [pod['region_name'] for pod in pods]) diff = az_set - known_az_set if diff: raise az_exc.AvailabilityZoneNotFound( availability_zone=diff.pop())
def validate_availability_zones(self, context, resource_type, availability_zones): """Verify that the availability zones exist.""" if not availability_zones: return if resource_type == 'network': agent_type = constants.AGENT_TYPE_DHCP elif resource_type == 'router': agent_type = constants.AGENT_TYPE_L3 else: return query = context.session.query( agent_model.Agent.availability_zone).filter_by( agent_type=agent_type).group_by( agent_model.Agent.availability_zone) query = query.filter( agent_model.Agent.availability_zone.in_(availability_zones)) azs = [item[0] for item in query] diff = set(availability_zones) - set(azs) if diff: raise az_exc.AvailabilityZoneNotFound(availability_zone=diff.pop())