def update_cluster_app(self, cluster_id, app_id, **kwargs): """Updated app configuration""" if 'method' in kwargs: return self.http.patch(url_maker("/clusters", cluster_id, "apps", app_id), data=kwargs) return self.http.put(url_maker("/clusters", cluster_id, "apps", app_id), data=kwargs)
def update_cluster_app(self, cluster_id, app_id, http_method, **kwargs): """Updated app configuration""" if not http_method or http_method.lower() == 'patch': resp = self.http.patch(url_maker("/clusters", cluster_id, "apps", app_id), data=kwargs) else: resp = self.http.put(url_maker("/clusters", cluster_id, "apps", app_id), data=kwargs) return self.process_data(resp)
def get_app_nodes(self, cluster_id, app_id): """List all app instances.""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_id, "appnodes")) return self.process_data(resp)
def get_app_events(self, cluster_id, app_id): """List all app events""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_id, "events")) return self.process_data(resp)
def get_app_versions(self, cluster_id, app_id): """List all history versions for app""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_id, "versions")) return self.process_data(resp)
def get_cluster_apps(self, cluster_id, **kwargs): """List all apps for speicified cluster""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps"), **kwargs) return self.process_data(resp)
def get_cluster_app(self, cluster_id, app_id): """List specified app information under specified cluster""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_id)) return self.process_data(resp)
def get_app_live_metrics(self, cluster_id, app_alias): """List all living metrics""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_alias, "metrics")) return self.process_data(resp)
def get_node_metrics(self, cluster_id, node_id): """Retrive node metrics""" resp = self.http.get(url_maker("/clusters", cluster_id, "nodes", node_id)) return self.process_data(resp)
def get_app_requests(self, cluster_id, app_alias): """List app's requests for per second""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_alias, "session")) return self.process_data(resp)
def update_project(self, project_id, **kwargs): """Update specified project information.""" schema = { "type": "object", "properties": { "uid": { "type": "number" }, "active": { "type": "boolean" }, "period": { "type": "number" }, "triggerType": { "type": "number" }, }, "required": ["uid", "active", "period", "triggerType"] } try: validate(kwargs, schema) except (SchemaError, ValidationError) as e: return e return self.http.put(url_maker("/projects", project_id), data=kwargs)
def get_app_versions(self, cluster_id, app_id): """List all history versions for app""" resp = self.http.get( url_maker("/clusters", cluster_id, "apps", app_id, "versions")) return self.process_data(resp)
def delete_app_version(self, cluster_id, app_id, version_id): """Delete app version""" resp = self.http.delete( url_maker("/clusters", cluster_id, "apps", app_id, "versions", version_id)) return self.process_data(resp)
def get_app_history_metrics(self, cluster_id, app_alias): """List app history metrics""" resp = self.http.get(url_maker("/clusters", cluster_id, "apps", app_alias, "monitor")) return self.process_data(resp)
def get_cluster_node(self, cluster_id, node_id): """List node information""" resp = self.http.get(url_maker("/clusters", cluster_id, "nodes", node_id)) return self.process_data(resp)
def get_app_events(self, cluster_id, app_id): """List all app events""" resp = self.http.get( url_maker("/clusters", cluster_id, "apps", app_id, "events")) return self.process_data(resp)
def get_app_scale_log(self, cluster_id, app_id, strategy_id): """get the auto scale history when provided a strategy id""" resp = self.http.get( url_maker("/clusters", cluster_id, "apps", app_id, "scale", strategy_id)) return self.process_data(resp)
def get_app_nodes(self, cluster_id, app_id): """List all app instances.""" resp = self.http.get( url_maker("/clusters", cluster_id, "apps", app_id, "appnodes")) return self.process_data(resp)
def get_build_logs(self, project_id, build_num, job_id): """List all build logs for project""" resp = self.http.get(url_maker("/projects", project_id, "builds", build_num, job_id, "logs")) return self.process_data(resp)
def get_build_stream(self, project_id, build_num, job_id): """List all build text stream for project""" resp = self.http.get(url_maker("/projects", project_id, "builds", build_num, job_id, "stream")) return self.process_data(resp)
def get_node_identifier(self, cluster_id): """Generated new node identifier. this identifier will be used for add new node.""" resp = self.http.get(url_maker("/clusters", cluster_id, "new_node_identifier")) return self.process_data(resp)
def get_build_stream(self, project_id, build_num, job_id): """List all build text stream for project""" resp = self.http.get( url_maker("/projects", project_id, "builds", build_num, job_id, "stream")) return self.process_data(resp)
def get_build_logs(self, project_id, build_num, job_id): """List all build logs for project""" resp = self.http.get( url_maker("/projects", project_id, "builds", build_num, job_id, "logs")) return self.process_data(resp)
def build_project(self, project_id, uid, image_name): """Build project.""" data = { "uid": uid, "imageName": image_name, } resp = self.http.post(url_maker("/projects", project_id, "hook"), data=data) return self.process_data(resp)
def update_project(self, project_id, **kwargs): """Update specified project information.""" schema = { "type": "object", "properties": { "uid": {"type": "number"}, "active": {"type": "boolean"}, "period": {"type": "number"}, "triggerType": {"type": "number"}, }, "required": ["uid", "active", "period", "triggerType"] } try: validate(kwargs, schema) except (SchemaError, ValidationError): raise webob.exc.HTTPBadRequest(explanation="Bad Paramaters") return self.http.put(url_maker("/projects", project_id), data=kwargs)
def delete_cluster_app(self, cluster_id, app_id): """Delete specified app under specified cluster""" resp = self.http.delete( url_maker("/clusters", cluster_id, "apps", app_id)) return self.process_data(resp)
def update_cluster(self, cluster_id, **kwargs): """Updated cluster information.""" return self.http.patch(url_maker("/clusters", cluster_id), data=kwargs)
def get_cluster(self, cluster_id): """List single cluster's information""" resp = self.http.get(url_maker("/clusters", cluster_id)) return self.process_data(resp)
def create_node(self, cluster_id, **kwargs): """Add new node for cluster identified by `cluster_id`""" return self.http.post(url_maker("/clusters", cluster_id, "nodes"), data=kwargs)
def get_cluster_resource_metrics(self, cluster_id): """List cluster metrics""" resp = self.http.get(url_maker("/clusters", cluster_id, "metrics")) return self.process_data(resp)
def delete_nodes(self, cluster_id, *args): """Delete nodes for cluster identified by `cluster_id`""" return self.http.delete(url_maker("/clusters", cluster_id, "node"), data=args)
def delete_cluster(self, cluster_id): """Delete cluster""" return self.http.delete(url_maker("/clusters", cluster_id))
def update_cluster_node(self, cluster_id, node_id, **kwargs): """Updated node information""" return self.http.patch(url_maker("/clusters", cluster_id, "nodes", node_id), **kwargs)
def get_project(self, project_id): """show project details.""" resp = self.http.get(url_maker("/projects", project_id)) return self.process_data(resp)
def get_cluster_ports(self, cluster_id): """list the inner ports and outer ports for a specific cluster""" resp = self.http.get(url_maker("/clusters", cluster_id, "ports")) return self.process_data(resp)
def update_node_service(self, cluster_id, node_id, service_name, **kwargs): """Reset or restart service on node""" return self.http.patch(url_maker("/clusters", cluster_id, "nodes", node_id, "services", service_name), **kwargs)
def get_user_scale_log(self): """get all the auto scale history owned by this loggin user """ resp = self.http.get(url_maker("/scales")) return self.process_data(resp)
def create_cluster_apps(self, cluster_id, **kwargs): """Create app under speicified cluster :param cluster_id: Cluster identifier :param data: Dictionary to send in the body of the request. """ # NOTE(mgniu): `deep copy or shallow copy? i'm confused. data = copy.deepcopy(kwargs) schema = { "type": "object", "properties": { "name": { "type": "string" }, "instances": { "type": "number" }, "volumes": { "type": "array", "items": { "type": "object", "properties": { "hostPath": { "type": "string" }, "containerPath": { "type": "string" }, }, }, }, "portMappings": { "type": "array", "items": { "type": "object", "properties": { "appPort": { "type": "number" }, "protocol": { "type": "number" }, "isUri": { "type": "number" }, "type": { "type": "number" }, "mapPort": { "type": "number" }, "uri": { "type": "string" }, }, }, }, "cpus": { "type": "number" }, "mem": { "type": "number" }, "cmd": { "type": "string" }, "envs": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "string" }, }, }, }, "imageName": { "type": "string" }, "imageVersion": { "type": "string" }, "forceImage": { "type": "boolean" }, "network": { "type": "string" }, "constraints": { "type": "array", "items": { "type": "array", "items": { "type": "string" }, }, }, "parameters": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "string" }, }, }, } } } try: validate(data, schema) except (SchemaError, ValidationError) as e: return e resp = self.http.post(url_maker("/clusters", cluster_id, "apps"), data=data) return self.process_data(resp)
def delete_project(self, project_id): """Delete specified project.""" return self.http.delete(url_maker("/projects", project_id))
def get_project_builds(self, project_id): """list all builds for project""" resp = self.http.get(url_maker("/projects", project_id, "builds")) return self.process_data(resp)
def delete_app_version(self, cluster_id, app_id, version_id): """Delete app version""" return self.http.delete(url_maker("/clusters", cluster_id, "apps", app_id, "versions", version_id))
def delete_cluster_app(self, cluster_id, app_id): """Delete speicified app under specified cluster""" return self.http.delete(url_maker("/clusters", cluster_id, "apps", app_id))
def create_cluster_apps(self, cluster_id, **kwargs): """Create app under speicified cluster :param cluster_id: Cluster identifier :param data: Dictionary to send in the body of the request. """ # NOTE(mgniu): `deep copy or shallow copy? i'm confused. data = copy.deepcopy(kwargs) schema = { "type": "object", "properties": { "name": {"type": "string"}, "instances": {"type": "number"}, "volumes": { "type": "array", "items": { "type": "object", "properties": { "hostPath": {"type": "string"}, "containerPath": {"type": "string"}, }, }, }, "portMappings": { "type": "array", "items": { "type": "object", "properties": { "appPort": {"type": "number"}, "protocol": {"type": "number"}, "isUri": {"type": "number"}, "type": {"type": "number"}, "mapPort": {"type": "number"}, "uri": {"type": "string"}, }, }, }, "cpus": {"type": "number"}, "mem": {"type": "number"}, "cmd": {"type": "string"}, "envs": { "type": "array", "items": { "type": "object", "properties": { "key": {"type": "string"}, "value": {"type": "string"}, }, }, }, "imageName": {"type": "string"}, "imageVersion": {"type": "string"}, "forceImage": {"type": "boolean"}, "network": {"type": "string"}, "constraints": { "type": "array", "items": { "type": "array", "items": {"type": "string"}, }, }, "parameters": { "type": "array", "items": { "type": "object", "properties": { "key": {"type": "string"}, "value": {"type": "string"}, }, }, } } } try: validate(data, schema) except (SchemaError, ValidationError): raise webob.exc.HTTPBadRequest(explanation="Bad Paramaters") resp = self.http.post(url_maker("/clusters", cluster_id, "apps"), data=data) return self.process_data(resp)