def get_cluster(self, cluster, query_string='', shared_username=None, shared_api_key=None): """Retrieves a cluster. The model parameter should be a string containing the cluster id or the dict returned by create_cluster. As cluster is an evolving object that is processed until it reaches the FINISHED or FAULTY state, the function will return a dict that encloses the cluster values and state info available at the time it is called. If this is a shared cluster, the username and sharing api key must also be provided. """ check_resource_type(cluster, CLUSTER_PATH, message="A cluster id is needed.") cluster_id = get_cluster_id(cluster) if cluster_id: return self._get("%s%s" % (self.url, cluster_id), query_string=query_string, shared_username=shared_username, shared_api_key=shared_api_key)
def create_centroid(self, cluster, input_data=None, args=None, wait_time=3, retries=10): """Creates a new centroid. """ cluster_id = None resource_type = get_resource_type(cluster) if resource_type == CLUSTER_PATH: cluster_id = get_cluster_id(cluster) check_resource(cluster_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) else: raise Exception("A cluster id is needed to create a" " centroid. %s found." % resource_type) if input_data is None: input_data = {} create_args = {} if args is not None: create_args.update(args) create_args.update({ "input_data": input_data}) create_args.update({ "cluster": cluster_id}) body = json.dumps(create_args) return self._create(self.centroid_url, body, verify=self.verify)
def delete_cluster(self, cluster): """Deletes a cluster. """ check_resource_type(cluster, CLUSTER_PATH, message="A cluster id is needed.") cluster_id = get_cluster_id(cluster) if cluster_id: return self._delete("%s%s" % (self.url, cluster_id))
def create_model(self, origin_resource, args=None, wait_time=3, retries=10): """Creates a model from an origin_resource. Uses a remote resource to create a new model using the arguments in `args`. The allowed remote resources can be: - dataset - list of datasets - cluster In the case of using cluster id as origin_resource, a centroid must also be provided in the args argument. The first centroid is used otherwise. """ create_args = {} if args is not None: create_args.update(args) if isinstance(origin_resource, list): # mutidatasets create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries) else: resource_type = get_resource_type(origin_resource) # model from cluster and centroid if resource_type == CLUSTER_PATH: cluster_id = get_cluster_id(origin_resource) cluster = check_resource(cluster_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) if not 'centroid' in create_args: try: centroid = cluster['object'][ 'cluster_models'].keys()[0] create_args.update({'centroid': centroid}) except KeyError: raise KeyError("Failed to generate the model. A " "centroid id is needed in the args " "argument to generate a model from " "a cluster.") create_args.update({'cluster': cluster_id}) elif resource_type == DATASET_PATH: create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries) else: raise Exception("A dataset, list of dataset ids" " or cluster id plus centroid id are needed" " to create a" " dataset. %s found." % resource_type) body = json.dumps(create_args) return self._create(self.model_url, body)
def create_model(self, origin_resource, args=None, wait_time=3, retries=10): """Creates a model from an origin_resource. Uses a remote resource to create a new model using the arguments in `args`. The allowed remote resources can be: - dataset - list of datasets - cluster In the case of using cluster id as origin_resource, a centroid must also be provided in the args argument. The first centroid is used otherwise. """ create_args = {} if args is not None: create_args.update(args) if isinstance(origin_resource, list): # mutidatasets create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries) else: resource_type = get_resource_type(origin_resource) # model from cluster and centroid if resource_type == CLUSTER_PATH: cluster_id = get_cluster_id(origin_resource) cluster = check_resource(cluster_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) if 'centroid' not in create_args: try: centroid = cluster['object'][ 'cluster_models'].keys()[0] create_args.update({'centroid': centroid}) except KeyError: raise KeyError("Failed to generate the model. A " "centroid id is needed in the args " "argument to generate a model from " "a cluster.") create_args.update({'cluster': cluster_id}) elif resource_type == DATASET_PATH: create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries) else: raise Exception("A dataset, list of dataset ids" " or cluster id plus centroid id are needed" " to create a" " dataset. %s found." % resource_type) body = json.dumps(create_args) return self._create(self.model_url, body)
def update_cluster(self, cluster, changes): """Updates a cluster. """ check_resource_type(cluster, CLUSTER_PATH, message="A cluster id is needed.") cluster_id = get_cluster_id(cluster) if cluster_id: body = json.dumps(changes) return self._update("%s%s" % (self.url, cluster_id), body)
def create_dataset(self, origin_resource, args=None, wait_time=3, retries=10): """Creates a remote dataset. Uses a remote resource to create a new dataset using the arguments in `args`. The allowed remote resources can be: - source - dataset - list of datasets - cluster In the case of using cluster id as origin_resources, a centroid must also be provided in the args argument. The first centroid is used otherwise. If `wait_time` is higher than 0 then the dataset creation request is not sent until the `source` has been created successfuly. """ create_args = {} if args is not None: create_args.update(args) if isinstance(origin_resource, list): # mutidatasets create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries, key="origin_datasets") else: # dataset from source resource_type = get_resource_type(origin_resource) if resource_type == SOURCE_PATH: source_id = get_source_id(origin_resource) if source_id: check_resource(source_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) create_args.update({"source": source_id}) # dataset from dataset elif resource_type == DATASET_PATH: create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries, key="origin_dataset") # dataset from cluster and centroid elif resource_type == CLUSTER_PATH: cluster_id = get_cluster_id(origin_resource) cluster = check_resource(cluster_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) if not 'centroid' in create_args: try: centroid = cluster['object'][ 'cluster_datasets_ids'].keys()[0] create_args.update({'centroid': centroid}) except KeyError: raise KeyError("Failed to generate the dataset. A " "centroid id is needed in the args " "argument to generate a dataset from " "a cluster.") create_args.update({'cluster': cluster_id}) else: raise Exception("A source, dataset, list of dataset ids" " or cluster id plus centroid id are needed" " to create a" " dataset. %s found." % resource_type) body = json.dumps(create_args) return self._create(self.dataset_url, body)
def create_dataset(self, origin_resource, args=None, wait_time=3, retries=10): """Creates a remote dataset. Uses a remote resource to create a new dataset using the arguments in `args`. The allowed remote resources can be: - source - dataset - list of datasets - cluster In the case of using cluster id as origin_resources, a centroid must also be provided in the args argument. The first centroid is used otherwise. If `wait_time` is higher than 0 then the dataset creation request is not sent until the `source` has been created successfuly. """ create_args = {} if args is not None: create_args.update(args) if isinstance(origin_resource, list): # mutidatasets create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries, key="origin_datasets") else: # dataset from source resource_type = get_resource_type(origin_resource) if resource_type == SOURCE_PATH: source_id = get_source_id(origin_resource) if source_id: check_resource(source_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) create_args.update({ "source": source_id}) # dataset from dataset elif resource_type == DATASET_PATH: create_args = self._set_create_from_datasets_args( origin_resource, args=create_args, wait_time=wait_time, retries=retries, key="origin_dataset") # dataset from cluster and centroid elif resource_type == CLUSTER_PATH: cluster_id = get_cluster_id(origin_resource) cluster = check_resource(cluster_id, query_string=TINY_RESOURCE, wait_time=wait_time, retries=retries, raise_on_error=True, api=self) if 'centroid' not in create_args: try: centroid = cluster['object'][ 'cluster_datasets_ids'].keys()[0] create_args.update({'centroid': centroid}) except KeyError: raise KeyError("Failed to generate the dataset. A " "centroid id is needed in the args " "argument to generate a dataset from " "a cluster.") create_args.update({'cluster': cluster_id}) else: raise Exception("A source, dataset, list of dataset ids" " or cluster id plus centroid id are needed" " to create a" " dataset. %s found." % resource_type) body = json.dumps(create_args) return self._create(self.dataset_url, body)