def load(cls, context, cluster_id, clazz=None): try: db_info = DBCluster.find_by(context=context, id=cluster_id, deleted=False) except exception.ModelNotFoundError: raise exception.ClusterNotFound(cluster=cluster_id) if not clazz: ds_version = (datastore_models.DatastoreVersion. load_by_uuid(db_info.datastore_version_id)) manager = ds_version.manager clazz = strategy.load_api_strategy(manager).cluster_class return clazz(context, db_info)
def authorize_target_action(cls, context, target_rule_name, target_id, is_cluster=False): target = None if is_cluster: target = cluster_models.Cluster.load(context, target_id) else: target = instance_models.Instance.load(context, target_id) if not target: if is_cluster: raise exception.ClusterNotFound(cluster=target_id) raise exception.InstanceNotFound(instance=target_id) target_type = 'cluster' if is_cluster else 'instance' policy.authorize_on_target( context, '%s:extension:%s' % (target_type, target_rule_name), {'tenant': target.tenant_id})