コード例 #1
0
ファイル: cluster.py プロジェクト: pythonton/bk-bcs-saas
    def cluster_info(self, request, project_id, cluster_id):
        # can view cluster
        self.can_view_cluster(request, project_id, cluster_id)
        cluster = self.get_cluster(request, project_id, cluster_id)
        cluster["cluster_name"] = cluster.get("name")
        cluster["created_at"] = normalize_datetime(cluster["created_at"])
        cluster["updated_at"] = normalize_datetime(cluster["updated_at"])
        status = cluster.get("status", "normal")
        cluster["chinese_status_name"] = ClusterStatusName[status].value
        # get area info
        area_info = self.get_area(request, cluster.get("area_id"))
        cluster["area_name"] = _(area_info.get("chinese_name"))
        # get master count
        cluster["master_count"] = self.get_master_count(request, project_id, cluster_id)
        # get node count
        cluster["node_count"] = self.get_node_count(request, project_id, cluster_id)
        if request.project.kind == app_constants.MESOS_KIND:
            # mesos单位是MB,需要转换为GB
            total_mem = normalize_metric(cluster["total_mem"] / 1024)
        else:
            total_mem = normalize_metric(cluster["total_mem"])
        cluster["total_mem"] = total_mem

        # 获取集群调度引擎
        coes = cluster["type"]
        # 补充tke和bcs k8s相关配置
        if coes == ClusterCOES.TKE.value:
            cluster.update(self.get_tke_cluster_config(request, project_id, cluster_id))
        elif coes == ClusterCOES.BCS_K8S.value:
            k8s_client = bcs.k8s.K8SClient(request.user.token.access_token, project_id, cluster_id, None)
            cluster["version"] = k8s_client.version

        return response.Response(cluster)
コード例 #2
0
ファイル: cluster.py プロジェクト: MiloTsin2013/bk-bcs-saas
    def cluster_info(self, request, project_id, cluster_id):
        # can view cluster
        self.can_view_cluster(request, project_id, cluster_id)
        cluster = self.get_cluster(request, project_id, cluster_id)
        cluster['cluster_name'] = cluster.get('name')
        cluster['created_at'] = normalize_datetime(cluster['created_at'])
        cluster['updated_at'] = normalize_datetime(cluster['updated_at'])
        status = cluster.get('status', 'normal')
        cluster['chinese_status_name'] = ClusterStatusName[status].value
        # get area info
        area_info = self.get_area(request, cluster.get('area_id'))
        cluster['area_name'] = _(area_info.get('chinese_name'))
        # get master count
        cluster['master_count'] = self.get_master_count(
            request, project_id, cluster_id)
        # get node count
        cluster['node_count'] = self.get_node_count(request, project_id,
                                                    cluster_id)
        if request.project.kind == app_constants.MESOS_KIND:
            # mesos单位是MB,需要转换为GB
            total_mem = normalize_metric(cluster['total_mem'] / 1024)
        else:
            total_mem = normalize_metric(cluster['total_mem'])
        cluster['total_mem'] = total_mem

        return response.Response(cluster)
コード例 #3
0
    def cluster_info(self, request, project_id, cluster_id):
        # can view cluster
        self.can_view_cluster(request, project_id, cluster_id)
        cluster = self.get_cluster(request, project_id, cluster_id)
        cluster["cluster_name"] = cluster.get("name")
        cluster["created_at"] = normalize_datetime(cluster["created_at"])
        cluster["updated_at"] = normalize_datetime(cluster["updated_at"])
        status = cluster.get("status", "normal")
        cluster["chinese_status_name"] = ClusterStatusName[status].value
        # get area info
        area_info = self.get_area(request, cluster.get("area_id"))
        cluster["area_name"] = _(area_info.get("chinese_name"))
        # get master count
        cluster["master_count"] = self.get_master_count(
            request, project_id, cluster_id)
        # get node count
        cluster["node_count"] = self.get_node_count(request, project_id,
                                                    cluster_id)
        if request.project.kind == app_constants.MESOS_KIND:
            # mesos单位是MB,需要转换为GB
            total_mem = normalize_metric(cluster["total_mem"] / 1024)
        else:
            total_mem = normalize_metric(cluster["total_mem"])
        cluster["total_mem"] = total_mem

        return response.Response(cluster)
