예제 #1
0
    def list_custom_objects(self, request, project_id, cluster_id, crd_name):
        cluster_auth = ClusterAuth(request.user.token.access_token, project_id, cluster_id)
        crd_client = CustomResourceDefinition(cluster_auth)
        crd = crd_client.get(name=crd_name, is_format=False)
        if not crd:
            raise error_codes.ResNotFoundError(_("集群({})中未注册自定义资源({})").format(cluster_id, crd_name))

        cobj_client = get_cobj_client_by_crd(cluster_auth, crd_name)
        cobj_list = cobj_client.list(namespace=request.query_params.get("namespace"))
        return Response(to_table_format(crd.to_dict(), cobj_list, cluster_id=cluster_id))
예제 #2
0
def gen_cobj_web_annotations(request, project_id, cluster_id,
                             crd_name: str) -> Dict:
    """ 构造 custom_object 相关 web_annotations """
    client = CustomResourceDefinition(request.ctx_cluster)
    crd = client.get(name=crd_name, is_format=False)
    if not crd:
        raise ResourceNotExist(
            _('集群 {} 中未注册自定义资源 {}').format(cluster_id, crd_name))
    # 先获取基础的,仅包含权限信息的 web_annotations
    web_annotations = gen_base_web_annotations(request, project_id, cluster_id)
    web_annotations.update({'additional_columns': crd.additional_columns})
    return web_annotations
예제 #3
0
 def list(self, request, project_id, cluster_id):
     """获取所有自定义资源列表"""
     self._validate_perm(request.user.username, project_id, cluster_id,
                         None, DashboardAction.View)
     client = CustomResourceDefinition(request.ctx_cluster)
     response_data = ListApiRespBuilder(client).build()
     return Response(response_data)
예제 #4
0
 def retrieve(self, request, project_id, cluster_id, crd_name):
     """获取单个自定义资源详情"""
     self._validate_perm(request.user.username, project_id, cluster_id,
                         None, DashboardAction.View)
     client = CustomResourceDefinition(request.ctx_cluster)
     response_data = RetrieveApiRespBuilder(client,
                                            namespace=None,
                                            name=crd_name).build()
     return Response(response_data)
예제 #5
0
def get_crd_info(crd_name: str, ctx_cluster: CtxCluster) -> Dict:
    """
    获取 CRD 基础信息

    :param crd_name: CRD 名称
    :param ctx_cluster: 集群 Context
    :return: CRD 信息,包含 kind,scope 等
    """
    return CustomResourceDefinition(ctx_cluster).get(crd_name) or {}
예제 #6
0
    def list_custom_objects(self, request, project_id, cluster_id, crd_name):
        crd_client = CustomResourceDefinition(
            access_token=request.user.token.access_token, project_id=project_id, cluster_id=cluster_id,
        )
        crd = crd_client.get_custom_resource_definition(crd_name)

        cobj_client = CustomObject(
            access_token=request.user.token.access_token,
            project_id=project_id,
            cluster_id=cluster_id,
            crd_name=crd_name,
        )
        query_ns = request.query_params.get("namespace")
        if query_ns:
            cobjs = cobj_client.list_namespaced_custom_object(query_ns)
        else:
            cobjs = cobj_client.list_cluster_custom_object()

        return Response(to_table_format(crd, cobjs, cluster_id=cluster_id))
예제 #7
0
 def list(self, request, project_id, cluster_id):
     crd_client = CustomResourceDefinition(ClusterAuth(request.user.token.access_token, project_id, cluster_id))
     return Response(crd_client.list())
예제 #8
0
 def list(self, request, project_id, cluster_id):
     crd_client = CustomResourceDefinition(request.ctx_cluster)
     return Response(crd_client.list())
예제 #9
0
 def list(self, request, project_id, cluster_id):
     crd_client = CustomResourceDefinition(
         access_token=request.user.token.access_token, project_id=project_id, cluster_id=cluster_id,
     )
     crds = crd_client.list_custom_resource_definition()
     return Response([{"name": crd.metadata.name, "scope": crd.spec.scope} for crd in crds.items])
예제 #10
0
 def retrieve(self, request, project_id, cluster_id, crd_name):
     """ 获取单个自定义资源详情 """
     client = CustomResourceDefinition(request.ctx_cluster)
     response_data = RetrieveApiRespBuilder(client, namespace=None, name=crd_name).build()
     return Response(response_data)
예제 #11
0
 def list(self, request, project_id, cluster_id):
     """ 获取所有自定义资源列表 """
     client = CustomResourceDefinition(request.ctx_cluster)
     response_data = ListApiRespBuilder(client).build()
     return Response(response_data)