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)
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)
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)
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)
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, }
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, }
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
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, }
def normalize_create_update_time(self, created_at, updated_at): return normalize_datetime(created_at), normalize_datetime(updated_at)