Ejemplo n.º 1
0
 def record_rollback_app(self, username, release_id, access_token):
     # operation record
     extra = json.dumps(
         dict(
             access_token=access_token,
             release_id=release_id,
         ))
     logger_client = client.UserActivityLogClient(
         project_id=self.project_id,
         user=username,
         resource_type="helm_app",
         activity_type="rollback",
         resource=self.name,
         resource_id=self.id,
         extra=extra,
         description=
         "Helm App[{app_name}:{app_id}] 回滚, 集群[{cluster_id}], 命名空间[{namespace}]"
         .format(
             app_id=self.id,
             app_name=self.name,
             namespace=self.namespace,
             cluster_id=self.cluster_id,
         ))
     logger_client.log(activity_status="busy")
     return logger_client
Ejemplo n.º 2
0
    def update(self, request, project_id):
        """更新项目信息
        """
        if not self.can_edit(request, project_id):
            raise error_codes.CheckFailed("请确认有项目管理员权限,并且项目下无集群", replace=True)
        data = self.validate_update_project_data(request)
        access_token = request.user.token.access_token
        data['updator'] = request.user.username

        # 添加操作日志
        ual_client = client.UserActivityLogClient(
            project_id=project_id,
            user=request.user.username,
            resource_type='project',
            resource=request.project.project_name,
            resource_id=project_id,
            description="更新项目: %s" % request.project.project_name,
        )
        project = paas_cc.update_project_new(access_token, project_id, data)
        if project.get('code') != 0:
            ual_client.log_modify(activity_status='failed')
            raise error_codes.APIError(project.get('message', "更新项目成功"))
        ual_client.log_modify(activity_status='succeed')
        project_data = project.get('data')
        if project_data:
            project_data['created_at'], project_data['updated_at'] = self.normalize_create_update_time(
                project_data['created_at'], project_data['updated_at'])

        # 主动令缓存失效
        self.invalid_project_cache(project_id)
        # 创建或更新依赖服务,包含data、template、helm
        update_bcs_service_for_project(request, project_id, data)

        return Response(project_data)
Ejemplo n.º 3
0
 def record_upgrade_app(self, chart_version_id, answers, customs, updator, access_token,
                        valuefile=None, sys_variables=None):
     # operation record
     extra = json.dumps(dict(
         access_token=access_token,
         chart_version_id=chart_version_id,
         answers=answers,
         customs=customs,
         valuefile=valuefile,
         updator=updator,
         sys_variables=sys_variables,
     ))
     logger_client = client.UserActivityLogClient(
         project_id=self.project_id,
         user=updator,
         resource_type="helm_app",
         activity_type="modify",
         resource=self.name,
         resource_id=self.id,
         extra=extra,
         description=u"Helm App[{app_name}:{app_id}] 升级, 集群[{cluster_id}], 命名空间[{namespace}]".format(
             app_id=self.id,
             app_name=self.name,
             namespace=self.namespace,
             cluster_id=self.cluster_id,
         )
     )
     logger_client.log(activity_status="busy")
     return logger_client
Ejemplo n.º 4
0
 def setUp(self):
     self.project_id = "000"
     self.user = "******"
     self.client = client.UserActivityLogClient(
         project_id=self.project_id,
         user=self.user,
         resource_type="testcase",
     )
Ejemplo n.º 5
0
 def record_initialize_app(self,
                           access_token,
                           project_id,
                           cluster_id,
                           namespace_id,
                           namespace,
                           chart_version,
                           answers,
                           customs,
                           creator,
                           updator,
                           valuefile=None,
                           name=None,
                           unique_ns=0,
                           sys_variables=None,
                           valuefile_name=DEFAULT_VALUES_FILE_NAME,
                           **kwargs):
     # operation record
     extra = json.dumps(
         dict(
             access_token=access_token,
             name=name,
             project_id=project_id,
             cluster_id=cluster_id,
             namespace_id=namespace_id,
             namespace=namespace,
             chart_version=chart_version.id,
             answers=answers,
             customs=customs,
             valuefile=valuefile,
             creator=creator,
             updator=updator,
             unique_ns=unique_ns,
             sys_variables=sys_variables,
             valuefile_name=valuefile_name,
             cmd_flags=kwargs.get("cmd_flags"),
         ))
     desc = "create Helm App, chart [{chart_name}:{template_id}], cluster[{cluster_id}], namespace[{namespace}]"
     desc = desc.format(
         template_id=chart_version.id,
         chart_name=chart_version.chart.name,
         namespace=namespace,
         cluster_id=cluster_id,
     )
     logger_client = client.UserActivityLogClient(
         project_id=project_id,
         user=creator,
         activity_type="add",
         resource_type="helm_app",
         resource=chart_version.name,
         resource_id=chart_version.id,
         extra=extra,
         description=desc,
     )
     logger_client.log(activity_status="busy")
     return logger_client
