def get_mesos_application_deploy_status(self, request, project_id, cluster_id, instance_name, category="application", field=None, namespace=None): """查询mesos下application和deployment的状态 """ client = MesosClient(request.user.token.access_token, project_id, cluster_id, None) if category == "application": resp = client.get_mesos_app_instances( app_name=instance_name, field=field or "data.metadata.name,data.metadata.namespace,data.status,data.message", # noqa namespace=namespace, ) else: resp = client.get_deployment( name=instance_name, field=field or "data.metadata.name,data.metadata.namespace,data.status,data.message", # noqa namespace=namespace, ) if resp.get("code") != ErrorCode.NoError: return False, APIResponse({ "code": resp.get("code") or DEFAULT_ERROR_CODE, "message": resp.get("message") }) return True, resp
def _get_resources(self, request, project_id, namespace_id): access_token = request.user.token.access_token # 查询namespace ns_info = get_namespace_by_id(access_token, project_id, namespace_id) client = MesosClient(access_token, project_id, ns_info["cluster_id"], env=None) # 根据类型查询资源,如果有接口调用失败,先忽略 res_names = {} ns_name = ns_info["name"] # 请求bcs api,获取数据 deployment_resp = client.get_deployment(namespace=ns_name) application_resp = client.get_mesos_app_instances(namespace=ns_name) configmap_resp = client.get_configmaps(params={"namespace": ns_name}) service_resp = client.get_services(params={"namespace": ns_name}) secret_resp = client.get_secrets(params={"namespace": ns_name}) res_data = { MesosResourceName.deployment.value: deployment_resp["data"], MesosResourceName.application.value: application_resp["data"], MesosResourceName.configmap.value: configmap_resp["data"], MesosResourceName.service.value: service_resp["data"], MesosResourceName.secret.value: secret_resp["data"], } res_names = self._compose_res_names(res_data) return res_names
def get_deployment(namespace, name, access_token=None, project_id=None, cluster_id=None, client=None): if not client: client = MesosClient(access_token, project_id, cluster_id, None) field = [ "data.application", "data.status", "data.application_ext", "data.message" ] resp = client.get_deployment(name=name, namespace=namespace, field=",".join(field)) if resp.get("code") != ErrorCode.NoError and "not exist" not in resp.get( "message"): raise error_codes.APIError( _("查询Mesos deployment异常,{}").format(resp.get("message"))) return resp["data"]