Exemple #1
0
    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
Exemple #2
0
 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
Exemple #3
0
 def get_instances(self, request, project_id, cluster_id, kind=2):
     """拉取项目下的所有Instance"""
     if kind == 2:
         client = MesosClient(request.user.token.access_token, project_id, cluster_id, None)
         resp = client.get_mesos_app_instances()
     else:
         resp = DEFAULT_RESPONSE
     if resp.get("code") != ErrorCode.NoError:
         return False, APIResponse({"code": resp.get("code", DEFAULT_ERROR_CODE), "message": resp.get("message")})
     return True, resp["data"]
Exemple #4
0
def get_application(namespace,
                    names,
                    access_token=None,
                    project_id=None,
                    cluster_id=None,
                    client=None):
    if not client:
        client = MesosClient(access_token, project_id, cluster_id, None)
    resp = client.get_mesos_app_instances(app_name=names,
                                          namespace=namespace,
                                          field="data.status,data.message")
    if resp.get("code") != ErrorCode.NoError and "not exist" not in resp.get(
            "message"):
        raise error_codes.APIError(
            _("查询Mesos application异常,{}").format(resp.get("message")))
    return resp["data"]