コード例 #4
0
    def cluster_info(self, request, project_id, cluster_id):
        # can view cluster
        self.can_view_cluster(request, project_id, cluster_id)
        cluster = self.get_cluster(request, project_id, cluster_id)
        cluster["cluster_name"] = cluster.get("name")
        cluster["created_at"] = normalize_datetime(cluster["created_at"])
        cluster["updated_at"] = normalize_datetime(cluster["updated_at"])
        status = cluster.get("status", "normal")
        cluster["chinese_status_name"] = ClusterStatusName[status].value
        # get area info
        area_info = self.get_area(request, cluster.get("area_id"))
        cluster["area_name"] = _(area_info.get("chinese_name"))
        # get master count
        cluster["master_count"] = self.get_master_count(request, project_id, cluster_id)
        # get node count
        cluster["node_count"] = self.get_node_count(request, project_id, cluster_id)
        total_mem = normalize_metric(cluster["total_mem"])
        cluster["total_mem"] = total_mem

        # 获取集群调度引擎
        coes = cluster["type"]
        # 补充tke和bcs k8s相关配置
        if coes == ClusterCOES.TKE.value:
            cluster.update(self.get_tke_cluster_config(request, project_id, cluster_id))

        cluster_version = self.query_cluster_version(request.user.token.access_token, project_id, cluster_id)
        # 通过集群查询集群版本,如果查询集群异常,则返回集群快照中的数据
        if cluster_version:
            cluster["version"] = cluster_version

        return response.Response(cluster)
コード例 #5
0
 def render_resource_for_preload_content(self, resource_type, resource,
                                         resource_name, namespace):
     # 兼容逻辑,防止view层出错
     if not resource.metadata.annotations:
         resource.metadata.annotations = {}
     if not resource.metadata.labels:
         resource.metadata.labels = {}
     create_time = resource.metadata.creation_timestamp or ""
     if create_time:
         create_time = timezone.localtime(create_time).strftime(
             "%Y-%m-%d %H:%M:%S")
     annotations = resource.metadata.annotations
     update_time = annotations.get(
         "io.tencent.paas.updateTime") or create_time
     if update_time:
         update_time = normalize_datetime(update_time)
     labels = resource.metadata.labels
     return {
         "data": resource.to_dict(),
         "clusterId": labels.get("io.tencent.bcs.clusterid") or "",
         "resourceName": resource_name,
         "resourceType": resource_type,
         "createTime": create_time,
         "updateTime": update_time,
         "namespace": namespace,
     }
コード例 #6
0
 def render_resource(self, resource_type, resource, resource_name,
                     namespace):
     if not getitems(resource, ["metadata", "annotations"], {}):
         resource["metadata"]["annotations"] = {}
     if not getitems(resource, ["metadata", "labels"], {}):
         resource["metadata"]["labels"] = {}
     create_time = getitems(resource, ["metadata", "creationTimestamp"], "")
     if create_time:
         # create_time format: '2019-12-16T09:10:59Z'
         d_time = arrow.get(create_time).datetime
         create_time = timezone.localtime(d_time).strftime(
             "%Y-%m-%d %H:%M:%S")
     annotations = getitems(resource, ["metadata", "annotations"], {})
     update_time = annotations.get(
         "io.tencent.paas.updateTime") or create_time
     if update_time:
         update_time = normalize_datetime(update_time)
     labels = getitems(resource, ["metadata", "labels"], {})
     return {
         "data": resource,
         "clusterId": labels.get("io.tencent.bcs.clusterid") or "",
         "resourceName": resource_name,
         "resourceType": resource_type,
         "createTime": create_time,
         "updateTime": update_time,
         "namespace": namespace,
     }
コード例 #7
0
 def parse_create_update_time(self, metadata: Dict) -> Tuple:
     """获取 metadata 中的 create_time, update_time"""
     create_time = self.parse_create_time(metadata)
     update_time = metadata['annotations'].get(
         "io.tencent.paas.updateTime") or create_time
     if update_time:
         update_time = normalize_datetime(update_time)
     return create_time, update_time
コード例 #8
0
ファイル: format.py プロジェクト: yulongniu2016/bk-bcs-saas
    def format_dict(self, resource_dict: Dict) -> Dict:
        resource_copy = copy.deepcopy(resource_dict)
        metadata = resource_copy['metadata']
        self.set_metadata_null_values(metadata)

        # Get create_time and update_time
        create_time = self.parse_create_time(metadata)
        update_time = metadata['annotations'].get(
            "io.tencent.paas.updateTime") or create_time
        if update_time:
            update_time = normalize_datetime(update_time)
        return {
            "data": resource_copy,
            "clusterId": self.get_cluster_id(metadata),
            "resourceType": resource_copy['kind'],
            "resourceName": metadata['name'],
            "namespace": metadata.get('namespace', ''),
            "createTime": create_time,
            "updateTime": update_time,
        }
コード例 #9
0
ファイル: views.py プロジェクト: nancyjhsueh/bk-bcs-saas
 def normalize_create_update_time(self, created_at, updated_at):
     return normalize_datetime(created_at), normalize_datetime(updated_at)