Ejemplo n.º 6
0
    def update(self, request, project_id):
        """更新项目信息
        """
        if not self.can_edit(request, project_id):
            raise error_codes.CheckFailed("请确认有项目管理员权限,并且项目下无集群", replace=True)
        data = self.validate_update_project_data(request)
        access_token = request.user.token.access_token
        data['updator'] = request.user.username
        # 编辑之前项目绑定的业务和调度类型,用户后面判断是否进行相应的操作
        pre_cc_app_id = request.project.cc_app_id
        pre_kind = request.project.kind

        # 添加操作日志
        ual_client = client.UserActivityLogClient(
            project_id=project_id,
            user=request.user.username,
            resource_type='project',
            resource=request.project.project_name,
            resource_id=project_id,
            description="更新项目: %s" % request.project.project_name,
        )
        project = paas_cc.update_project_new(access_token, project_id, data)
        if project.get('code') != 0:
            ual_client.log_modify(activity_status='failed')
            raise error_codes.APIError(project.get('message', "更新项目成功"))
        ual_client.log_modify(activity_status='succeed')
        project_data = project.get('data')
        if project_data:
            project_data['created_at'], project_data[
                'updated_at'] = self.normalize_create_update_time(
                    project_data['created_at'], project_data['updated_at'])

        # 主动令缓存失效
        self.invalid_project_cache(project_id)
        # 触发后台任务
        self.backend_tasks(request, project_id, data, pre_cc_app_id, pre_kind)

        return Response(project_data)
Ejemplo n.º 7
0
    def update(self, request, project_id):
        """更新项目信息
        """
        if not self.can_edit(request, project_id):
            raise error_codes.CheckFailed(_("请确认有项目管理员权限,并且项目下无集群"))
        data = self.validate_update_project_data(request)
        access_token = request.user.token.access_token
        data["updator"] = request.user.username

        # 添加操作日志
        ual_client = client.UserActivityLogClient(
            project_id=project_id,
            user=request.user.username,
            resource_type="project",
            resource=request.project.project_name,
            resource_id=project_id,
            description="{}: {}".format(_("更新项目"),
                                        request.project.project_name),
        )
        resp = paas_cc.update_project_new(access_token, project_id, data)
        if resp.get("code") != ErrorCode.NoError:
            ual_client.log_modify(activity_status="failed")
            raise error_codes.APIError(
                _("更新项目信息失败,错误详情: {}").format(resp.get("message")))
        ual_client.log_modify(activity_status="succeed")
        project_data = resp.get("data")
        if project_data:
            project_data["created_at"], project_data[
                "updated_at"] = self.normalize_create_update_time(
                    project_data["created_at"], project_data["updated_at"])

        # 主动令缓存失效
        self.invalid_project_cache(project_id)
        # 创建或更新依赖服务,包含data、template、helm
        update_bcs_service_for_project(request, project_id, data)

        return Response(project_data)
Ejemplo n.º 8
0
 def record_initialize_app(self, access_token, project_id, cluster_id, namespace_id, namespace,
                           chart_version, answers, customs, creator, updator, valuefile=None,
                           name=None, unique_ns=0, sys_variables=None):
     # operation record
     extra = json.dumps(dict(
         access_token=access_token,
         name=name,
         project_id=project_id,
         cluster_id=cluster_id,
         namespace_id=namespace_id,
         namespace=namespace,
         chart_version=chart_version.id,
         answers=answers,
         customs=customs,
         valuefile=valuefile,
         creator=creator,
         updator=updator,
         unique_ns=unique_ns,
         sys_variables=sys_variables,
     ))
     logger_client = client.UserActivityLogClient(
         project_id=project_id,
         user=creator,
         activity_type="add",
         resource_type="helm_app",
         resource=chart_version.name,
         resource_id=chart_version.id,
         extra=extra,
         description="创建Helm App, 实例化模板集[{chart_name}:{template_id}], 集群[{cluster_id}], 命名空间[{namespace}]".format(
             template_id=chart_version.id,
             chart_name=chart_version.chart.name,
             namespace=namespace,
             cluster_id=cluster_id,
         )
     )
     logger_client.log(activity_status="busy")
     return logger_client