Ejemplo n.º 1
0
    def has_bcs_service(self, access_token, project_id, request_namespace):
        """判断是否开启容器服务
        开启后就不能关闭,所以缓存很久,默认30天
        """
        cache_key = f'BK_DEVOPS_BCS:HAS_BCS_SERVICE:{project_id}'
        project = region.get(cache_key, expiration_time=3600 * 24 * 30)

        if not project or not isinstance(project, FancyDict):
            result = paas_cc.get_project(access_token, project_id)
            project = result.get('data') or {}
            project = FancyDict(project)

            if request_namespace in SKIP_REQUEST_NAMESPACE:
                # 如果是SKIP_REQUEST_NAMESPACE,有更新接口,不判断kind
                if project.get('cc_app_id') != 0 and project.get(
                        'kind') in ClusterType:
                    region.set(cache_key, project)

            elif project.get('kind') in ClusterType:
                # 如果已经开启容器服务,判断是否cc_app_id再缓存
                if project.get('cc_app_id') != 0:
                    region.set(cache_key, project)
            else:
                # 其他抛出没有开启容器服务
                raise error_codes.NoBCSService()

        return project
Ejemplo n.º 2
0
    def has_bcs_service(self, access_token, project_id, request_namespace):
        """判断是否开启容器服务
        开启后就不能关闭,所以缓存很久,默认30天
        """
        cache_key = f"BK_DEVOPS_BCS:HAS_BCS_SERVICE:{project_id}"
        project = region.get(cache_key, expiration_time=3600 * 24 * 30)

        if not project or not isinstance(project, FancyDict):
            result = paas_cc.get_project(access_token, project_id)
            project = result.get("data") or {}

            # coes: container orchestration engines
            project['coes'] = project['kind']
            try:
                from backend.container_service.projects.utils import get_project_kind

                # k8s类型包含kind为1(bcs k8s)或其它属于k8s的编排引擎
                project['kind'] = get_project_kind(project['kind'])
            except ImportError:
                pass

            project = FancyDict(project)

            if request_namespace in SKIP_REQUEST_NAMESPACE:
                # 如果是SKIP_REQUEST_NAMESPACE,有更新接口,不判断kind
                if project.get("cc_app_id") != 0:
                    region.set(cache_key, project)

            elif project.get("cc_app_id") != 0:
                region.set(cache_key, project)
            else:
                # 其他抛出没有开启容器服务
                raise error_codes.NoBCSService()

        return project