Example #1
0
    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_ext.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.availability_zone).filter_by(
         agent_type=agent_type).group_by(Agent.availability_zone)
     query = query.filter(Agent.availability_zone.in_(availability_zones))
     azs = [item[0] for item in query]
     diff = set(availability_zones) - set(azs)
     if diff:
         raise az_ext.AvailabilityZoneNotFound(availability_zone=diff.pop())
Example #3
0
 def get_az_by_hint(self, hint):
     az = self._availability_zones_data.get_availability_zone(hint)
     if not az:
         raise az_ext.AvailabilityZoneNotFound(availability_zone=hint)
     return az