Ejemplo n.º 1
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
Ejemplo n.º 2
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
Ejemplo n.º 3
0
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"]