Esempio n. 1
0
    def get_flavor_next_provider(self, context, flavor_id,
                                 filters=None, fields=None,
                                 sorts=None, limit=None,
                                 marker=None, page_reverse=False):
        """From flavor, choose service profile and find provider for driver."""

        objs = obj_flavor.FlavorServiceProfileBinding.get_objects(context,
            flavor_id=flavor_id)
        if not objs:
            raise flav_exc.FlavorServiceProfileBindingNotFound(
                sp_id='', fl_id=flavor_id)
        # Get the service profile from the first binding
        # TODO(jwarendt) Should become a scheduling framework instead
        sp_obj = self._get_service_profile(context, objs[0].service_profile_id)

        if not sp_obj.enabled:
            raise flav_exc.ServiceProfileDisabled()

        LOG.debug("Found driver %s.", sp_obj.driver)

        service_type_manager = sdb.ServiceTypeManager.get_instance()
        providers = service_type_manager.get_service_providers(
            context,
            filters={'driver': sp_obj.driver})

        if not providers:
            raise flav_exc.ServiceProfileDriverNotFound(
                driver=sp_obj.driver)

        LOG.debug("Found providers %s.", providers)

        res = {'driver': sp_obj.driver,
               'provider': providers[0].get('name')}

        return [db_utils.resource_fields(res, fields)]
Esempio n. 2
0
 def delete_flavor_service_profile(self, context,
                                   service_profile_id, flavor_id):
     if (obj_flavor.FlavorServiceProfileBinding.delete_objects(
             context, service_profile_id=service_profile_id,
             flavor_id=flavor_id) == 0):
         raise flav_exc.FlavorServiceProfileBindingNotFound(
             sp_id=service_profile_id, fl_id=flavor_id)
Esempio n. 3
0
 def get_flavor_service_profile(context,
                                service_profile_id, flavor_id, fields=None):
     if not obj_flavor.FlavorServiceProfileBinding.objects_exist(
             context, service_profile_id=service_profile_id,
             flavor_id=flavor_id):
         raise flav_exc.FlavorServiceProfileBindingNotFound(
             sp_id=service_profile_id, fl_id=flavor_id)
     res = {'service_profile_id': service_profile_id,
            'flavor_id': flavor_id}
     return db_utils.resource_fields(res, fields)