Example #1
0
def update_cluster_status(log):
    if log.oper_type == models.ClusterOperType.ClusterRemove:
        if log.status == models.CommonStatus.Normal:
            status = models.CommonStatus.Removed
        else:
            status = log.status
    else:
        status = log.status
    for i in range(2):
        token_dict = ssm.get_client_access_token()
        resp = paas_cc.update_cluster(token_dict["access_token"], log.project_id, log.cluster_id, {"status": status})
        if resp.get("code") != ErrorCode.NoError:
            logger.error("Update cluster[%s] status failed, detail: %s" % (log.cluster_id, resp.get("message")))
        else:
            logger.info("Update cluster[%s] success" % log.cluster_id)
            break
    if log.oper_type in [models.ClusterOperType.ClusterInstall, models.NodeOperType.NodeInstall]:
        return
    if log.status not in [models.CommonStatus.Normal]:
        return
    for i in range(2):
        # 删除集群及master
        token_dict = ssm.get_client_access_token()
        resp = paas_cc.delete_cluster(token_dict["access_token"], log.project_id, log.cluster_id)
        if resp.get("code") != ErrorCode.NoError:
            logger.error("Delete cluster[%s] failed, detail: %s" % (log.cluster_id, resp.get("message")))
        else:
            logger.info("Delete cluster[%s] success" % log.cluster_id)
            break
    # 删除iam集群
    delete_iam_cluster_resource(log)
Example #2
0
def update_node_status(log):
    params = json.loads(log.params)
    ip_list = list(params.get("node_info", {}).keys())
    if log.oper_type == models.NodeOperType.NodeRemove:
        if log.status == models.CommonStatus.Normal:
            status = models.CommonStatus.Removed
        else:
            status = log.status
    else:
        status = log.status
    for i in range(2):
        token_dict = ssm.get_client_access_token()
        resp = paas_cc.update_node_list(
            token_dict["access_token"],
            log.project_id,
            log.cluster_id,
            [{
                "inner_ip": ip,
                "status": status
            } for ip in ip_list],
        )
        if resp.get("code") != ErrorCode.NoError:
            logger.error("Update node[%s] status failed, detail: %s" %
                         (json.dumps(ip_list), resp.get("message")))
        else:
            logger.info("Update node[%s] status success" % json.dumps(ip_list))
            break
Example #3
0
    def initial(self, request, *args, **kwargs):
        request.user.token = FancyDict(access_token=get_client_access_token().get("access_token"))
        if self.project_field_name in kwargs:
            return super().initial(request, *args, **kwargs)

        for field_name in self.available_project_field_names:
            self.refine_project_field(request.user.token.access_token, field_name, kwargs)

        return super().initial(request, *args, **kwargs)
Example #4
0
 def list_instance(self, filter, page, **options):
     access_token = ssm.get_client_access_token()["access_token"]
     projects = filter_projects(access_token)
     count = len(projects)
     projects = projects[page.slice_from:page.slice_to]  # noqa
     results = [{
         "id": p["project_id"],
         "display_name": p["project_name"]
     } for p in projects]
     return ListResult(results=results, count=count)
Example #5
0
 def fetch_instance_info(self, filter, **options):
     access_token = ssm.get_client_access_token()["access_token"]
     query_params = None
     if filter.ids:
         query_params = {"project_ids": ",".join(filter.ids)}
     projects = filter_projects(access_token, query_params)
     results = [{
         "id": p["project_id"],
         "display_name": p["project_name"]
     } for p in projects]
     return ListResult(results=results, count=len(results))
Example #6
0
def _polling_once(model, log):
    token_dict = ssm.get_client_access_token()
    params = json.loads(log.params)
    resp = ops.get_task_result(
        token_dict["access_token"], log.project_id, log.task_id, params.get("cc_app_id"), params.get("username")
    )
    if resp.get("code") != ErrorCode.NoError:
        logger.error("query task failed, detail: %s" % resp.get("message"))
    data = resp.get("data") or {}
    status = data.get("status", "UNKNOWN")
    step_logs = data.get("steps") or []
    logs = []
    running_logs = []
    failure_logs = []
    for index, val in enumerate(step_logs, 1):
        local_status = val.get("status")
        local_name = "- %s" % (val.get("name", "").capitalize())
        local_name_status = {"state": local_status, "name": local_name}
        if local_status in TASK_SUCCESS_STATUS:
            logs.append(local_name_status)
        elif local_status in TASK_FAILED_STATUS:
            failure_logs.append(local_name_status)
        else:
            running_logs.append(local_name_status)
    logs.extend(running_logs)
    logs.extend(failure_logs)

    if status in TASK_FAILE_SUCCESS_STATUS:
        if status in TASK_FAILED_STATUS:
            log.status = log_status(log)
        else:
            log.status = models.CommonStatus.Normal
        log.is_finished = True
        log.is_polling = False
    if logs:
        log.log = json.dumps({"state": status, "node_tasks": logs})
    log.save()
    return log
Example #7
0
 def initial(self, request, *args, **kwargs):
     request.user.token = FancyDict(
         access_token=get_client_access_token().get("access_token"))
     super().initial(request, *args, **kwargs)
Example #8
0
def get_access_token():
    return get_client_access_token()
Example #9
0
def get_system_token():
    """获取非用户 access_token"""
    return ssm.get_client_access_token()["access_token"]