From 535e30e2926538a0313315e24d776685e6d0f53e Mon Sep 17 00:00:00 2001 From: qiujiandong1 Date: Mon, 23 Feb 2026 09:12:31 +0000 Subject: [PATCH] UCS API initial update 20250523 version Reviewed-by: Gergo-Bence Lorincz Co-authored-by: qiujiandong1 Co-committed-by: qiujiandong1 --- docs/ucs/api-ref/ALL_META.TXT.json | 1029 ++++++++++++ docs/ucs/api-ref/CLASS.TXT.json | 479 ++++++ docs/ucs/api-ref/CreateFederationCert.html | 404 +++++ .../api-ref/CreateFederationConnection.html | 179 ++ docs/ucs/api-ref/CreateRule.html | 256 +++ docs/ucs/api-ref/DeleteCluster.html | 190 +++ docs/ucs/api-ref/DeleteClusterGroup.html | 116 ++ docs/ucs/api-ref/DeleteRule.html | 106 ++ docs/ucs/api-ref/DisableFederation.html | 111 ++ .../api-ref/DownloadFederationKubeconfig.html | 374 +++++ docs/ucs/api-ref/EnableFederation.html | 195 +++ docs/ucs/api-ref/ErrorCode.html | 1438 +++++++++++++++++ docs/ucs/api-ref/JoinGroup.html | 137 ++ docs/ucs/api-ref/LeaveGroup.html | 114 ++ docs/ucs/api-ref/ListClusterGroup.html | 427 +++++ docs/ucs/api-ref/ListManagedClusters.html | 977 +++++++++++ .../ListRegisteredClusterVersions.html | 85 + docs/ucs/api-ref/ListRule.html | 325 ++++ docs/ucs/api-ref/PARAMETERS.txt | 3 + docs/ucs/api-ref/RegisterCluster.html | 373 +++++ docs/ucs/api-ref/RegisterClusterGroup.html | 205 +++ docs/ucs/api-ref/RetryClusterActivation.html | 104 ++ docs/ucs/api-ref/ShowCluster.html | 984 +++++++++++ docs/ucs/api-ref/ShowClusterAccessInfo.html | 151 ++ docs/ucs/api-ref/ShowClusterGroup.html | 354 ++++ docs/ucs/api-ref/ShowClusterList.html | 1081 +++++++++++++ docs/ucs/api-ref/ShowFederationProgress.html | 593 +++++++ docs/ucs/api-ref/UpdateCluster.html | 440 +++++ docs/ucs/api-ref/UpdateClusterGroup.html | 140 ++ .../UpdateClusterGroupAssociatedClusters.html | 130 ++ .../UpdateClusterGroupAssociatedRules.html | 172 ++ docs/ucs/api-ref/UpdateClusterRules.html | 170 ++ docs/ucs/api-ref/UpdateRule.html | 220 +++ .../api-ref/en-us_image_0000002267758860.png | Bin 0 -> 32432 bytes .../api-ref/en-us_image_0000002267861934.png | Bin 0 -> 22183 bytes .../api-ref/en-us_image_0000002302431861.png | Bin 0 -> 45589 bytes .../api-ref/en-us_image_0000002302431869.png | Bin 0 -> 72356 bytes .../api-ref/en-us_image_0000002302431877.png | Bin 0 -> 24961 bytes .../api-ref/en-us_image_0000002302518741.png | Bin 0 -> 27651 bytes .../api-ref/en-us_image_0000002302518757.png | Bin 0 -> 54806 bytes .../api-ref/en-us_topic_0000002520563224.html | 19 + .../api-ref/en-us_topic_0000002551763211.html | 19 + .../api-ref/en-us_topic_0000002551843195.html | 19 + .../caution_3.0-en-us.png | Bin 0 -> 2752 bytes .../public_sys-resources/danger_3.0-en-us.png | Bin 0 -> 2771 bytes .../api-ref/public_sys-resources/delta.gif | Bin 0 -> 836 bytes .../api-ref/public_sys-resources/deltaend.gif | Bin 0 -> 834 bytes .../public_sys-resources/icon-arrowdn.gif | Bin 0 -> 1887 bytes .../public_sys-resources/icon-arrowrt.gif | Bin 0 -> 1890 bytes .../public_sys-resources/icon-caution.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-huawei.gif | Bin 0 -> 2767 bytes .../public_sys-resources/icon-note.gif | Bin 0 -> 983 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 962 bytes .../api-ref/public_sys-resources/icon-tip.gif | Bin 0 -> 879 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 1086 bytes .../public_sys-resources/note_3.0-en-us.png | Bin 0 -> 1080 bytes .../public_sys-resources/notice_3.0-en-us.png | Bin 0 -> 1672 bytes .../warning_3.0-en-us.png | Bin 0 -> 3164 bytes docs/ucs/api-ref/topic_300000000.html | 31 + docs/ucs/api-ref/topic_300000001.html | 42 + docs/ucs/api-ref/topic_300000002.html | 22 + docs/ucs/api-ref/ucs_api_0001.html | 19 + docs/ucs/api-ref/ucs_api_0002.html | 12 + docs/ucs/api-ref/ucs_api_0003.html | 11 + docs/ucs/api-ref/ucs_api_0004.html | 11 + docs/ucs/api-ref/ucs_api_0005.html | 11 + docs/ucs/api-ref/ucs_api_0006.html | 21 + docs/ucs/api-ref/ucs_api_0007.html | 15 + docs/ucs/api-ref/ucs_api_0008.html | 177 ++ docs/ucs/api-ref/ucs_api_0009.html | 116 ++ docs/ucs/api-ref/ucs_api_0010.html | 59 + docs/ucs/api-ref/ucs_api_0011.html | 13 + docs/ucs/api-ref/ucs_api_0015.html | 21 + docs/ucs/api-ref/ucs_api_0016.html | 121 ++ docs/ucs/api-ref/ucs_api_0018.html | 46 + docs/ucs/api-ref/ucs_api_0019.html | 13 + docs/ucs/api-ref/ucs_api_0022.html | 11 + docs/ucs/api-ref/ucs_api_0024.html | 66 + 79 files changed, 12957 insertions(+) create mode 100644 docs/ucs/api-ref/ALL_META.TXT.json create mode 100644 docs/ucs/api-ref/CLASS.TXT.json create mode 100644 docs/ucs/api-ref/CreateFederationCert.html create mode 100644 docs/ucs/api-ref/CreateFederationConnection.html create mode 100644 docs/ucs/api-ref/CreateRule.html create mode 100644 docs/ucs/api-ref/DeleteCluster.html create mode 100644 docs/ucs/api-ref/DeleteClusterGroup.html create mode 100644 docs/ucs/api-ref/DeleteRule.html create mode 100644 docs/ucs/api-ref/DisableFederation.html create mode 100644 docs/ucs/api-ref/DownloadFederationKubeconfig.html create mode 100644 docs/ucs/api-ref/EnableFederation.html create mode 100644 docs/ucs/api-ref/ErrorCode.html create mode 100644 docs/ucs/api-ref/JoinGroup.html create mode 100644 docs/ucs/api-ref/LeaveGroup.html create mode 100644 docs/ucs/api-ref/ListClusterGroup.html create mode 100644 docs/ucs/api-ref/ListManagedClusters.html create mode 100644 docs/ucs/api-ref/ListRegisteredClusterVersions.html create mode 100644 docs/ucs/api-ref/ListRule.html create mode 100644 docs/ucs/api-ref/PARAMETERS.txt create mode 100644 docs/ucs/api-ref/RegisterCluster.html create mode 100644 docs/ucs/api-ref/RegisterClusterGroup.html create mode 100644 docs/ucs/api-ref/RetryClusterActivation.html create mode 100644 docs/ucs/api-ref/ShowCluster.html create mode 100644 docs/ucs/api-ref/ShowClusterAccessInfo.html create mode 100644 docs/ucs/api-ref/ShowClusterGroup.html create mode 100644 docs/ucs/api-ref/ShowClusterList.html create mode 100644 docs/ucs/api-ref/ShowFederationProgress.html create mode 100644 docs/ucs/api-ref/UpdateCluster.html create mode 100644 docs/ucs/api-ref/UpdateClusterGroup.html create mode 100644 docs/ucs/api-ref/UpdateClusterGroupAssociatedClusters.html create mode 100644 docs/ucs/api-ref/UpdateClusterGroupAssociatedRules.html create mode 100644 docs/ucs/api-ref/UpdateClusterRules.html create mode 100644 docs/ucs/api-ref/UpdateRule.html create mode 100644 docs/ucs/api-ref/en-us_image_0000002267758860.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002267861934.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002302431861.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002302431869.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002302431877.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002302518741.png create mode 100644 docs/ucs/api-ref/en-us_image_0000002302518757.png create mode 100644 docs/ucs/api-ref/en-us_topic_0000002520563224.html create mode 100644 docs/ucs/api-ref/en-us_topic_0000002551763211.html create mode 100644 docs/ucs/api-ref/en-us_topic_0000002551843195.html create mode 100644 docs/ucs/api-ref/public_sys-resources/caution_3.0-en-us.png create mode 100644 docs/ucs/api-ref/public_sys-resources/danger_3.0-en-us.png create mode 100644 docs/ucs/api-ref/public_sys-resources/delta.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/deltaend.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-arrowdn.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-arrowrt.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-caution.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-danger.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-huawei.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-note.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-notice.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-tip.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/icon-warning.gif create mode 100644 docs/ucs/api-ref/public_sys-resources/note_3.0-en-us.png create mode 100644 docs/ucs/api-ref/public_sys-resources/notice_3.0-en-us.png create mode 100644 docs/ucs/api-ref/public_sys-resources/warning_3.0-en-us.png create mode 100644 docs/ucs/api-ref/topic_300000000.html create mode 100644 docs/ucs/api-ref/topic_300000001.html create mode 100644 docs/ucs/api-ref/topic_300000002.html create mode 100644 docs/ucs/api-ref/ucs_api_0001.html create mode 100644 docs/ucs/api-ref/ucs_api_0002.html create mode 100644 docs/ucs/api-ref/ucs_api_0003.html create mode 100644 docs/ucs/api-ref/ucs_api_0004.html create mode 100644 docs/ucs/api-ref/ucs_api_0005.html create mode 100644 docs/ucs/api-ref/ucs_api_0006.html create mode 100644 docs/ucs/api-ref/ucs_api_0007.html create mode 100644 docs/ucs/api-ref/ucs_api_0008.html create mode 100644 docs/ucs/api-ref/ucs_api_0009.html create mode 100644 docs/ucs/api-ref/ucs_api_0010.html create mode 100644 docs/ucs/api-ref/ucs_api_0011.html create mode 100644 docs/ucs/api-ref/ucs_api_0015.html create mode 100644 docs/ucs/api-ref/ucs_api_0016.html create mode 100644 docs/ucs/api-ref/ucs_api_0018.html create mode 100644 docs/ucs/api-ref/ucs_api_0019.html create mode 100644 docs/ucs/api-ref/ucs_api_0022.html create mode 100644 docs/ucs/api-ref/ucs_api_0024.html diff --git a/docs/ucs/api-ref/ALL_META.TXT.json b/docs/ucs/api-ref/ALL_META.TXT.json new file mode 100644 index 000000000..c4b19513f --- /dev/null +++ b/docs/ucs/api-ref/ALL_META.TXT.json @@ -0,0 +1,1029 @@ +[ + { + "dockw":"API Reference" + }, + { + "uri":"ucs_api_0001.html", + "node_id":"ucs_api_0001.xml", + "product_code":"ucs", + "code":"1", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Before You Start", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Before You Start", + "githuburl":"" + }, + { + "uri":"ucs_api_0002.html", + "node_id":"ucs_api_0002.xml", + "product_code":"ucs", + "code":"2", + "des":"Ubiquitous Cloud Native Service (UCS) is the first distributed cloud native product in the industry. It provides a consistent experience in cloud native application deplo", + "doc_type":"api", + "kw":"Overview,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Overview", + "githuburl":"" + }, + { + "uri":"ucs_api_0003.html", + "node_id":"ucs_api_0003.xml", + "product_code":"ucs", + "code":"3", + "des":"UCS supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details about API calling, see Calling APIs.", + "doc_type":"api", + "kw":"API Calling,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"API Calling", + "githuburl":"" + }, + { + "uri":"ucs_api_0004.html", + "node_id":"ucs_api_0004.xml", + "product_code":"ucs", + "code":"4", + "des":"An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. The endpoint of UCS consists of the service name, region ID, and ", + "doc_type":"api", + "kw":"Endpoints,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Endpoints", + "githuburl":"" + }, + { + "uri":"ucs_api_0005.html", + "node_id":"ucs_api_0005.xml", + "product_code":"ucs", + "code":"5", + "des":"UCS imposes quotas on the number and capacity of resources that a user can access. By default, you can create a maximum of 50 fleets, 50 clusters, and 50 permission polic", + "doc_type":"api", + "kw":"Constraints,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Constraints", + "githuburl":"" + }, + { + "uri":"ucs_api_0006.html", + "node_id":"ucs_api_0006.xml", + "product_code":"ucs", + "code":"6", + "des":"DomainA domain is created upon successful signing up. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user pas", + "doc_type":"api", + "kw":"Concepts,Before You Start,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Concepts", + "githuburl":"" + }, + { + "uri":"ucs_api_0007.html", + "node_id":"ucs_api_0007.xml", + "product_code":"ucs", + "code":"7", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Calling APIs", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Calling APIs", + "githuburl":"" + }, + { + "uri":"ucs_api_0008.html", + "node_id":"ucs_api_0008.xml", + "product_code":"ucs", + "code":"8", + "des":"This section describes the structure of a REST API request, and uses the IAM API for obtaining a user tokenobtaining a user token as an example to demonstrate how to call", + "doc_type":"api", + "kw":"Making an API Request,Calling APIs,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Making an API Request", + "githuburl":"" + }, + { + "uri":"ucs_api_0009.html", + "node_id":"ucs_api_0009.xml", + "product_code":"ucs", + "code":"9", + "des":"Requests for calling an API can be authenticated using an AK/SK pair.An AK/SK is used to verify the identity of a request sender. In AK/SK authentication, a signature nee", + "doc_type":"api", + "kw":"Authentication,Calling APIs,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Authentication", + "githuburl":"" + }, + { + "uri":"ucs_api_0010.html", + "node_id":"ucs_api_0010.xml", + "product_code":"ucs", + "code":"10", + "des":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "doc_type":"api", + "kw":"Response,Calling APIs,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Response", + "githuburl":"" + }, + { + "uri":"ucs_api_0011.html", + "node_id":"ucs_api_0011.xml", + "product_code":"ucs", + "code":"11", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"API", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"API", + "githuburl":"" + }, + { + "uri":"topic_300000000.html", + "node_id":"topic_300000000.xml", + "product_code":"ucs", + "code":"12", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"UCS Clusters", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"UCS Clusters", + "githuburl":"" + }, + { + "uri":"ShowClusterList.html", + "node_id":"showclusterlist.xml", + "product_code":"ucs", + "code":"13", + "des":"This API is used to obtain the cluster list.GET /v1/clustersStatus code: 200NoneStatus code: 200Information about all clusters is obtained.See Error Codes.", + "doc_type":"api", + "kw":"Obtaining the Cluster List,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining the Cluster List", + "githuburl":"" + }, + { + "uri":"ShowCluster.html", + "node_id":"showcluster.xml", + "product_code":"ucs", + "code":"14", + "des":"This API is used to obtain a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the cluster. Otherwi", + "doc_type":"api", + "kw":"Obtaining a Cluster,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining a Cluster", + "githuburl":"" + }, + { + "uri":"RegisterCluster.html", + "node_id":"registercluster.xml", + "product_code":"ucs", + "code":"15", + "des":"This API is used to register a cluster. Third-party clusters and CCE clusters can be registered.POST /v1/clustersStatus code: 201Registering a CCE cluster{\n \"metadata\" :", + "doc_type":"api", + "kw":"Registering a Cluster,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Registering a Cluster", + "githuburl":"" + }, + { + "uri":"UpdateCluster.html", + "node_id":"updatecluster.xml", + "product_code":"ucs", + "code":"16", + "des":"This API is used to update a cluster. Currently, only the country/city of attached clusters and on-premises clusters, and the number of worker nodes in a multi-cloud clus", + "doc_type":"api", + "kw":"Updating a Cluster,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Updating a Cluster", + "githuburl":"" + }, + { + "uri":"DeleteCluster.html", + "node_id":"deletecluster.xml", + "product_code":"ucs", + "code":"17", + "des":"This API is used to unregister a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the correspondin", + "doc_type":"api", + "kw":"Unregistering a Cluster,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Unregistering a Cluster", + "githuburl":"" + }, + { + "uri":"ShowClusterAccessInfo.html", + "node_id":"showclusteraccessinfo.xml", + "product_code":"ucs", + "code":"18", + "des":"This API is used to obtain the cluster access information. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the permission to query the", + "doc_type":"api", + "kw":"Obtaining Cluster Access Information,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining Cluster Access Information", + "githuburl":"" + }, + { + "uri":"RetryClusterActivation.html", + "node_id":"retryclusteractivation.xml", + "product_code":"ucs", + "code":"19", + "des":"This API is used to activate a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permission on the corresponding c", + "doc_type":"api", + "kw":"Activating a Cluster,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Activating a Cluster", + "githuburl":"" + }, + { + "uri":"ListManagedClusters.html", + "node_id":"listmanagedclusters.xml", + "product_code":"ucs", + "code":"20", + "des":"This API is used to obtain the CCE cluster list of the current tenant.GET /v1/managedclustersStatus code: 200NoneStatus code: 200CCE clusters that are not registered with", + "doc_type":"api", + "kw":"Obtaining the CCE Cluster List of a Tenant,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining the CCE Cluster List of a Tenant", + "githuburl":"" + }, + { + "uri":"ListRegisteredClusterVersions.html", + "node_id":"listregisteredclusterversions.xml", + "product_code":"ucs", + "code":"21", + "des":"This API is used to query the version list of clusters that can be connected to UCS.GET /v1/config/registeredclusterversionsStatus code: 200NoneStatus code: 200Version li", + "doc_type":"api", + "kw":"Querying the Version List of Clusters That Can Be Connected to UCS,UCS Clusters,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Querying the Version List of Clusters That Can Be Connected to UCS", + "githuburl":"" + }, + { + "uri":"topic_300000001.html", + "node_id":"topic_300000001.xml", + "product_code":"ucs", + "code":"22", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Fleets", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Fleets", + "githuburl":"" + }, + { + "uri":"JoinGroup.html", + "node_id":"joingroup.xml", + "product_code":"ucs", + "code":"23", + "des":"This API is used to add a cluster to a fleet.POST /v1/clusters/{clusterid}/joinNoneAdding a cluster to a fleetStatus code: 200The cluster has been added to the fleet.See ", + "doc_type":"api", + "kw":"Adding a Cluster to a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Adding a Cluster to a Fleet", + "githuburl":"" + }, + { + "uri":"LeaveGroup.html", + "node_id":"leavegroup.xml", + "product_code":"ucs", + "code":"24", + "des":"This API is used to remove a cluster from a fleet.POST /v1/clusters/{clusterid}/unjoinNoneNoneNoneSee Error Codes.", + "doc_type":"api", + "kw":"Removing a Cluster from a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Removing a Cluster from a Fleet", + "githuburl":"" + }, + { + "uri":"RegisterClusterGroup.html", + "node_id":"registerclustergroup.xml", + "product_code":"ucs", + "code":"25", + "des":"This API is used to create a fleet. You can select clusters during fleet creation.POST /v1/clustergroupsStatus code: 201Creating a fleet and (optional) adding clusters to", + "doc_type":"api", + "kw":"Creating a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Creating a Fleet", + "githuburl":"" + }, + { + "uri":"DeleteClusterGroup.html", + "node_id":"deleteclustergroup.xml", + "product_code":"ucs", + "code":"26", + "des":"This API is used to delete a fleet. A fleet can only be deleted when there are no clusters in it. To delete a fleet, remove the clusters from the fleet first. The cluster", + "doc_type":"api", + "kw":"Deleting a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Deleting a Fleet", + "githuburl":"" + }, + { + "uri":"ShowClusterGroup.html", + "node_id":"showclustergroup.xml", + "product_code":"ucs", + "code":"27", + "des":"This API is used to obtain a fleet.GET /v1/clustergroups/{clustergroupid}Status code: 200NoneStatus code: 200Fleet objectSee Error Codes.", + "doc_type":"api", + "kw":"Obtaining a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining a Fleet", + "githuburl":"" + }, + { + "uri":"UpdateClusterGroupAssociatedClusters.html", + "node_id":"updateclustergroupassociatedclusters.xml", + "product_code":"ucs", + "code":"28", + "des":"This API is used to add clusters to a fleet. One or more clusters can be added at the same time. This API cannot be used to remove all or some clusters from a fleet.PUT /", + "doc_type":"api", + "kw":"Adding Clusters to a Fleet,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Adding Clusters to a Fleet", + "githuburl":"" + }, + { + "uri":"UpdateClusterGroup.html", + "node_id":"updateclustergroup.xml", + "product_code":"ucs", + "code":"29", + "des":"This API is used to update the description of a fleet. You must have the permissions to update the fleet.PUT /v1/clustergroups/{clustergroupid}/descriptionNoneUpdating fl", + "doc_type":"api", + "kw":"Updating Fleet Description,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Updating Fleet Description", + "githuburl":"" + }, + { + "uri":"ListClusterGroup.html", + "node_id":"listclustergroup.xml", + "product_code":"ucs", + "code":"30", + "des":"This API is used to obtain the fleet list.GET /v1/clustergroupsStatus code: 200NoneStatus code: 200The fleet list has been obtained.See Error Codes.", + "doc_type":"api", + "kw":"Obtaining the Fleet List,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining the Fleet List", + "githuburl":"" + }, + { + "uri":"EnableFederation.html", + "node_id":"enablefederation.xml", + "product_code":"ucs", + "code":"31", + "des":"This API is used to enable cluster federation.POST /v1/clustergroups/{clustergroupid}/federationsStatus code: 201container fleet has in enable federation progress.Status ", + "doc_type":"api", + "kw":"Enabling Cluster Federation,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Enabling Cluster Federation", + "githuburl":"" + }, + { + "uri":"DisableFederation.html", + "node_id":"disablefederation.xml", + "product_code":"ucs", + "code":"32", + "des":"This API is used to disable cluster federation for a fleet.DELETE /v1/clustergroups/{clustergroupid}/federationsNoneNoneStatus code: 200Cluster federation has been disabl", + "doc_type":"api", + "kw":"Disabling Cluster Federation,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Disabling Cluster Federation", + "githuburl":"" + }, + { + "uri":"ShowFederationProgress.html", + "node_id":"showfederationprogress.xml", + "product_code":"ucs", + "code":"33", + "des":"This API is used to query the federation enabling progress.GET /v1/clustergroups/{clustergroupid}/federations/progressStatus code: 200NoneStatus code: 200Job for enabling", + "doc_type":"api", + "kw":"Querying Federation Enabling Progress,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Querying Federation Enabling Progress", + "githuburl":"" + }, + { + "uri":"CreateFederationCert.html", + "node_id":"createfederationcert.xml", + "product_code":"ucs", + "code":"34", + "des":"This API is used to create a VPC endpoint for connecting to the federation API server and downloading kubeconfig of the federation API server after federation is enabled ", + "doc_type":"api", + "kw":"Creating a Federation Connection and Downloading kubeconfig,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Creating a Federation Connection and Downloading kubeconfig", + "githuburl":"" + }, + { + "uri":"CreateFederationConnection.html", + "node_id":"createfederationconnection.xml", + "product_code":"ucs", + "code":"35", + "des":"This API is used to create a VPC endpoint for connecting to the federation API server after federation is enabled for a fleet.POST /v1/clustergroups/{clustergroupid}/conn", + "doc_type":"api", + "kw":"Creating a Federation Connection,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Creating a Federation Connection", + "githuburl":"" + }, + { + "uri":"DownloadFederationKubeconfig.html", + "node_id":"downloadfederationkubeconfig.xml", + "product_code":"ucs", + "code":"36", + "des":"This API is used to download the kubeconfig after the cluster federation is enabled for a fleet and the federation connection is created.POST /v1/clustergroups/{clustergr", + "doc_type":"api", + "kw":"Downloading Federation kubeconfig,Fleets,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Downloading Federation kubeconfig", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000002551843195.html", + "node_id":"en-us_topic_0000002551843195.xml", + "product_code":"ucs", + "code":"37", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Outdated APIs", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Outdated APIs", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000002551763211.html", + "node_id":"en-us_topic_0000002551763211.xml", + "product_code":"ucs", + "code":"38", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"UCS Cluster", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"UCS Cluster", + "githuburl":"" + }, + { + "uri":"UpdateClusterRules.html", + "node_id":"updateclusterrules.xml", + "product_code":"ucs", + "code":"39", + "des":"This API is used to associate a cluster with permission policies.PUT /v1/clusters/{clusterid}/associatedrulesNoneAssociating a cluster with permission policiesNoneSee Err", + "doc_type":"api", + "kw":"Associating a Cluster with Permission Policies,UCS Cluster,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Associating a Cluster with Permission Policies", + "githuburl":"" + }, + { + "uri":"en-us_topic_0000002520563224.html", + "node_id":"en-us_topic_0000002520563224.xml", + "product_code":"ucs", + "code":"40", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Fleet", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Fleet", + "githuburl":"" + }, + { + "uri":"UpdateClusterGroupAssociatedRules.html", + "node_id":"updateclustergroupassociatedrules.xml", + "product_code":"ucs", + "code":"41", + "des":"This API is used to update the permission policies associated with a fleet.PUT /v1/clustergroups/{clustergroupid}/associatedrulesNoneUpdating the permission policies asso", + "doc_type":"api", + "kw":"Updating Permission Policies Associated with a Fleet,Fleet,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Updating Permission Policies Associated with a Fleet", + "githuburl":"" + }, + { + "uri":"topic_300000002.html", + "node_id":"topic_300000002.xml", + "product_code":"ucs", + "code":"42", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Permissions", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Permissions", + "githuburl":"" + }, + { + "uri":"CreateRule.html", + "node_id":"createrule.xml", + "product_code":"ucs", + "code":"43", + "des":"This API is used to create a permission policy.POST /v1/permissions/rulesStatus code: 201Creating a permission policyStatus code: 201The UID of the new permission policy ", + "doc_type":"api", + "kw":"Creating a Permission Policy,Permissions,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Creating a Permission Policy", + "githuburl":"" + }, + { + "uri":"ListRule.html", + "node_id":"listrule.xml", + "product_code":"ucs", + "code":"44", + "des":"This API is used to obtain the permission policy list.GET /v1/permissions/rulesStatus code: 200NoneStatus code: 200Permission policy listSee Error Codes.", + "doc_type":"api", + "kw":"Obtaining the Permission Policy List,Permissions,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Obtaining the Permission Policy List", + "githuburl":"" + }, + { + "uri":"DeleteRule.html", + "node_id":"deleterule.xml", + "product_code":"ucs", + "code":"45", + "des":"This API is used to delete a permission policy.DELETE /v1/permissions/rules/{ruleid}NoneNoneNoneSee Error Codes.", + "doc_type":"api", + "kw":"Deleting a Permission Policy,Permissions,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Deleting a Permission Policy", + "githuburl":"" + }, + { + "uri":"UpdateRule.html", + "node_id":"updaterule.xml", + "product_code":"ucs", + "code":"46", + "des":"This API is used to update a permission policy.PUT /v1/permissions/rules/{ruleid}NoneUpdating a permission policyNoneSee Error Codes.", + "doc_type":"api", + "kw":"Updating a Permission Policy,Permissions,API Reference", + "search_title":"", + "metedata":[ + { + "prodname":"ucs", + "documenttype":"api", + "opensource":"true", + "operation_id":"ShowClusterList;ShowCluster;RegisterCluster;UpdateCluster;DeleteCluster;ShowClusterAccessInfo;RetryClusterActivation;UpdateClusterRules;ListManagedClusters;ListRegisteredClusterVersions;JoinGroup;LeaveGroup;RegisterClusterGroup;DeleteClusterGroup;ShowClusterGroup;UpdateClusterGroupAssociatedClusters;UpdateClusterGroup;UpdateClusterGroupAssociatedRules;ListClusterGroup;EnableFederation;DisableFederation;ShowFederationProgress;CreateFederationCert;CreateFederationConnection;DownloadFederationKubeconfig;CreateRule;ListRule;DeleteRule;UpdateRule" + } + ], + "title":"Updating a Permission Policy", + "githuburl":"" + }, + { + "uri":"ucs_api_0015.html", + "node_id":"ucs_api_0015.xml", + "product_code":"ucs", + "code":"47", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Appendix", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Appendix", + "githuburl":"" + }, + { + "uri":"ucs_api_0016.html", + "node_id":"ucs_api_0016.xml", + "product_code":"ucs", + "code":"48", + "des":"Normal valuesReturned ValueDescription200 OKThe results of GET and PUT operations are returned as expected.201 CreatedThe results of the POST operation are returned as ex", + "doc_type":"api", + "kw":"Status Codes,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Status Codes", + "githuburl":"" + }, + { + "uri":"ErrorCode.html", + "node_id":"errorcode.xml", + "product_code":"ucs", + "code":"49", + "des":"If an exception occurs during the execution of an operation request and the request is not processed, an error message is returned. The error message contains the error c", + "doc_type":"api", + "kw":"Error Codes,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Error Codes", + "githuburl":"" + }, + { + "uri":"ucs_api_0018.html", + "node_id":"ucs_api_0018.xml", + "product_code":"ucs", + "code":"50", + "des":"A project ID is required for some URLs when an API is called. Therefore, you need to obtain a project ID in advance. Two methods are available:Call an API.Use the console", + "doc_type":"api", + "kw":"Obtaining a Project ID,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Obtaining a Project ID", + "githuburl":"" + }, + { + "uri":"ucs_api_0019.html", + "node_id":"ucs_api_0019.xml", + "product_code":"ucs", + "code":"51", + "des":"An account ID is required for some URLs when an API is called. To obtain the account ID, perform the following steps:Register an account and log in to the management cons", + "doc_type":"api", + "kw":"Obtaining an Account ID,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Obtaining an Account ID", + "githuburl":"" + }, + { + "uri":"ucs_api_0022.html", + "node_id":"ucs_api_0022.xml", + "product_code":"ucs", + "code":"52", + "des":"AF: AfghanistanAL: AlbaniaDZ: AlgeriaAD: AndorraAO: AngolaAG: Antigua and BarbudaAR: ArgentinaAM: ArmeniaAU: AustraliaAT: AustriaAZ: AzerbaijanBS: BahamasBH: BahrainBD: B", + "doc_type":"api", + "kw":"Country Codes,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Country Codes", + "githuburl":"" + }, + { + "uri":"ucs_api_0024.html", + "node_id":"ucs_api_0024.xml", + "product_code":"ucs", + "code":"53", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Cluster Categories and Types,Appendix,API Reference", + "search_title":"", + "metedata":[ + { + "documenttype":"api", + "prodname":"ucs" + } + ], + "title":"Cluster Categories and Types", + "githuburl":"" + } +] \ No newline at end of file diff --git a/docs/ucs/api-ref/CLASS.TXT.json b/docs/ucs/api-ref/CLASS.TXT.json new file mode 100644 index 000000000..d5c456237 --- /dev/null +++ b/docs/ucs/api-ref/CLASS.TXT.json @@ -0,0 +1,479 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Before You Start", + "uri":"ucs_api_0001.html", + "doc_type":"api", + "p_code":"", + "code":"1" + }, + { + "desc":"Ubiquitous Cloud Native Service (UCS) is the first distributed cloud native product in the industry. It provides a consistent experience in cloud native application deplo", + "product_code":"ucs", + "title":"Overview", + "uri":"ucs_api_0002.html", + "doc_type":"api", + "p_code":"1", + "code":"2" + }, + { + "desc":"UCS supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details about API calling, see Calling APIs.", + "product_code":"ucs", + "title":"API Calling", + "uri":"ucs_api_0003.html", + "doc_type":"api", + "p_code":"1", + "code":"3" + }, + { + "desc":"An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. The endpoint of UCS consists of the service name, region ID, and ", + "product_code":"ucs", + "title":"Endpoints", + "uri":"ucs_api_0004.html", + "doc_type":"api", + "p_code":"1", + "code":"4" + }, + { + "desc":"UCS imposes quotas on the number and capacity of resources that a user can access. By default, you can create a maximum of 50 fleets, 50 clusters, and 50 permission polic", + "product_code":"ucs", + "title":"Constraints", + "uri":"ucs_api_0005.html", + "doc_type":"api", + "p_code":"1", + "code":"5" + }, + { + "desc":"DomainA domain is created upon successful signing up. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user pas", + "product_code":"ucs", + "title":"Concepts", + "uri":"ucs_api_0006.html", + "doc_type":"api", + "p_code":"1", + "code":"6" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Calling APIs", + "uri":"ucs_api_0007.html", + "doc_type":"api", + "p_code":"", + "code":"7" + }, + { + "desc":"This section describes the structure of a REST API request, and uses the IAM API for obtaining a user tokenobtaining a user token as an example to demonstrate how to call", + "product_code":"ucs", + "title":"Making an API Request", + "uri":"ucs_api_0008.html", + "doc_type":"api", + "p_code":"7", + "code":"8" + }, + { + "desc":"Requests for calling an API can be authenticated using an AK/SK pair.An AK/SK is used to verify the identity of a request sender. In AK/SK authentication, a signature nee", + "product_code":"ucs", + "title":"Authentication", + "uri":"ucs_api_0009.html", + "doc_type":"api", + "p_code":"7", + "code":"9" + }, + { + "desc":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "product_code":"ucs", + "title":"Response", + "uri":"ucs_api_0010.html", + "doc_type":"api", + "p_code":"7", + "code":"10" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"API", + "uri":"ucs_api_0011.html", + "doc_type":"api", + "p_code":"", + "code":"11" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"UCS Clusters", + "uri":"topic_300000000.html", + "doc_type":"api", + "p_code":"11", + "code":"12" + }, + { + "desc":"This API is used to obtain the cluster list.GET /v1/clustersStatus code: 200NoneStatus code: 200Information about all clusters is obtained.See Error Codes.", + "product_code":"ucs", + "title":"Obtaining the Cluster List", + "uri":"ShowClusterList.html", + "doc_type":"api", + "p_code":"12", + "code":"13" + }, + { + "desc":"This API is used to obtain a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the cluster. Otherwi", + "product_code":"ucs", + "title":"Obtaining a Cluster", + "uri":"ShowCluster.html", + "doc_type":"api", + "p_code":"12", + "code":"14" + }, + { + "desc":"This API is used to register a cluster. Third-party clusters and CCE clusters can be registered.POST /v1/clustersStatus code: 201Registering a CCE cluster{\n \"metadata\" :", + "product_code":"ucs", + "title":"Registering a Cluster", + "uri":"RegisterCluster.html", + "doc_type":"api", + "p_code":"12", + "code":"15" + }, + { + "desc":"This API is used to update a cluster. Currently, only the country/city of attached clusters and on-premises clusters, and the number of worker nodes in a multi-cloud clus", + "product_code":"ucs", + "title":"Updating a Cluster", + "uri":"UpdateCluster.html", + "doc_type":"api", + "p_code":"12", + "code":"16" + }, + { + "desc":"This API is used to unregister a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the correspondin", + "product_code":"ucs", + "title":"Unregistering a Cluster", + "uri":"DeleteCluster.html", + "doc_type":"api", + "p_code":"12", + "code":"17" + }, + { + "desc":"This API is used to obtain the cluster access information. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the permission to query the", + "product_code":"ucs", + "title":"Obtaining Cluster Access Information", + "uri":"ShowClusterAccessInfo.html", + "doc_type":"api", + "p_code":"12", + "code":"18" + }, + { + "desc":"This API is used to activate a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permission on the corresponding c", + "product_code":"ucs", + "title":"Activating a Cluster", + "uri":"RetryClusterActivation.html", + "doc_type":"api", + "p_code":"12", + "code":"19" + }, + { + "desc":"This API is used to obtain the CCE cluster list of the current tenant.GET /v1/managedclustersStatus code: 200NoneStatus code: 200CCE clusters that are not registered with", + "product_code":"ucs", + "title":"Obtaining the CCE Cluster List of a Tenant", + "uri":"ListManagedClusters.html", + "doc_type":"api", + "p_code":"12", + "code":"20" + }, + { + "desc":"This API is used to query the version list of clusters that can be connected to UCS.GET /v1/config/registeredclusterversionsStatus code: 200NoneStatus code: 200Version li", + "product_code":"ucs", + "title":"Querying the Version List of Clusters That Can Be Connected to UCS", + "uri":"ListRegisteredClusterVersions.html", + "doc_type":"api", + "p_code":"12", + "code":"21" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Fleets", + "uri":"topic_300000001.html", + "doc_type":"api", + "p_code":"11", + "code":"22" + }, + { + "desc":"This API is used to add a cluster to a fleet.POST /v1/clusters/{clusterid}/joinNoneAdding a cluster to a fleetStatus code: 200The cluster has been added to the fleet.See ", + "product_code":"ucs", + "title":"Adding a Cluster to a Fleet", + "uri":"JoinGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"23" + }, + { + "desc":"This API is used to remove a cluster from a fleet.POST /v1/clusters/{clusterid}/unjoinNoneNoneNoneSee Error Codes.", + "product_code":"ucs", + "title":"Removing a Cluster from a Fleet", + "uri":"LeaveGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"24" + }, + { + "desc":"This API is used to create a fleet. You can select clusters during fleet creation.POST /v1/clustergroupsStatus code: 201Creating a fleet and (optional) adding clusters to", + "product_code":"ucs", + "title":"Creating a Fleet", + "uri":"RegisterClusterGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"25" + }, + { + "desc":"This API is used to delete a fleet. A fleet can only be deleted when there are no clusters in it. To delete a fleet, remove the clusters from the fleet first. The cluster", + "product_code":"ucs", + "title":"Deleting a Fleet", + "uri":"DeleteClusterGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"26" + }, + { + "desc":"This API is used to obtain a fleet.GET /v1/clustergroups/{clustergroupid}Status code: 200NoneStatus code: 200Fleet objectSee Error Codes.", + "product_code":"ucs", + "title":"Obtaining a Fleet", + "uri":"ShowClusterGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"27" + }, + { + "desc":"This API is used to add clusters to a fleet. One or more clusters can be added at the same time. This API cannot be used to remove all or some clusters from a fleet.PUT /", + "product_code":"ucs", + "title":"Adding Clusters to a Fleet", + "uri":"UpdateClusterGroupAssociatedClusters.html", + "doc_type":"api", + "p_code":"22", + "code":"28" + }, + { + "desc":"This API is used to update the description of a fleet. You must have the permissions to update the fleet.PUT /v1/clustergroups/{clustergroupid}/descriptionNoneUpdating fl", + "product_code":"ucs", + "title":"Updating Fleet Description", + "uri":"UpdateClusterGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"29" + }, + { + "desc":"This API is used to obtain the fleet list.GET /v1/clustergroupsStatus code: 200NoneStatus code: 200The fleet list has been obtained.See Error Codes.", + "product_code":"ucs", + "title":"Obtaining the Fleet List", + "uri":"ListClusterGroup.html", + "doc_type":"api", + "p_code":"22", + "code":"30" + }, + { + "desc":"This API is used to enable cluster federation.POST /v1/clustergroups/{clustergroupid}/federationsStatus code: 201container fleet has in enable federation progress.Status ", + "product_code":"ucs", + "title":"Enabling Cluster Federation", + "uri":"EnableFederation.html", + "doc_type":"api", + "p_code":"22", + "code":"31" + }, + { + "desc":"This API is used to disable cluster federation for a fleet.DELETE /v1/clustergroups/{clustergroupid}/federationsNoneNoneStatus code: 200Cluster federation has been disabl", + "product_code":"ucs", + "title":"Disabling Cluster Federation", + "uri":"DisableFederation.html", + "doc_type":"api", + "p_code":"22", + "code":"32" + }, + { + "desc":"This API is used to query the federation enabling progress.GET /v1/clustergroups/{clustergroupid}/federations/progressStatus code: 200NoneStatus code: 200Job for enabling", + "product_code":"ucs", + "title":"Querying Federation Enabling Progress", + "uri":"ShowFederationProgress.html", + "doc_type":"api", + "p_code":"22", + "code":"33" + }, + { + "desc":"This API is used to create a VPC endpoint for connecting to the federation API server and downloading kubeconfig of the federation API server after federation is enabled ", + "product_code":"ucs", + "title":"Creating a Federation Connection and Downloading kubeconfig", + "uri":"CreateFederationCert.html", + "doc_type":"api", + "p_code":"22", + "code":"34" + }, + { + "desc":"This API is used to create a VPC endpoint for connecting to the federation API server after federation is enabled for a fleet.POST /v1/clustergroups/{clustergroupid}/conn", + "product_code":"ucs", + "title":"Creating a Federation Connection", + "uri":"CreateFederationConnection.html", + "doc_type":"api", + "p_code":"22", + "code":"35" + }, + { + "desc":"This API is used to download the kubeconfig after the cluster federation is enabled for a fleet and the federation connection is created.POST /v1/clustergroups/{clustergr", + "product_code":"ucs", + "title":"Downloading Federation kubeconfig", + "uri":"DownloadFederationKubeconfig.html", + "doc_type":"api", + "p_code":"22", + "code":"36" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Outdated APIs", + "uri":"en-us_topic_0000002551843195.html", + "doc_type":"api", + "p_code":"", + "code":"37" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"UCS Cluster", + "uri":"en-us_topic_0000002551763211.html", + "doc_type":"api", + "p_code":"37", + "code":"38" + }, + { + "desc":"This API is used to associate a cluster with permission policies.PUT /v1/clusters/{clusterid}/associatedrulesNoneAssociating a cluster with permission policiesNoneSee Err", + "product_code":"ucs", + "title":"Associating a Cluster with Permission Policies", + "uri":"UpdateClusterRules.html", + "doc_type":"api", + "p_code":"38", + "code":"39" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Fleet", + "uri":"en-us_topic_0000002520563224.html", + "doc_type":"api", + "p_code":"37", + "code":"40" + }, + { + "desc":"This API is used to update the permission policies associated with a fleet.PUT /v1/clustergroups/{clustergroupid}/associatedrulesNoneUpdating the permission policies asso", + "product_code":"ucs", + "title":"Updating Permission Policies Associated with a Fleet", + "uri":"UpdateClusterGroupAssociatedRules.html", + "doc_type":"api", + "p_code":"40", + "code":"41" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Permissions", + "uri":"topic_300000002.html", + "doc_type":"api", + "p_code":"37", + "code":"42" + }, + { + "desc":"This API is used to create a permission policy.POST /v1/permissions/rulesStatus code: 201Creating a permission policyStatus code: 201The UID of the new permission policy ", + "product_code":"ucs", + "title":"Creating a Permission Policy", + "uri":"CreateRule.html", + "doc_type":"api", + "p_code":"42", + "code":"43" + }, + { + "desc":"This API is used to obtain the permission policy list.GET /v1/permissions/rulesStatus code: 200NoneStatus code: 200Permission policy listSee Error Codes.", + "product_code":"ucs", + "title":"Obtaining the Permission Policy List", + "uri":"ListRule.html", + "doc_type":"api", + "p_code":"42", + "code":"44" + }, + { + "desc":"This API is used to delete a permission policy.DELETE /v1/permissions/rules/{ruleid}NoneNoneNoneSee Error Codes.", + "product_code":"ucs", + "title":"Deleting a Permission Policy", + "uri":"DeleteRule.html", + "doc_type":"api", + "p_code":"42", + "code":"45" + }, + { + "desc":"This API is used to update a permission policy.PUT /v1/permissions/rules/{ruleid}NoneUpdating a permission policyNoneSee Error Codes.", + "product_code":"ucs", + "title":"Updating a Permission Policy", + "uri":"UpdateRule.html", + "doc_type":"api", + "p_code":"42", + "code":"46" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Appendix", + "uri":"ucs_api_0015.html", + "doc_type":"api", + "p_code":"", + "code":"47" + }, + { + "desc":"Normal valuesReturned ValueDescription200 OKThe results of GET and PUT operations are returned as expected.201 CreatedThe results of the POST operation are returned as ex", + "product_code":"ucs", + "title":"Status Codes", + "uri":"ucs_api_0016.html", + "doc_type":"api", + "p_code":"47", + "code":"48" + }, + { + "desc":"If an exception occurs during the execution of an operation request and the request is not processed, an error message is returned. The error message contains the error c", + "product_code":"ucs", + "title":"Error Codes", + "uri":"ErrorCode.html", + "doc_type":"api", + "p_code":"47", + "code":"49" + }, + { + "desc":"A project ID is required for some URLs when an API is called. Therefore, you need to obtain a project ID in advance. Two methods are available:Call an API.Use the console", + "product_code":"ucs", + "title":"Obtaining a Project ID", + "uri":"ucs_api_0018.html", + "doc_type":"api", + "p_code":"47", + "code":"50" + }, + { + "desc":"An account ID is required for some URLs when an API is called. To obtain the account ID, perform the following steps:Register an account and log in to the management cons", + "product_code":"ucs", + "title":"Obtaining an Account ID", + "uri":"ucs_api_0019.html", + "doc_type":"api", + "p_code":"47", + "code":"51" + }, + { + "desc":"AF: AfghanistanAL: AlbaniaDZ: AlgeriaAD: AndorraAO: AngolaAG: Antigua and BarbudaAR: ArgentinaAM: ArmeniaAU: AustraliaAT: AustriaAZ: AzerbaijanBS: BahamasBH: BahrainBD: B", + "product_code":"ucs", + "title":"Country Codes", + "uri":"ucs_api_0022.html", + "doc_type":"api", + "p_code":"47", + "code":"52" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"ucs", + "title":"Cluster Categories and Types", + "uri":"ucs_api_0024.html", + "doc_type":"api", + "p_code":"47", + "code":"53" + } +] \ No newline at end of file diff --git a/docs/ucs/api-ref/CreateFederationCert.html b/docs/ucs/api-ref/CreateFederationCert.html new file mode 100644 index 000000000..24e3ceace --- /dev/null +++ b/docs/ucs/api-ref/CreateFederationCert.html @@ -0,0 +1,404 @@ + + +

Creating a Federation Connection and Downloading kubeconfig

+

Function

This API is used to create a VPC endpoint for connecting to the federation API server and downloading kubeconfig of the federation API server after federation is enabled for a fleet.

+
+

URI

POST /v1/clustergroups/{clustergroupid}/cert

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

projectID

+

Yes

+

String

+

Project ID

+

vpcID

+

Yes

+

String

+

VPC ID, which must belong to the project specified by projectID.

+

subnetID

+

Yes

+

String

+

Subnet ID, which must belong to the VPC specified by vpcID.

+

duration

+

Yes

+

Integer

+

Validity period of the certificate in kubeconfig, in days.

+

Minimum value: 1

+

Maximum value: 1825

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Parameters in the response body

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at Config and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

clusters

+

Array of NamedCluster objects

+

Cluster list

+

users

+

Array of NamedAuthInfo objects

+

Certificate information and client key information of specified users

+

contexts

+

Array of NamedContext objects

+

Context list

+

current-context

+

String

+

Current context

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 NamedCluster

Parameter

+

Type

+

Description

+

name

+

String

+

Cluster name

+

cluster

+

ClusterCert object

+

Cluster information

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 6 ClusterCert

Parameter

+

Type

+

Description

+

server

+

String

+

Server address

+

certificate-authority-data

+

String

+

Certificate authorization data

+

insecure-skip-tls-verify

+

String

+

Whether to skip server certificate verification

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 NamedAuthInfo

Parameter

+

Type

+

Description

+

name

+

String

+

Username

+

user

+

AuthInfo object

+

Certificate information and client key information of a specified user

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 8 AuthInfo

Parameter

+

Type

+

Description

+

client-certificate-data

+

String

+

Client certificate

+

client-key-data

+

String

+

PEM encoding data from the TLS client key file

+

token

+

String

+

Authentication token

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 NamedContext

Parameter

+

Type

+

Description

+

name

+

String

+

Context name

+

context

+

Context object

+

Context information

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 Context

Parameter

+

Type

+

Description

+

cluster

+

String

+

Cluster context

+

user

+

String

+

User context

+
+
+
+

Example Requests

Creating a federation connection and downloading kubeconfig

+
{
+  "projectID" : "08d44be1ef00d22e2f6fc0061f54a2f1",
+  "vpcID" : "11c9fe72-5a90-4295-bcfe-774726fb9066",
+  "subnetID" : "0de91d89-1e06-4e24-b371-35d5d3d3779b",
+  "duration" : 30
+}
+

Example Responses

+

Status code: 201

+

kubeconfig file

+
{
+  "kind" : "Config",
+  "apiVersion" : "v1",
+  "clusters" : [ {
+    "name" : "cluster-demo",
+    "cluster" : {
+      "server" : "https://ip:port",
+      "certificate-authority-data" : ""
+    }
+  } ],
+  "users" : [ {
+    "name" : "user",
+    "user" : {
+      "client-certificate-data" : "",
+      "client-key-data" : "",
+      "token" : ""
+    }
+  } ],
+  "contexts" : [ {
+    "name" : "demo",
+    "context" : {
+      "cluster" : "cluster-demo",
+      "user" : "user"
+    }
+  } ],
+  "current-context" : "demo"
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

201

+

kubeconfig file

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/CreateFederationConnection.html b/docs/ucs/api-ref/CreateFederationConnection.html new file mode 100644 index 000000000..9c5fa22b2 --- /dev/null +++ b/docs/ucs/api-ref/CreateFederationConnection.html @@ -0,0 +1,179 @@ + + +

Creating a Federation Connection

+

Function

This API is used to create a VPC endpoint for connecting to the federation API server after federation is enabled for a fleet.

+
+

URI

POST /v1/clustergroups/{clustergroupid}/connection

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

projectID

+

Yes

+

String

+

Project ID

+

vpcID

+

Yes

+

String

+

VPC ID, which must belong to the project specified by projectID.

+

subnetID

+

Yes

+

String

+

Network ID of the subnet. The subnet must be in the VPC specified by vpcID.

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + + + + + + + + + +
Table 4 Parameters in the response body

Parameter

+

Type

+

Description

+

id

+

String

+

VPC endpoint ID

+

ip

+

String

+

IP address of the VPC endpoint

+

dnsNames

+

Array of strings

+

Domain names of VPC endpoint services

+
+
+
+

Example Requests

Creating a federation connection

+
{
+  "projectID" : "08d44be1ef00d22e2f6fc0061f54a2f1",
+  "vpcID" : "11c9fe72-5a90-4295-bcfe-774726fb9066",
+  "subnetID" : "0de91d89-1e06-4e24-b371-35d5d3d3779b"
+}
+
+

Example Responses

Status code: 201

+

The federation API server has been connected using a VPC endpoint.

+
{
+  "id" : "a02c4097-ff39-4d76-b9e3-743b7f400d01"
+  "ip" : "192.168.1.116"
+  "dnsNames" : "test-ucs-fleet.fleet.ucs.eu-de.com"
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

201

+

The federation API server has been connected using a VPC endpoint.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/CreateRule.html b/docs/ucs/api-ref/CreateRule.html new file mode 100644 index 000000000..1615f944b --- /dev/null +++ b/docs/ucs/api-ref/CreateRule.html @@ -0,0 +1,256 @@ + + +

Creating a Permission Policy

+

Function

This API is used to create a permission policy.

+
+

URI

POST /v1/permissions/rules

+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 1 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information

+

Minimum length: 1

+

Maximum length: 16384

+

Content-Type

+

Yes

+

String

+

Request body type or format

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

metadata

+

Yes

+

CreateRuleObjectMeta object

+

Basic information about the permission policy. Metadata is a collection of attributes.

+

spec

+

Yes

+

RuleSpec object

+

Details about the permission policy. UCS creates or updates the permission policy by spec.

+
+
+ +
+ + + + + + + + + + + +
Table 3 CreateRuleObjectMeta

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Permission policy name

+

Minimum length: 1

+

Maximum: 63

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 RuleSpec

Parameter

+

Mandatory

+

Type

+

Description

+

iamuserids

+

No

+

Array of strings

+

Information of IAM users associated with a permission policy

+

type

+

No

+

String

+

Permission policy type. The value can be readonly, develop, admin, or custom.

+

contents

+

No

+

Array of Content objects

+

Permission policy content

+

description

+

No

+

String

+

Permission policy description

+

Minimum length: 0

+

Maximum length: 255

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 Content

Parameter

+

Mandatory

+

Type

+

Description

+

verbs

+

No

+

Array of strings

+

Action list

+

resources

+

No

+

Array of strings

+

Resource list

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + +
Table 6 Parameter in the response body

Parameter

+

Type

+

Description

+

uid

+

String

+

Permission policy UID

+
+
+
+

Example Requests

Creating a permission policy

+
{
+  "metadata" : {
+    "name" : "xxxxx"
+  },
+  "spec" : {
+    "type" : "admin",
+    "iamUserIDs" : [ "xxxxx" ]
+  }
+}
+
+

Example Responses

Status code: 201

+

The UID of the new permission policy has been returned.

+
{
+  "uid" : "xxxx-xxxx-xxxx-xxxx"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

201

+

The UID of the new permission policy has been returned.

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/DeleteCluster.html b/docs/ucs/api-ref/DeleteCluster.html new file mode 100644 index 000000000..5d70016f4 --- /dev/null +++ b/docs/ucs/api-ref/DeleteCluster.html @@ -0,0 +1,190 @@ + + +

Unregistering a Cluster

+

Function

This API is used to unregister a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the corresponding cluster. Otherwise, the authentication fails.

+
+

URI

DELETE /v1/clusters/{clusterid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

The cluster has been unregistered.

+
+
+

Status code: 400

+ +
+ + + + + + + + + +
Table 4 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 404

+ +
+ + + + + + + + + +
Table 5 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 500

+ +
+ + + + + + + + + +
Table 6 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

The cluster has been unregistered.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been unregistered.

+

400

+

Client request error. The server could not execute the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/DeleteClusterGroup.html b/docs/ucs/api-ref/DeleteClusterGroup.html new file mode 100644 index 000000000..49bd1ec18 --- /dev/null +++ b/docs/ucs/api-ref/DeleteClusterGroup.html @@ -0,0 +1,116 @@ + + +

Deleting a Fleet

+

Function

This API is used to delete a fleet. A fleet can only be deleted when there are no clusters in it. To delete a fleet, remove the clusters from the fleet first. The cluster IDs must comply with the Kubernetes UUID format rules, and you must have operation permissions on the clusters. Otherwise, the authentication fails.

+
+

URI

DELETE /v1/clustergroups/{clustergroupid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

None

+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

The fleet has been deleted.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The fleet has been deleted.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/DeleteRule.html b/docs/ucs/api-ref/DeleteRule.html new file mode 100644 index 000000000..2f6fa2ec1 --- /dev/null +++ b/docs/ucs/api-ref/DeleteRule.html @@ -0,0 +1,106 @@ + + +

Deleting a Permission Policy

+

Function

This API is used to delete a permission policy.

+
+

URI

DELETE /v1/permissions/rules/{ruleid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

ruleid

+

Yes

+

String

+

Permission policy ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information

+

Minimum length: 1

+

Maximum length: 16384

+

Content-Type

+

Yes

+

String

+

Request body type or format

+
+
+
+

Response Parameters

None

+
+

Example Requests

None

+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The permission policy has been deleted.

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/DisableFederation.html b/docs/ucs/api-ref/DisableFederation.html new file mode 100644 index 000000000..281add07d --- /dev/null +++ b/docs/ucs/api-ref/DisableFederation.html @@ -0,0 +1,111 @@ + + +

Disabling Cluster Federation

+

Function

This API is used to disable cluster federation for a fleet.

+
+

URI

DELETE /v1/clustergroups/{clustergroupid}/federations

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

None

+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Cluster federation has been disabled.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Cluster federation has been disabled.

+

400

+

Client request error. The server could not execute the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/DownloadFederationKubeconfig.html b/docs/ucs/api-ref/DownloadFederationKubeconfig.html new file mode 100644 index 000000000..68df11b14 --- /dev/null +++ b/docs/ucs/api-ref/DownloadFederationKubeconfig.html @@ -0,0 +1,374 @@ + + +

Downloading Federation kubeconfig

+

Function

This API is used to download the kubeconfig after the cluster federation is enabled for a fleet and the federation connection is created.

+
+

URI

POST /v1/clustergroups/{clustergroupid}/kubeconfig

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

duration

+

Yes

+

Integer

+

Validity period of the certificate in kubeconfig

+

Minimum value: 1

+

Maximum value: 1825

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Parameters in the response body

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at Config and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

clusters

+

Array of NamedCluster objects

+

Cluster list

+

users

+

Array of NamedAuthInfo objects

+

Certificate information and client key information of specified users

+

contexts

+

Array of NamedContext objects

+

Context list

+

current-context

+

String

+

Current context

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 NamedCluster

Parameter

+

Type

+

Description

+

name

+

String

+

Cluster name

+

cluster

+

ClusterCert object

+

Cluster information

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 6 ClusterCert

Parameter

+

Type

+

Description

+

server

+

String

+

Server address

+

certificate-authority-data

+

String

+

Certificate authorization data

+

insecure-skip-tls-verify

+

String

+

Whether to skip server certificate verification

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 NamedAuthInfo

Parameter

+

Type

+

Description

+

name

+

String

+

Username

+

user

+

AuthInfo object

+

Certificate information and client key information of a specified user

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 8 AuthInfo

Parameter

+

Type

+

Description

+

client-certificate-data

+

String

+

Client certificate

+

client-key-data

+

String

+

PEM encoding data from the TLS client key file

+

token

+

String

+

Authentication token

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 NamedContext

Parameter

+

Type

+

Description

+

name

+

String

+

Context name

+

context

+

Context object

+

Context information

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 Context

Parameter

+

Type

+

Description

+

cluster

+

String

+

Cluster context

+

user

+

String

+

User context

+
+
+
+

Example Requests

Downloading federation kubeconfig

+
{
+  "duration" : 30
+}
+
+

Example Responses

Status code: 201

+

kubeconfig file

+
{
+  "kind" : "Config",
+  "apiVersion" : "v1",
+  "clusters" : [ {
+    "name" : "cluster-demo",
+    "cluster" : {
+      "server" : "https://ip:port",
+      "certificate-authority-data" : ""
+    }
+  } ],
+  "users" : [ {
+    "name" : "user",
+    "user" : {
+      "client-certificate-data" : "",
+      "client-key-data" : "",
+      "token" : ""
+    }
+  } ],
+  "contexts" : [ {
+    "name" : "demo",
+    "context" : {
+      "cluster" : "cluster-demo",
+      "user" : "user"
+    }
+  } ],
+  "current-context" : "demo"
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

201

+

kubeconfig file

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/EnableFederation.html b/docs/ucs/api-ref/EnableFederation.html new file mode 100644 index 000000000..36cd7f5cc --- /dev/null +++ b/docs/ucs/api-ref/EnableFederation.html @@ -0,0 +1,195 @@ + + +

Enabling Cluster Federation

+

Function

This API is used to enable cluster federation.

+
+

URI

POST /v1/clustergroups/{clustergroupid}/federations

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+ +
+ + + + + + + + + + + +
Table 2 Query parameter

Parameter

+

Mandatory

+

Type

+

Description

+

retryjoinall

+

No

+

Boolean

+

Whether to retry adding the cluster to the federation.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 3 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

Status code: 201

+

container fleet has in enable federation progress.

+

Status code: 400

+ +
+ + + + + + + + + +
Table 4 Response body parameters

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 404

+ +
+ + + + + + + + + +
Table 5 Response body parameters

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 500

+ +
+ + + + + + + + + +
Table 6 Response body parameters

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 201

+

Cluster federation has been enabled.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

201

+

Cluster federation has been enabled.

+

400

+

Client request error. The server could not execute the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ErrorCode.html b/docs/ucs/api-ref/ErrorCode.html new file mode 100644 index 000000000..923fe3c18 --- /dev/null +++ b/docs/ucs/api-ref/ErrorCode.html @@ -0,0 +1,1438 @@ + + +

Error Codes

+

If an exception occurs during the execution of an operation request and the request is not processed, an error message is returned. The error message contains the error code and description. Table 1 lists the common error codes and error messages. You can rectify the errors following the description.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Error code description

Error Code

+

Status Code

+

Error Message

+

Description

+

UCS.00000001

+

400

+

Failed to obtain the user information.

+

Failed to obtain the user information.

+

UCS.00000003

+

400

+

Failed to obtain the federation information.

+

Failed to obtain the federation information.

+

UCS.00000004

+

403

+

Request forbidden.

+

Forbidden request.

+

UCS.00000005

+

500

+

Database operation failed.

+

Failed to operate the database.

+

UCS.00000006

+

500

+

Server internal error.

+

Internal server error.

+

UCS.00000007

+

500

+

Data transform error.

+

Data conversion failed.

+

UCS.00000008

+

500

+

Error add event.

+

Failed to add the event.

+

UCS.00000009

+

500

+

Data unmarshal error.

+

Failed to deserialize data.

+

UCS.00000010

+

500

+

Data marshal error.

+

Failed to serialize data.

+

UCS.00000011

+

400

+

Bad query parameter value.

+

Invalid request parameter.

+

UCS.00000012

+

400

+

Invalid request body.

+

Invalid request body.

+

UCS.00000013

+

404

+

No requested resources found.

+

The requested resource cannot be found.

+

UCS.00000014

+

500

+

Failed to encrypt data.

+

Data encryption failed.

+

UCS.00000015

+

500

+

Failed to decrypt data.

+

Data decryption failed.

+

UCS.00000016

+

400

+

Invalid header value.

+

Invalid request header.

+

UCS.00000017

+

400

+

Insufficient quota

+

Insufficient quota.

+

UCS.00000018

+

401

+

Authorization failed.

+

Authorization failed.

+

UCS.00010001

+

500

+

Failed to get iam connection.

+

IAM connection failed.

+

UCS.00010002

+

403

+

Sub-user has no authority to create agency.

+

The IAM user does not have the permission for creating an agency.

+

UCS.00010003

+

400

+

Failed to create agency.

+

Failed to create an agency.

+

UCS.00010004

+

500

+

Failed to get role id for te_admin.

+

Failed to obtain the te_admin role.

+

UCS.00010005

+

500

+

Failed to get admin token from iam.

+

Failed to obtain the admin token.

+

UCS.00010006

+

500

+

Failed to get agency list from iam.

+

Failed to obtain the agency list.

+

UCS.00010007

+

500

+

Failed to get agency grants from iam.

+

Failed to obtain the agency grants.

+

UCS.00010008

+

500

+

Failed to update agency role.

+

Failed to update the agency role.

+

UCS.00010009

+

400

+

Failed to get project token by agency

+

Failed to obtain the project token through the agency.

+

UCS.00010010

+

400

+

Failed to get op_svc account domain token

+

Failed to obtain the token of the op account.

+

UCS.00010011

+

400

+

Failed to get project id by project name.

+

Failed to obtain the project ID.

+

UCS.00010012

+

400

+

IAM agency quota insufficient, please expand agency quota

+

IAM agency quota exceeded.

+

UCS.00010013

+

400

+

fail to get iam pdp authorize result

+

Failed to obtain the PDP authentication result.

+

UCS.00010014

+

403

+

iam pdp authentication denied

+

PDP authentication rejected.

+

UCS.00010015

+

403

+

iam rbac authentication denied

+

RBAC authentication rejected.

+

UCS.00020001

+

500

+

Failed to get aeskey.

+

Failed to obtain the aeskey.

+

UCS.00020002

+

500

+

Failed to get certs.

+

Failed to obtain the certificate.

+

UCS.00020003

+

500

+

Failed to create certs.

+

Failed to create the certificate.

+

UCS.00020003

+

500

+

Failed to delete certs.

+

Failed to delete the certificate.

+

UCS.00030001

+

404

+

Cluster Not Found.

+

No clusters found.

+

UCS.00030002

+

400

+

Failed to obtain the cluster information.

+

Failed to obtain the cluster information.

+

UCS.00030003

+

400

+

Failed to get resourceJob info with cluster status

+

Failed to obtain the resource job.

+

UCS.00040001

+

400

+

Failed to obtain the mesh information.

+

Failed to obtain the mesh information.

+

UCS.00090001

+

500

+

Failed to create DNSRecord

+

Failed to create the record set.

+

UCS.00100001

+

400

+

Failed to publish message to smn.

+

Failed to publish messages to SMN.

+

UCS.00100002

+

400

+

smn topic error.

+

Invalid SMN topic.

+

UCS.00100003

+

400

+

smn subscription error.

+

SMN subscription error.

+

UCS.00110001

+

400

+

SDR failed to get billing raw data

+

Failed to obtain billing data.

+

UCS.00110002

+

400

+

Formatting raw billing data to SDR format error

+

Failed to format billing data.

+

UCS.00120001

+

400

+

CBC failed to update resources status

+

Failed to update the CBC resource status.

+

UCS.00130001

+

400

+

Get UCS Agency info error

+

Failed to obtain the UCS agency.

+

UCS.00140001

+

400

+

Create ClusterRole failed

+

Failed to create a ClusterRole.

+

UCS.00140002

+

400

+

Delete ClusterRole failed

+

Failed to delete a ClusterRole.

+

UCS.00140003

+

400

+

Update ClusterRole failed

+

Failed to update a ClusterRole.

+

UCS.00140004

+

400

+

Get ClusterRole failed

+

Failed to obtain the ClusterRole information.

+

UCS.00140005

+

400

+

Create ClusterRoleBinding failed

+

Failed to create a ClusterRoleBinding.

+

UCS.00140006

+

400

+

Delete ClusterRoleBinding failed

+

Failed to delete a ClusterRoleBinding.

+

UCS.00140007

+

400

+

Update ClusterRoleBinding failed

+

Failed to update a ClusterRoleBinding.

+

UCS.00140008

+

400

+

Get ClusterRoleBinding failed

+

Failed to obtain the ClusterRoleBinding information.

+

UCS.00140009

+

400

+

Create Role failed

+

Failed to create a role.

+

UCS.00140010

+

400

+

Delete Role failed

+

Failed to delete a role.

+

UCS.00140011

+

400

+

Update Role failed

+

Failed to update a role.

+

UCS.00140012

+

400

+

Get Role failed

+

Failed to obtain the role information.

+

UCS.00140013

+

400

+

Create RoleBinding failed

+

Failed to create a RoleBinding.

+

UCS.00140014

+

400

+

Delete RoleBinding failed

+

Failed to delete a RoleBinding.

+

UCS.00140015

+

400

+

Update RoleBinding failed

+

Failed to update a RoleBinding.

+

UCS.00140016

+

400

+

Get RoleBinding failed

+

Failed to obtain the RoleBinding information.

+

UCS.00150001

+

400

+

Cluster policy validate failed.

+

Cluster policy verification failed.

+

UCS.00150002

+

400

+

ClusterGroup policy validate failed.

+

Cluster group policy verification failed.

+

UCS.00150003

+

400

+

Cluster has enable policy.

+

The policy has been enabled for the cluster.

+

UCS.00150004

+

400

+

ClusterGroup has enable policy.

+

The policy has been enabled for the cluster group.

+

UCS.00150005

+

400

+

Cluster not enable policy.

+

The policy is not enabled for the cluster.

+

UCS.00150006

+

400

+

ClusterGroup not enable policy.

+

The policy is not enabled for the cluster group.

+

UCS.00150007

+

500

+

Get policy job failed.

+

Failed to obtain the policy task.

+

UCS.01000001

+

400

+

Failed to obtain the user information.

+

Failed to obtain the user information.

+

UCS.01000002

+

429

+

The throttling threshold has been reached.

+

Throttling threshold reached.

+

UCS.01000003

+

401

+

Authorization failed.

+

Authorization failed.

+

UCS.01000004

+

403

+

Request forbidden.

+

Forbidden request.

+

UCS.01000005

+

500

+

Database operation failed.

+

Failed to operate the database.

+

UCS.01000006

+

500

+

Server internal error.

+

Internal server error.

+

UCS.01000007

+

500

+

Data transform error.

+

Data conversion failed.

+

UCS.01000008

+

500

+

Error add event.

+

Failed to add the event.

+

UCS.01000009

+

500

+

Data unmarshal error.

+

Failed to deserialize data.

+

UCS.01000010

+

500

+

Data marshal error.

+

Failed to serialize data.

+

UCS.01000011

+

400

+

Bad query parameter value.

+

Invalid request parameter.

+

UCS.01000012

+

400

+

Invalid request body.

+

Invalid request body.

+

UCS.01000013

+

404

+

No requested resources found.

+

The requested resource cannot be found.

+

UCS.01000014

+

500

+

Failed to encrypt data.

+

Data encryption failed.

+

UCS.01000015

+

500

+

Failed to decrypt data.

+

Data decryption failed.

+

UCS.01000016

+

400

+

Invalid header value.

+

Invalid request header.

+

UCS.01000017

+

400

+

Insufficient quota

+

Insufficient quota.

+

UCS.01000018

+

400

+

Quota info validate failed

+

Quota parameter verification failed.

+

UCS.01000019

+

500

+

Quota update failed

+

Quota update failed.

+

UCS.01010001

+

500

+

Failed to get iam connection.

+

IAM connection failed.

+

UCS.01010002

+

500

+

Failed to get project token by agency

+

Failed to obtain the project token through the agency.

+

UCS.01010003

+

403

+

No access permission. Please contact the administrator.

+

No permissions.

+

UCS.01010004

+

400

+

get deployment region's projectID error

+

Failed to obtain the project ID.

+

UCS.01010005

+

400

+

get IAM agency's token error

+

Failed to obtain the agency token.

+

UCS.01010006

+

400

+

fail to get iam pdp authorize result

+

Failed to obtain the PDP authentication result.

+

UCS.01010007

+

403

+

iam pdp authentication denied

+

PDP authentication rejected.

+

UCS.01010008

+

403

+

iam rbac authentication denied

+

RBAC authentication rejected.

+

UCS.01020001

+

500

+

Failed to get aeskey.

+

Failed to obtain the aeskey.

+

UCS.01020002

+

500

+

Failed to get certs.

+

Failed to obtain the certificate.

+

UCS.01020003

+

500

+

Failed to create certs.

+

Failed to create the certificate.

+

UCS.01020004

+

500

+

Failed to delete certs.

+

Failed to delete the certificate.

+

UCS.01030001

+

404

+

Cluster Not Found.

+

No clusters found.

+

UCS.01030002

+

400

+

Failed to obtain the cluster information.

+

Failed to obtain the cluster information.

+

UCS.01030003

+

409

+

The same cluster already exists.

+

The cluster name already exists.

+

UCS.01030004

+

400

+

Cluster status is unavailable, please fix cluster first.

+

The cluster is unavailable.

+

UCS.01030005

+

403

+

No authorization for cluster

+

Failed to authorize the cluster.

+

UCS.01030006

+

400

+

Create resource job for cluster error

+

Failed to create a resource job in the cluster.

+

UCS.01030007

+

400

+

Create on-demand order for cluster error

+

Failed to create the pay-per-use order.

+

UCS.01030008

+

400

+

Cluster kubeconfig format error.

+

Incorrect kubeconfig format of the cluster.

+

UCS.01030009

+

400

+

This cluster does not support unregister

+

The cluster does not support unregistration.

+

UCS.01030010

+

400

+

Failed to obtain cce cluster information.

+

Failed to obtain the CCE cluster information.

+

UCS.01030011

+

400

+

Cluster category not supported

+

The cluster type is not supported.

+

UCS.01030012

+

400

+

Register cce cluster error

+

Failed to register the CCE cluster.

+

UCS.01030013

+

400

+

Register attached cluster error

+

Failed to register the attached cluster.

+

UCS.01030014

+

400

+

Register on-premise cluster error

+

Failed to register the on-premises cluster.

+

UCS.01030015

+

100

+

Register multi cloud cluster error

+

Failed to register the multi-cloud cluster.

+

UCS.01030016

+

400

+

Cluster has been frozen

+

The cluster has been frozen.

+

UCS.01050001

+

400

+

RecordSet create failed.

+

Failed to create the record set.

+

UCS.01080001

+

400

+

Failed to obtain the federation information.

+

Failed to obtain the federation information.

+

UCS.01080002

+

400

+

Cluster group has federalized.

+

Federation has been enabled for the fleet.

+

UCS.01080003

+

500

+

Cluster group federation failed.

+

Federation operation failed.

+

UCS.01080004

+

400

+

Cluster group federation validate failed.

+

Failed to enable federation verification.

+

UCS.01080005

+

400

+

Retry join all clusters to federation failed.

+

Failed to federate all clusters again.

+

UCS.01080006

+

400

+

Cluster group has not been federalized.

+

Federation is not enabled for the fleet.

+

UCS.01080007

+

400

+

Retry join cluster to federation failed.

+

Failed to add the cluster to the federation again.

+

UCS.01090001

+

400

+

Failed to obtain the mesh information.

+

Failed to obtain the mesh information.

+

UCS.01100001

+

403

+

No authorization for cluster group

+

The fleet is not authorized.

+

UCS.01100002

+

400

+

associate cluster with clustergroup error

+

Failed to add the cluster to the fleet.

+

UCS.01100003

+

400

+

associate cluster with rule error

+

Failed to associate the permission policy with the fleet.

+

UCS.01100004

+

409

+

The same clustergroup already exists.

+

The fleet name already exists.

+

UCS.01100005

+

404

+

ClusterGroup Not Found.

+

The fleet does not exist.

+

UCS.01100006

+

400

+

Cluster number in fleet exceed limit.

+

Too many clusters in the fleet.

+

UCS.01100007

+

400

+

Update associated clusters validate failed

+

Failed to verify the update of the associated cluster.

+

UCS.01110001

+

400

+

resource notification to SMN error

+

Failed to send notifications to SMN.

+

UCS.01120001

+

400

+

Create ClusterRole failed

+

Failed to create a ClusterRole.

+

UCS.01120002

+

400

+

Delete ClusterRole failed

+

Failed to delete a ClusterRole.

+

UCS.01120003

+

400

+

Update ClusterRole failed

+

Failed to update a ClusterRole.

+

UCS.01120004

+

400

+

Get ClusterRole failed

+

Failed to obtain the ClusterRole information.

+

UCS.01120005

+

400

+

Create ClusterRoleBinding failed

+

Failed to create a ClusterRoleBinding.

+

UCS.01120006

+

400

+

Delete ClusterRoleBinding failed

+

Failed to delete a ClusterRoleBinding.

+

UCS.01120007

+

400

+

Update ClusterRoleBinding failed

+

Failed to update a ClusterRoleBinding.

+

UCS.01120008

+

400

+

Get ClusterRoleBinding failed

+

Failed to obtain the ClusterRoleBinding information.

+

UCS.01120009

+

400

+

Create Role failed

+

Failed to create a role.

+

UCS.01120010

+

400

+

Delete Role failed

+

Failed to delete a role.

+

UCS.01120011

+

400

+

Update Role failed

+

Failed to update a role.

+

UCS.01120012

+

400

+

Get Role failed

+

Failed to obtain the role information.

+

UCS.01120013

+

400

+

Create RoleBinding failed

+

Failed to create a RoleBinding.

+

UCS.01120014

+

400

+

Delete RoleBinding failed

+

Failed to delete a RoleBinding.

+

UCS.01120015

+

400

+

Update RoleBinding failed

+

Failed to update a RoleBinding.

+

UCS.01120016

+

400

+

Get RoleBinding failed

+

Failed to obtain the RoleBinding information.

+

UCS.01130001

+

400

+

policy management create reconcile job failed

+

Failed to create a coordination job in policy management.

+

UCS.01130002

+

400

+

policy management create disable job failed

+

Failed to create a disabling job in policy management.

+

UCS.01130003

+

400

+

cluster policy validate failed.

+

Cluster policy verification failed.

+

UCS.01130004

+

400

+

clusterGroup policy validate failed.

+

Cluster group policy verification failed.

+

UCS.01130005

+

400

+

cluster policy management is in installing or closing status

+

Cluster policy management is being installed or has been disabled.

+

UCS.01130006

+

400

+

cluster group policy management is in installing or closing status

+

Cluster group policy management is being installed or has been disabled.

+
+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/JoinGroup.html b/docs/ucs/api-ref/JoinGroup.html new file mode 100644 index 000000000..922f86769 --- /dev/null +++ b/docs/ucs/api-ref/JoinGroup.html @@ -0,0 +1,137 @@ + + +

Adding a Cluster to a Fleet

+

Function

This API is used to add a cluster to a fleet.

+
+

URI

POST /v1/clusters/{clusterid}/join

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

clusterGroupID

+

No

+

String

+

ID of the fleet that the cluster will be added to

+
+
+
+

Response Parameters

None

+
+

Example Requests

Adding a cluster to a fleet

+
{
+  "clustergroupID" : "49077339-f1cd-11ec-a2be-0255ac1001c2"
+}
+
+

Example Responses

Status code: 200

+

The cluster has been added to the fleet.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been added to the fleet.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/LeaveGroup.html b/docs/ucs/api-ref/LeaveGroup.html new file mode 100644 index 000000000..c096f1a4f --- /dev/null +++ b/docs/ucs/api-ref/LeaveGroup.html @@ -0,0 +1,114 @@ + + +

Removing a Cluster from a Fleet

+

Function

This API is used to remove a cluster from a fleet.

+
+

URI

POST /v1/clusters/{clusterid}/unjoin

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

None

+
+

Example Requests

None

+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been removed from the fleet.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ListClusterGroup.html b/docs/ucs/api-ref/ListClusterGroup.html new file mode 100644 index 000000000..0e2f77804 --- /dev/null +++ b/docs/ucs/api-ref/ListClusterGroup.html @@ -0,0 +1,427 @@ + + +

Obtaining the Fleet List

+

Function

This API is used to obtain the fleet list.

+
+

URI

GET /v1/clustergroups

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

limit

+

No

+

Integer

+

The number of records allowed on each page when the list is queried by page. The default value is -1.

+

offset

+

No

+

Integer

+

Start offset when the list is queried by page. The default value is 0.

+

order_by

+

No

+

String

+

Sorting parameter when the list is queried by page. The value can be create_at or update_at.

+

order

+

No

+

String

+

Sorting order when the list is queried by page. The value can be desc or asc.

+
+
+
+

Request Parameter

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

items

+

Array of ClusterGroup objects

+

Fleet list

+

total

+

Integer

+

Total number of records on all pages

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 ClusterGroup

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at ClusterGroup and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information about the fleet. Metadata is a collection of attributes.

+

spec

+

ClusterGroupSpec object

+

Details about the fleet. UCS creates or updates the fleet based on spec.

+

status

+

ClusterGroupStatus object

+

Fleet status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Cluster ID

+

name

+

String

+

Cluster name

+

labels

+

Map<String,String>

+

Labels

+

creationTimestamp

+

String

+

Creation time. It is the UTC time in the RFC 3339 format.

+

updateTimestamp

+

String

+

Update timestamp

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 ClusterGroupSpec

Parameter

+

Type

+

Description

+

ruleNamespaces

+

Array of strings

+

List of namespaces associated with a permission policy

+

federationId

+

String

+

ID of the federation enabled for the fleet

+

description

+

String

+

Description

+

dnsSuffix

+

Array of strings

+

DNS suffix of the federation corresponding to the fleet. This parameter is visible after federation is enabled.

+

federationExpirationTimestamp

+

String

+

Federation expiration timestamp

+

policyId

+

String

+

Policy management ID

+

federationVersion

+

String

+

Version of the federation enabled for the fleet

+
+
+ +
+ + + + + + + + + +
Table 7 ClusterGroupStatus

Parameter

+

Type

+

Description

+

conditions

+

Array of ClusterGroupCondition objects

+

Federation or permission policy information for the fleet

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 ClusterGroupCondition

Parameter

+

Type

+

Description

+

type

+

String

+

Type. Options:

+
  • Federation: Federation is enabled for the fleet.

    +
  • Policy: The permission policy is enabled for the fleet.

    +
+

status

+

String

+

Status of the federation or permission policy enabled for a fleet

+

reason

+

String

+

Cause of a status

+

message

+

String

+

Status information

+

lastTransitionTime

+

String

+

Status update time

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

The fleet list has been obtained.

+
{
+  "items" : [ {
+    "kind" : "ClusterGroup",
+    "apiVersion" : "v1",
+    "metadata" : {
+      "name" : "cluster-test",
+      "uid" : "bffbb35b-7949-11ee-886c-0255ac100037",
+      "creationTimestamp" : "2023-11-02 06:33:35.558128 +0000 UTC",
+      "updateTimestamp" : "2023-11-14 06:20:20.446476 +0000 UTC"
+    },
+    "spec" : {
+      "federationId" : "e2f27cc6-82b5-11ee-84e3-0255ac100032",
+      "federationVersion" : "v1.7.0-t1109",
+      "dnsSuffix" : [ "www.oidc.com" ]
+    },
+    "status" : {
+      "conditions" : [ {
+        "type" : "Federation",
+        "status" : "Unavailable",
+        "reason" : "FederationUnavailable",
+        "message" : "component volcano-scheduler is unhealthy",
+        "lastTransitionTime" : "0001-01-01T00:00:00Z"
+      } ]
+    }
+  }, {
+    "kind" : "ClusterGroup",
+    "apiVersion" : "v1",
+    "metadata" : {
+      "name" : "cluster-dev",
+      "uid" : "4557ad49-22bf-11ee-b0c9-0255ac10004b",
+      "creationTimestamp" : "2023-07-15 03:25:39.253589 +0000 UTC",
+      "updateTimestamp" : "2023-10-19 11:52:14.509405 +0000 UTC"
+    },
+    "spec" : { },
+    "status" : { }
+  }, {
+    "kind" : "ClusterGroup",
+    "apiVersion" : "v1",
+    "metadata" : {
+      "name" : "test0131",
+      "uid" : "108f5981-a105-11ed-a23e-0255ac100032",
+      "creationTimestamp" : "2023-01-31 01:17:44.309185 +0000 UTC",
+      "updateTimestamp" : "2023-06-29 01:02:28.78095 +0000 UTC"
+    },
+    "spec" : { },
+    "status" : { }
+  } ],
+  "total" : 3
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The fleet list has been obtained.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ListManagedClusters.html b/docs/ucs/api-ref/ListManagedClusters.html new file mode 100644 index 000000000..3f339b623 --- /dev/null +++ b/docs/ucs/api-ref/ListManagedClusters.html @@ -0,0 +1,977 @@ + + +

Obtaining the CCE Cluster List of a Tenant

+

Function

This API is used to obtain the CCE cluster list of the current tenant.

+
+

URI

GET /v1/managedclusters

+ +
+ + + + + + + + + + + +
Table 1 Query parameter

Parameter

+

Mandatory

+

Type

+

Description

+

unimported

+

No

+

Boolean

+

Whether to register a cluster with UCS

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Parameter in the response body

Parameter

+

Type

+

Description

+

[Array]

+

Array of Cluster objects

+

CCE clusters that are not registered with UCS are returned.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Cluster

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at Cluster and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information about the cluster. Metadata is a collection of attributes.

+

spec

+

ClusterSpec object

+

Detailed description of the cluster. UCS creates or updates the cluster based on spec.

+

status

+

ClusterStatus object

+

Cluster status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Resource ID

+

name

+

String

+

Resource name

+

generateName

+

String

+

If no name is provided, the server uses the prefix to generate a unique name.

+

namespace

+

String

+

Namespace

+

labels

+

Map<String,String>

+

Labels

+

annotations

+

Map<String,String>

+

Annotations

+

creationTimestamp

+

String

+

Creation time

+

updateTimestamp

+

String

+

Update time

+

resourceVersion

+

String

+

Internal version of a resource

+

generation

+

String

+

Generation of the desired resource state

+

managedFields

+

Array of ManagedFieldsEntry objects

+

Fields managed by workflows

+

ownerReferences

+

Array of OwnerReference objects

+

Ownership, dependencies, and garbage collection mechanism of objects. It supports resource management by the controller.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 ManagedFieldsEntry

Parameter

+

Type

+

Description

+

manager

+

String

+

Manager name

+

operation

+

String

+

Operation type that causes this entry to be created. The value can only be Apply or Update.

+

apiVersion

+

String

+

Resource API version used by a manager for defining fields

+

time

+

String

+

Timestamp when this entry was created or last updated

+

fieldsType

+

String

+

Field structure format. The value is fixed at FieldsV1.

+

fieldsV1

+

Object

+

Information about the managed fields

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 OwnerReference

Parameter

+

Type

+

Description

+

apiVersion

+

String

+

API version of the referent

+

kind

+

String

+

Type of the referent

+

name

+

String

+

Name of the referent

+

uid

+

String

+

UID of the referent

+

controller

+

Boolean

+

If the value is true, this reference points to the controller that manages the resource.

+

blockOwnerDeletion

+

Boolean

+

If the value is true and the owner has a finalizer named foregroundDeletion, the owner cannot be deleted until this reference is removed.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 ClusterSpec

Parameter

+

Type

+

Description

+

syncMode

+

String

+

Synchronization mode between the cluster and the Karmada control plane

+

clusterGroupID

+

String

+

Fleet ID

+

manageType

+

String

+

Cluster type. The options are as follows:

+
  • grouped: clusters added to a fleet
  • discrete: clusters not in any fleet
+

ruleNamespaces

+

Array of RuleNamespace objects

+

List of namespaces associated with permission policies in a cluster

+

apiEndpoint

+

String

+

API server address

+

secretRef

+

LocalSecretReference object

+

Secret information for accessing a cluster

+

insecureSkipTLSVerification

+

Boolean

+

Whether to skip HTTPS verification

+

proxyURL

+

String

+

Proxy URL

+

provider

+

String

+

Provider

+

type

+

String

+

Type

+

category

+

String

+

Category

+

enableDistMgt

+

Boolean

+

Whether CCE Turbo clusters can manage edge infrastructure

+

region

+

String

+

Region

+

country

+

String

+

Country

+

city

+

String

+

City (consistent with the country)

+

projectID

+

String

+

Project ID

+

projectName

+

String

+

Project name

+

zone

+

String

+

Zone

+

taints

+

Array of Taint objects

+

Taints

+

IsDownloadedCert

+

Boolean

+

Whether the certificate has been downloaded

+

policyId

+

String

+

Policy management ID

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 RuleNamespace

Parameter

+

Type

+

Description

+

rules

+

Array of RuleInfo objects

+

Permission policy list

+

namespaces

+

Array of strings

+

Namespace list

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 RuleInfo

Parameter

+

Type

+

Description

+

ruleID

+

String

+

Permission policy ID

+

ruleName

+

String

+

Permission policy name

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 LocalSecretReference

Parameter

+

Type

+

Description

+

namespace

+

String

+

Namespace that the resource belongs to

+

name

+

String

+

Resource name

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 12 Taint

Parameter

+

Type

+

Description

+

key

+

String

+

Key

+

value

+

String

+

Value

+

effect

+

String

+

Effect information

+

timeadded

+

String

+

Timestamp information

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 ClusterStatus

Parameter

+

Type

+

Description

+

kubernetesVersion

+

String

+

Kubernetes version

+

conditions

+

Array of ConditionStatus objects

+

Conditions

+

nodeSummary

+

NodeSummary object

+

Node statistics

+

resourceSummary

+

ResourceSummary object

+

Resource statistics

+

endpoints

+

Endpoint object

+

Endpoint

+

phase

+

String

+

Phase information

+

reason

+

String

+

Reason of the last change

+

message

+

String

+

Details about the last state transition

+

arrearFreeze

+

String

+

Frozen due to arrears

+

policeFreeze

+

String

+

Frozen for legal reasons

+

apiEnablements

+

Array of APIEnablement objects

+

List of enabled resources

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14 ConditionStatus

Parameter

+

Type

+

Description

+

type

+

String

+

Status type

+

status

+

String

+

Status

+

observedgeneration

+

Integer

+

Version of a status object

+

lastTransitionTime

+

String

+

Time of the last transition

+

reason

+

String

+

Cause of status

+

message

+

String

+

Status information

+
+
+ +
+ + + + + + + + + + + + + +
Table 15 NodeSummary

Parameter

+

Type

+

Description

+

totalNum

+

String

+

The number of all nodes in a cluster

+

readyNum

+

String

+

The number of ready nodes in a cluster

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 16 ResourceSummary

Parameter

+

Type

+

Description

+

allocatable

+

map<string, object>

+

Allocatable resources

+

allocating

+

map<string, object>

+

Resources in allocation

+

allocated

+

map<string, object>

+

Allocated resources

+

capacity

+

map<string, object>

+

Total resources

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 17 Endpoint

Parameter

+

Type

+

Description

+

url

+

String

+

URL

+

type

+

String

+

Port type

+

status

+

String

+

Port status

+
+
+ +
+ + + + + + + + + + + + + +
Table 18 APIEnablement

Parameter

+

Type

+

Description

+

groupVersion

+

String

+

Resource group and version

+

resources

+

Array of APIResource objects

+

Resource type and name

+
+
+ +
+ + + + + + + + + + + + + +
Table 19 APIResource

Parameter

+

Type

+

Description

+

name

+

String

+

Resource name

+

kind

+

String

+

Resource category

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

CCE clusters that are not registered with UCS are returned.

+
[ {
+  "kind" : "Cluster",
+  "apiVersion" : "v1",
+  "metadata" : {
+    "name" : "cluster-test",
+    "uid" : "57ef11e7-7d72-11ee-a590-0255ac100b05",
+    "creationTimestamp" : "2023-11-07T13:34:15Z",
+    "labels" : {
+      "FeatureGates" : "elbv3,SupportClientCertificateRevocation,xGPU"
+    }
+  },
+  "spec" : {
+    "syncMode" : "",
+    "apiEndpoint" : "https://cloudmonitoralarm.cidc-rp-12.joint.cmecloud.cn",
+    "provider" : "cmccloud",
+    "type" : "cce",
+    "category" : "self",
+    "region" : "cidc-rp-12",
+    "country" : "CN",
+    "city" : "150900",
+    "projectID" : "b6315dd3d0ff4be5b31a963256794989",
+    "projectName" : "cidc-rp-12",
+    "IsDownloadedCert" : false
+  },
+  "status" : {
+    "kubernetesVersion" : "v1.27",
+    "conditions" : [ {
+      "type" : "Ready",
+      "status" : "True",
+      "lastTransitionTime" : "2023-11-27T12:42:24.182645394+08:00",
+      "reason" : "ClusterAvailable"
+    }, {
+      "type" : "Cluster",
+      "status" : "Available",
+      "lastTransitionTime" : "2023-11-27T12:42:24.182646152+08:00",
+      "reason" : "ClusterAvailable"
+    } ],
+    "endpoints" : [ {
+      "url" : "https://192.168.1.44:5443",
+      "type" : "Internal"
+    } ],
+    "phase" : "Available"
+  }
+} ]
+
+

Status Codes

+
+ + + + + + + + + + +

Status Code

+

Description

+

200

+

CCE clusters that are not registered with UCS are returned.

+

400

+

Client request error. The server could not execute the request.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ListRegisteredClusterVersions.html b/docs/ucs/api-ref/ListRegisteredClusterVersions.html new file mode 100644 index 000000000..f5778c47a --- /dev/null +++ b/docs/ucs/api-ref/ListRegisteredClusterVersions.html @@ -0,0 +1,85 @@ + + +

Querying the Version List of Clusters That Can Be Connected to UCS

+

Function

This API is used to query the version list of clusters that can be connected to UCS.

+
+

URI

GET /v1/config/registeredclusterversions

+
+

Request Parameter

+
+ + + + + + + + + + + +
Table 1 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameter

Status code: 200

+ +
+ + + + + + + + + +
Table 2 Parameter in the response body

Parameter

+

Type

+

Description

+

versions

+

Array of strings

+

Cluster version list

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Version list of clusters that can be connected to UCS

+
{
+  "versions" : [ "v1.19", "v1.20", "v1.21", "v1.22", "v1.23", "v1.24", "v1.25" ]
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

Version list of clusters that can be connected to UCS

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ListRule.html b/docs/ucs/api-ref/ListRule.html new file mode 100644 index 000000000..7a1293647 --- /dev/null +++ b/docs/ucs/api-ref/ListRule.html @@ -0,0 +1,325 @@ + + +

Obtaining the Permission Policy List

+

Function

This API is used to obtain the permission policy list.

+
+

URI

GET /v1/permissions/rules

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

limit

+

No

+

Integer

+

The number of records allowed on each page when the list is queried by page. The default value is -1.

+

offset

+

No

+

Integer

+

Start offset when the list is queried by page. The default value is 0.

+

order_by

+

No

+

String

+

Sorting parameter when the list is queried by page. The value can be create_at or update_at.

+

order

+

No

+

String

+

Sorting order when the list is queried by page. The value can be desc or asc.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information

+

Minimum length: 1

+

Maximum length: 16384

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

items

+

Array of Rule objects

+

Permission policy list

+

total

+

Integer

+

Total number of records on all pages

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 Rule

Parameter

+

Type

+

Description

+

kind

+

String

+

API type.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information.

+

spec

+

RuleSpec object

+

Details about the permission policy. UCS creates or updates the permission policy by spec.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Cluster ID

+

name

+

String

+

Cluster name

+

labels

+

Map<String,String>

+

Labels

+

creationTimestamp

+

String

+

Creation time. It is the UTC time in the RFC 3339 format.

+

updateTimestamp

+

String

+

Update timestamp

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 6 RuleSpec

Parameter

+

Type

+

Description

+

iamuserids

+

Array of strings

+

Information of IAM users associated with a permission policy

+

type

+

String

+

Permission policy type. The value can be readonly, develop, admin, or custom.

+

contents

+

Array of Content objects

+

Permission policy content

+

description

+

String

+

Permission policy description

+

Minimum length: 0

+

Maximum length: 255

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 Content

Parameter

+

Type

+

Description

+

verbs

+

Array of strings

+

Action list

+

resources

+

Array of strings

+

Resource list

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Permission policy list

+
{
+  "items" : [ {
+    "metadata" : {
+      "name" : "admin",
+      "uid" : "3dcdef78-65bb-11ee-bdf2-0255ac100033",
+      "creationTimestamp" : "2023-10-08 09:15:36.526016 +0000 UTC",
+      "updateTimestamp" : "2023-10-08 09:15:36.526016 +0000 UTC"
+    },
+    "spec" : {
+      "iamUserIDs" : [ "873395a21c8d4d8ba9e37d6d32debc41" ],
+      "type" : "admin",
+      "contents" : [ {
+        "verbs" : [ "*" ],
+        "resources" : [ "*" ]
+      } ]
+    }
+  } ],
+  "total" : 1
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Permission policy list

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/PARAMETERS.txt b/docs/ucs/api-ref/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/docs/ucs/api-ref/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/docs/ucs/api-ref/RegisterCluster.html b/docs/ucs/api-ref/RegisterCluster.html new file mode 100644 index 000000000..1f9521126 --- /dev/null +++ b/docs/ucs/api-ref/RegisterCluster.html @@ -0,0 +1,373 @@ + + +

Registering a Cluster

+

Function

This API is used to register a cluster. Third-party clusters and CCE clusters can be registered.

+
+

URI

POST /v1/clusters

+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 1 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

kind

+

No

+

String

+

Resource type. For a registered cluster, set this parameter to Cluster.

+

This parameter is optional for a CCE cluster and mandatory for an attached cluster.

+

apiVersion

+

No

+

String

+

API version. The current version is v1.

+

This parameter is optional for a CCE cluster and mandatory for an attached cluster.

+

metadata

+

Yes

+

metadata object

+

Cluster metadata information

+

spec

+

Yes

+

spec object

+

Cluster specifications

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 metadata

Parameter

+

Mandatory

+

Type

+

Description

+

uid

+

No

+

String

+

Cluster ID. This parameter is used only when a CCE cluster is imported for registration. For other types of clusters, you do not need to set this parameter.

+

name

+

No

+

String

+

CCE cluster name or a custom cluster name (for other types of clusters).

+

labels

+

No

+

Map<String,String>

+

Label information. This parameter can be left blank. If this parameter is not left blank, the value must comply with the Kubernetes label specifications. A maximum of 100 labels are supported.

+

annotations

+

No

+

Map<String,String>

+

Cluster annotations. The kubeconfig field is mandatory for an attached cluster, and its value is the content of the kubeconfig file.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 spec

Parameter

+

Mandatory

+

Type

+

Description

+

clusterGroupID

+

No

+

String

+

Fleet ID.

+

category

+

Yes

+

String

+

Cluster category. The value must meet the requirements for provider and type. For details, see Cluster Categories and Types.

+

type

+

Yes

+

String

+

Cluster type. The value must meet the requirements for provider and category. For details, see Cluster Categories and Types.

+

provider

+

No

+

String

+

Provider. The value must meet the requirements for category and type. For details, see Cluster Categories and Types.

+

country

+

No

+

String

+

Country code

+

This parameter is optional for a CCE cluster and mandatory for an attached cluster.

+

city

+

No

+

String

+

City code (consistent with the country)

+

This parameter is optional for a CCE cluster and mandatory for an attached cluster.

+

region

+

No

+

String

+

Region information. This parameter is used only when a CCE cluster is imported for registration. You can obtain the value from the region field in the API for querying CCE clusters that have not been registered with UCS.

+

projectID

+

No

+

String

+

Project ID. This parameter is used only when a CCE cluster is imported for registration. You can obtain the value from the projectID field in the API for querying CCE clusters that have not been registered with UCS.

+

manageType

+

Yes

+

String

+

Cluster management type. Options:

+
  • grouped: clusters added to a fleet
  • discrete: clusters not in any fleet
+

network

+

No

+

NetworkConfig object

+

Network configuration of a multi-cloud cluster. You do not need to set this parameter for other types of clusters.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 NetworkConfig

Parameter

+

Mandatory

+

Type

+

Description

+

podCIDR

+

No

+

String

+

Container CIDR block

+

serviceCIDR

+

No

+

String

+

Service CIDR block

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + +
Table 6 Parameter in the response body

Parameter

+

Type

+

Description

+

uid

+

String

+

Cluster ID

+
+
+
+

Example Requests

  • Registering a CCE cluster
    {
    +  "metadata" : {
    +    "uid" : "44052cdd-8cd2-11ee-abd1-0255ac1001bd"
    +  },
    +  "spec" : {
    +    "region" : "cidc-rp-12",
    +    "category" : "self",
    +    "type" : "turbo",
    +    "projectID" : "05495693df80d3c92fa1c01795c2be02",
    +    "clusterGroupID" : "",
    +    "manageType" : "discrete"
    +  }
    +}
    +
+
+

Example Responses

Status code: 201

+

The cluster has been registered, and the ID of the registered cluster is returned.

+
{
+  "uid" : "b0d1ecb5-7947-11ee-9467-0255ac1001bf"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

201

+

The cluster has been registered, and the ID of the registered cluster is returned.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

409

+

There was a request conflict.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/RegisterClusterGroup.html b/docs/ucs/api-ref/RegisterClusterGroup.html new file mode 100644 index 000000000..c212d063f --- /dev/null +++ b/docs/ucs/api-ref/RegisterClusterGroup.html @@ -0,0 +1,205 @@ + + +

Creating a Fleet

+

Function

This API is used to create a fleet. You can select clusters during fleet creation.

+
+

URI

POST /v1/clustergroups

+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 1 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

metadata

+

Yes

+

RegisterClusterGroupObjectMeta object

+

Fleet metadata information

+

spec

+

No

+

RegisterClusterGroupSpec object

+

Attributes

+
+
+ +
+ + + + + + + + + + + +
Table 3 RegisterClusterGroupObjectMeta

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Fleet name

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 RegisterClusterGroupSpec

Parameter

+

Mandatory

+

Type

+

Description

+

clusterIds

+

No

+

Array of strings

+

IDs of associated clusters

+

description

+

No

+

String

+

Fleet description

+
+
+
+

Response Parameters

Status code: 201

+ +
+ + + + + + + + + +
Table 5 Parameter in the response body

Parameter

+

Type

+

Description

+

uid

+

String

+

Fleet UID

+
+
+
+

Example Requests

Creating a fleet and (optional) adding clusters to the fleet

+
{
+  "metadata" : {
+    "name" : "group02281605"
+  },
+  "spec" : {
+    "clusterIds" : [ "514c1a3c-8ec7-11ec-b384-0255ac100189", "d4804da3-8f03-11ec-b384-0255ac100189" ],
+    "description" : "aaaaaaaaa"
+  }
+}
+
+

Example Responses

Status code: 201

+

The UID of the fleet that has been created is returned.

+
{
+  "uid" : "6efb4a18-2fa4-11ee-ad1d-0255ac1001c4"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

201

+

The UID of the fleet that has been created is returned.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/RetryClusterActivation.html b/docs/ucs/api-ref/RetryClusterActivation.html new file mode 100644 index 000000000..205f123ac --- /dev/null +++ b/docs/ucs/api-ref/RetryClusterActivation.html @@ -0,0 +1,104 @@ + + +

Activating a Cluster

+

Function

This API is used to activate a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permission on the corresponding cluster. Otherwise, the authentication fails.

+
+

URI

PUT /v1/clusters/{clusterid}/activation

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+
+

Response Parameters

None

+
+

Example Requests

None

+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been activated for reconnection.

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ShowCluster.html b/docs/ucs/api-ref/ShowCluster.html new file mode 100644 index 000000000..6ca98cda3 --- /dev/null +++ b/docs/ucs/api-ref/ShowCluster.html @@ -0,0 +1,984 @@ + + +

Obtaining a Cluster

+

Function

This API is used to obtain a cluster. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the required permissions on the cluster. Otherwise, the authentication fails.

+
+

URI

GET /v1/clusters/{clusterid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at Cluster and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information about the cluster. Metadata is a collection of attributes.

+

spec

+

ClusterSpec object

+

Details about the cluster. UCS creates or updates the cluster based on spec.

+

status

+

ClusterStatus object

+

Cluster status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Resource ID

+

name

+

String

+

Resource name

+

generateName

+

String

+

If no name is provided, the server uses the prefix to generate a unique name.

+

namespace

+

String

+

Namespace

+

labels

+

Map<String,String>

+

Labels

+

annotations

+

Map<String,String>

+

Annotations

+

creationTimestamp

+

String

+

Creation time

+

updateTimestamp

+

String

+

Update time

+

resourceVersion

+

String

+

Internal version of a resource

+

generation

+

String

+

Generation of the desired resource state

+

managedFields

+

Array of ManagedFieldsEntry objects

+

Fields managed by workflows

+

ownerReferences

+

Array of OwnerReference objects

+

Ownership, dependencies, and garbage collection mechanism of objects. It supports resource management by the controller.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ManagedFieldsEntry

Parameter

+

Type

+

Description

+

manager

+

String

+

Manager name

+

operation

+

String

+

Operation type that causes this entry to be created. The value can only be Apply or Update.

+

apiVersion

+

String

+

Resource API version used by a manager for defining fields

+

time

+

String

+

Timestamp when this entry was created or last updated

+

fieldsType

+

String

+

Field structure format. The value is fixed at FieldsV1.

+

fieldsV1

+

Object

+

Information about the managed fields

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 OwnerReference

Parameter

+

Type

+

Description

+

apiVersion

+

String

+

API version of the referent

+

kind

+

String

+

Type of the referent

+

name

+

String

+

Name of the referent

+

uid

+

String

+

UID of the referent

+

controller

+

Boolean

+

If the value is true, this reference points to the controller that manages the resource.

+

blockOwnerDeletion

+

Boolean

+

If the value is true and the owner has a finalizer named foregroundDeletion, the owner cannot be deleted until this reference is removed.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 ClusterSpec

Parameter

+

Type

+

Description

+

syncMode

+

String

+

Synchronization mode between the cluster and the Karmada control plane

+

clusterGroupID

+

String

+

Fleet ID

+

manageType

+

String

+

Cluster type. The options are as follows:

+
  • grouped: clusters added to a fleet
  • discrete: clusters not in any fleet
+

ruleNamespaces

+

Array of RuleNamespace objects

+

List of namespaces associated with permission policies in a cluster

+

apiEndpoint

+

String

+

API server address

+

secretRef

+

LocalSecretReference object

+

Secret information for accessing a cluster

+

insecureSkipTLSVerification

+

Boolean

+

Whether to skip HTTPS verification

+

proxyURL

+

String

+

Proxy URL

+

provider

+

String

+

Provider

+

type

+

String

+

Type

+

category

+

String

+

Category

+

enableDistMgt

+

Boolean

+

Whether CCE Turbo clusters can manage edge infrastructure

+

region

+

String

+

Region

+

country

+

String

+

Country

+

city

+

String

+

City (consistent with the country)

+

projectID

+

String

+

Project ID

+

projectName

+

String

+

Project name

+

zone

+

String

+

Zone

+

taints

+

Array of Taint objects

+

Taints

+

IsDownloadedCert

+

Boolean

+

Whether the certificate has been downloaded

+

policyId

+

String

+

Policy management ID

+
+
+ +
+ + + + + + + + + + + + + +
Table 8 RuleNamespace

Parameter

+

Type

+

Description

+

rules

+

Array of RuleInfo objects

+

Permission policy list

+

namespaces

+

Array of strings

+

Namespace list

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 RuleInfo

Parameter

+

Type

+

Description

+

ruleID

+

String

+

Permission policy ID

+

ruleName

+

String

+

Permission policy name

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 LocalSecretReference

Parameter

+

Type

+

Description

+

namespace

+

String

+

Namespace that the resource belongs to

+

name

+

String

+

Resource name

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 11 Taint

Parameter

+

Type

+

Description

+

key

+

String

+

Key

+

value

+

String

+

Value

+

effect

+

String

+

Effect information

+

timeadded

+

String

+

Timestamp information

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12 ClusterStatus

Parameter

+

Type

+

Description

+

kubernetesVersion

+

String

+

Kubernetes version

+

conditions

+

Array of ConditionStatus objects

+

Conditions

+

nodeSummary

+

NodeSummary object

+

Node statistics

+

resourceSummary

+

ResourceSummary object

+

Resource statistics

+

endpoints

+

Endpoint object

+

Endpoint

+

phase

+

String

+

Phase information

+

reason

+

String

+

Reason of the last change

+

message

+

String

+

Details about the last state transition

+

arrearFreeze

+

String

+

Frozen due to arrears

+

policeFreeze

+

String

+

Frozen for legal reasons

+

apiEnablements

+

Array of APIEnablement objects

+

List of enabled resources

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 ConditionStatus

Parameter

+

Type

+

Description

+

type

+

String

+

Status type

+

status

+

String

+

Status

+

observedgeneration

+

Integer

+

Version of a status object

+

lastTransitionTime

+

String

+

Time of the last transition

+

reason

+

String

+

Cause of status

+

message

+

String

+

Status information

+
+
+ +
+ + + + + + + + + + + + + +
Table 14 NodeSummary

Parameter

+

Type

+

Description

+

totalNum

+

String

+

The number of all nodes in a cluster

+

readyNum

+

String

+

The number of ready nodes in a cluster

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 15 ResourceSummary

Parameter

+

Type

+

Description

+

allocatable

+

map<string, object>

+

Allocatable resources

+

allocating

+

map<string, object>

+

Resources in allocation

+

allocated

+

map<string, object>

+

Allocated resources

+

capacity

+

map<string, object>

+

Total resources

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 16 Endpoint

Parameter

+

Type

+

Description

+

internal

+

String

+

Internal network address.

+

external

+

String

+

External network address.

+

external_otc

+

String

+

Endpoint of the cluster to be accessed through API Gateway.

+
+
+ +
+ + + + + + + + + + + + + +
Table 17 APIEnablement

Parameter

+

Type

+

Description

+

groupVersion

+

String

+

Resource group and version

+

resources

+

Array of APIResource objects

+

Resource type and name

+
+
+ +
+ + + + + + + + + + + + + +
Table 18 APIResource

Parameter

+

Type

+

Description

+

name

+

String

+

Resource name

+

kind

+

String

+

Resource category

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Cluster information, such as its status and synchronization mode between the cluster and Karmada control plane

+
{
+  "kind" : "Cluster",
+  "apiVersion" : "v1",
+  "metadata" : {
+    "name" : "test-cluster",
+    "uid" : "b0d1ecb5-7947-11ee-9467-0255ac1001bf",
+    "creationTimestamp" : "2023-11-02T06:36:14Z",
+    "labels" : {
+      "FeatureGates" : "elbv3,SupportClientCertificateRevocation,xGPU"
+    },
+    "annotations" : {
+      "vpcId" : "11c9fe72-5a90-4295-bcfe-774726fb9066"
+    }
+  },
+  "spec" : {
+    "syncMode" : "",
+    "clusterGroupID" : "bffbb35b-7949-11ee-886c-0255ac100037",
+    "manageType" : "grouped",
+    "provider" : "cmccloud",
+    "type" : "cce",
+    "category" : "self",
+    "region" : "cidc-rp-12",
+    "country" : "CN",
+    "city" : "150900",
+    "projectID" : "b6315dd3d0ff4be5b31a963256794989",
+    "projectName" : "cidc-rp-12",
+    "IsDownloadedCert" : false,
+    "operatorNamespace" : "2cd7ebd02e4743eba4e6342c09e49344"
+  },
+  "status" : {
+    "kubernetesVersion" : "v1.25",
+    "conditions" : [ {
+      "type" : "Ready",
+      "status" : "True",
+      "lastTransitionTime" : "2023-11-27T11:05:09+08:00",
+      "reason" : "ClusterAvailable"
+    }, {
+      "type" : "Cluster",
+      "status" : "Available",
+      "lastTransitionTime" : "2023-11-27T11:05:09+08:00",
+      "reason" : "ClusterAvailable"
+    }, {
+      "type" : "Federation",
+      "status" : "Federalized",
+      "lastTransitionTime" : "2023-11-14T14:31:58.744215+08:00"
+    } ],
+    "endpoints" : [ {
+      "url" : "https://192.168.1.251:5443",
+      "type" : "Internal"
+    } ],
+    "phase" : "Available",
+    "arrearFreeze" : "false",
+    "policeFreeze" : "false"
+  }
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Cluster information, such as its status and synchronization mode between the cluster and Karmada control plane

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ShowClusterAccessInfo.html b/docs/ucs/api-ref/ShowClusterAccessInfo.html new file mode 100644 index 000000000..441bffdfc --- /dev/null +++ b/docs/ucs/api-ref/ShowClusterAccessInfo.html @@ -0,0 +1,151 @@ + + +

Obtaining Cluster Access Information

+

Function

This API is used to obtain the cluster access information. The cluster ID must comply with the Kubernetes UUID format rules, and you must have the permission to query the corresponding cluster. Otherwise, the authentication fails. The agent certificate can be downloaded only once. This API is only used to obtain the access information of third-party clusters. If a CCE cluster ID is transferred, 400 will be returned.

+
+

URI

GET /v1/clusters/{clusterid}/accessinfo

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

vpcendpoint

+

No

+

String

+

IP address of the VPC endpoint. This parameter is mandatory for clusters accessed over the private network. The third-party network and the VPC network must be connected.

+

region

+

No

+

String

+

Access region. This parameter is mandatory for clusters accessed over the private network.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 3 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 4 Parameter in the response body

Parameter

+

Type

+

Description

+

[Array]

+

Array of strings

+

The cluster access information is returned. If the API has been called, the message "Downloaded" is returned.

+
+
+
+

Example Requests

None

+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster access information is returned. If the API has been called, the message "Downloaded" is returned.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ShowClusterGroup.html b/docs/ucs/api-ref/ShowClusterGroup.html new file mode 100644 index 000000000..b7efcab24 --- /dev/null +++ b/docs/ucs/api-ref/ShowClusterGroup.html @@ -0,0 +1,354 @@ + + +

Obtaining a Fleet

+

Function

This API is used to obtain a fleet.

+
+

URI

GET /v1/clustergroups/{clustergroupid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameter

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at ClusterGroup and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information about the fleet. Metadata is a collection of attributes.

+

spec

+

ClusterGroupSpec object

+

Details about the fleet. UCS creates or updates the fleet based on spec.

+

status

+

ClusterGroupStatus object

+

Fleet status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Cluster ID

+

name

+

String

+

Cluster name

+

labels

+

Map<String,String>

+

Labels

+

creationTimestamp

+

String

+

Creation time. It is the UTC time in the RFC 3339 format.

+

updateTimestamp

+

String

+

Update timestamp

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ClusterGroupSpec

Parameter

+

Type

+

Description

+

ruleNamespaces

+

Array of strings

+

List of namespaces associated with a permission policy

+

federationId

+

String

+

ID of the federation enabled for the fleet

+

description

+

String

+

Description

+

dnsSuffix

+

Array of strings

+

DNS suffix of the federation corresponding to the fleet. This parameter is visible after federation is enabled.

+

federationExpirationTimestamp

+

String

+

Federation expiration timestamp

+

policyId

+

String

+

Policy management ID

+

federationVersion

+

String

+

Version of the federation enabled for the fleet

+
+
+ +
+ + + + + + + + + +
Table 6 ClusterGroupStatus

Parameter

+

Type

+

Description

+

conditions

+

Array of ClusterGroupCondition objects

+

Federation or permission policy information for the fleet

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 ClusterGroupCondition

Parameter

+

Type

+

Description

+

type

+

String

+

Type. Options:

+
  • Federation: Federation is enabled for the fleet.

    +
  • Policy: The permission policy is enabled for the fleet.

    +
+

status

+

String

+

Status of the federation or permission policy enabled for the fleet

+

reason

+

String

+

Cause of a status

+

message

+

String

+

Status information

+

lastTransitionTime

+

String

+

Status update time

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Fleet object

+
{
+  "kind" : "ClusterGroup",
+  "apiVersion" : "v1",
+  "metadata" : {
+    "name" : "cluster-test",
+    "uid" : "bffbb35b-7949-11ee-886c-0255ac100037",
+    "creationTimestamp" : "2023-11-02 06:33:35.558128 +0000 UTC",
+    "updateTimestamp" : "2023-11-14 06:20:20.446476 +0000 UTC"
+  },
+  "spec" : {
+    "federationId" : "e2f27cc6-82b5-11ee-84e3-0255ac100032",
+    "federationVersion" : "v1.7.0-t1109",
+    "dnsSuffix" : [ "www.oidc.com" ]
+  },
+  "status" : {
+    "conditions" : [ {
+      "type" : "Federation",
+      "status" : "Unavailable",
+      "reason" : "FederationUnavailable",
+      "message" : "component volcano-scheduler is unhealthy",
+      "lastTransitionTime" : "0001-01-01T00:00:00Z"
+    } ]
+  }
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Fleet object

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ShowClusterList.html b/docs/ucs/api-ref/ShowClusterList.html new file mode 100644 index 000000000..77e3224a0 --- /dev/null +++ b/docs/ucs/api-ref/ShowClusterList.html @@ -0,0 +1,1081 @@ + + +

Obtaining the Cluster List

+

Function

This API is used to obtain the cluster list.

+
+

URI

GET /v1/clusters

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Query parameters

Parameter

+

Mandatory

+

Type

+

Description

+

category

+

No

+

String

+

Used to obtain clusters of a specific category.

+

enablestatus

+

No

+

Boolean

+

Whether to obtain the resource information of a cluster. If this parameter is not specified or set to true, the cluster resource summary information is returned. If this parameter is set to false, the cluster status is not returned. The default value is true.

+

clustergroupid

+

No

+

String

+

Fleet ID. If this parameter is not specified, all clusters are returned. If this parameter is specified, clusters that belong to the fleet are returned.

+

limit

+

No

+

Integer

+

The number of records allowed on each page when the list is queried by page. The default value is -1.

+

offset

+

No

+

Integer

+

Start offset when the list is queried by page. The default value is 0.

+

order_by

+

No

+

String

+

Sorting parameter when the list is queried by page. The value can be create_at or update_at.

+

order

+

No

+

String

+

Sorting order when the list is queried by page. The value can be desc or asc.

+

managetype

+

No

+

String

+

Cluster type for listing the clusters. The value can be all, grouped, or discrete. If this parameter is not specified, the default value is all.

+
  • grouped: clusters added to a fleet
  • discrete: clusters not in any fleet
  • all: all clusters
+

clusterids

+

No

+

String

+

Cluster ID. If there are multiple IDs, separate them using commas (,).

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

items

+

Array of Cluster objects

+

List of cluster members

+

total

+

Integer

+

Total number of clusters

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Cluster

Parameter

+

Type

+

Description

+

kind

+

String

+

API type. The value is fixed at Cluster and cannot be changed.

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

Basic information about the cluster. Metadata is a collection of attributes.

+

spec

+

ClusterSpec object

+

Details about the cluster. UCS creates or updates the cluster based on spec.

+

status

+

ClusterStatus object

+

Cluster status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Resource ID

+

name

+

String

+

Resource name

+

generateName

+

String

+

If no name is provided, the server uses the prefix to generate a unique name.

+

namespace

+

String

+

Namespace

+

labels

+

Map<String,String>

+

Labels

+

annotations

+

Map<String,String>

+

Annotations

+

creationTimestamp

+

String

+

Creation time

+

updateTimestamp

+

String

+

Update time

+

resourceVersion

+

String

+

Internal version of a resource

+

generation

+

String

+

Generation of the desired resource state

+

managedFields

+

Array of ManagedFieldsEntry objects

+

Fields managed by workflows

+

ownerReferences

+

Array of OwnerReference objects

+

Ownership, dependencies, and garbage collection mechanism of objects. It supports resource management by the controller.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 ManagedFieldsEntry

Parameter

+

Type

+

Description

+

manager

+

String

+

Manager name

+

operation

+

String

+

Operation type that causes this entry to be created. The value can only be Apply or Update.

+

apiVersion

+

String

+

Resource API version used by a manager for defining fields

+

time

+

String

+

Timestamp when this entry was created or last updated

+

fieldsType

+

String

+

Field structure format. The value is fixed at FieldsV1.

+

fieldsV1

+

Object

+

Information about the managed fields

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 OwnerReference

Parameter

+

Type

+

Description

+

apiVersion

+

String

+

API version of the referent

+

kind

+

String

+

Type of the referent

+

name

+

String

+

Name of the referent

+

uid

+

String

+

UID of the referent

+

controller

+

Boolean

+

If the value is true, this reference points to the controller that manages the resource.

+

blockOwnerDeletion

+

Boolean

+

If the value is true and the owner has a finalizer named foregroundDeletion, the owner cannot be deleted until this reference is removed.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 ClusterSpec

Parameter

+

Type

+

Description

+

syncMode

+

String

+

Synchronization mode between the cluster and the Karmada control plane

+

clusterGroupID

+

String

+

Fleet ID

+

manageType

+

String

+

Cluster type. The options are as follows:

+
  • grouped: clusters added to a fleet
  • discrete: clusters not in any fleet
+

ruleNamespaces

+

Array of RuleNamespace objects

+

List of namespaces associated with permission policies in a cluster

+

apiEndpoint

+

String

+

API server address

+

secretRef

+

LocalSecretReference object

+

Secret information for accessing a cluster

+

insecureSkipTLSVerification

+

Boolean

+

Whether to skip HTTPS verification

+

proxyURL

+

String

+

Proxy URL

+

provider

+

String

+

Provider

+

type

+

String

+

Type

+

category

+

String

+

Category

+

enableDistMgt

+

Boolean

+

Whether CCE Turbo clusters can manage edge infrastructure

+

region

+

String

+

Region

+

country

+

String

+

Country

+

city

+

String

+

City (consistent with the country)

+

projectID

+

String

+

Project ID

+

projectName

+

String

+

Project name

+

zone

+

String

+

Zone

+

taints

+

Array of Taint objects

+

Taints

+

IsDownloadedCert

+

Boolean

+

Whether the certificate has been downloaded

+

policyId

+

String

+

Policy management ID

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 RuleNamespace

Parameter

+

Type

+

Description

+

rules

+

Array of RuleInfo objects

+

Permission policy list

+

namespaces

+

Array of strings

+

Namespace list

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 RuleInfo

Parameter

+

Type

+

Description

+

ruleID

+

String

+

Permission policy ID

+

ruleName

+

String

+

Permission policy name

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 LocalSecretReference

Parameter

+

Type

+

Description

+

namespace

+

String

+

Namespace that the resource belongs to

+

name

+

String

+

Resource name

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 12 Taint

Parameter

+

Type

+

Description

+

key

+

String

+

Key

+

value

+

String

+

Value

+

effect

+

String

+

Effect information

+

timeadded

+

String

+

Timestamp information

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 ClusterStatus

Parameter

+

Type

+

Description

+

kubernetesVersion

+

String

+

Kubernetes version

+

conditions

+

Array of ConditionStatus objects

+

Conditions

+

nodeSummary

+

NodeSummary object

+

Node statistics

+

resourceSummary

+

ResourceSummary object

+

Resource statistics

+

endpoints

+

Endpoint object

+

Endpoint

+

phase

+

String

+

Phase information

+

reason

+

String

+

Reason of the last change

+

message

+

String

+

Details about the last state transition

+

arrearFreeze

+

String

+

Frozen due to arrears

+

policeFreeze

+

String

+

Frozen for legal reasons

+

apiEnablements

+

Array of APIEnablement objects

+

List of enabled resources

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14 ConditionStatus

Parameter

+

Type

+

Description

+

type

+

String

+

Status type

+

status

+

String

+

Status

+

observedgeneration

+

Integer

+

Version of a status object

+

lastTransitionTime

+

String

+

Time of the last transition

+

reason

+

String

+

Cause of status

+

message

+

String

+

Status information

+
+
+ +
+ + + + + + + + + + + + + +
Table 15 NodeSummary

Parameter

+

Type

+

Description

+

totalNum

+

String

+

The number of all nodes in a cluster

+

readyNum

+

String

+

The number of ready nodes in a cluster

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 16 ResourceSummary

Parameter

+

Type

+

Description

+

allocatable

+

map<string, object>

+

Allocatable resources

+

allocating

+

map<string, object>

+

Resources in allocation

+

allocated

+

map<string, object>

+

Allocated resources

+

capacity

+

map<string, object>

+

Total resources

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 17 Endpoint

Parameter

+

Type

+

Description

+

internal

+

String

+

Internal network address.

+

external

+

String

+

External network address.

+

external_otc

+

String

+

Endpoint of the cluster to be accessed through API Gateway.

+
+
+ +
+ + + + + + + + + + + + + +
Table 18 APIEnablement

Parameter

+

Type

+

Description

+

groupVersion

+

String

+

Resource group and version

+

resources

+

Array of APIResource objects

+

Resource type and name

+
+
+ +
+ + + + + + + + + + + + + +
Table 19 APIResource

Parameter

+

Type

+

Description

+

name

+

String

+

Resource name

+

kind

+

String

+

Resource category

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Information about all clusters is obtained.

+
{
+  "items" : [ {
+    "kind" : "Cluster",
+    "apiVersion" : "v1",
+    "metadata" : {
+      "name" : "test-cluster",
+      "uid" : "b0d1ecb5-7947-11ee-9467-0255ac1001bf",
+      "creationTimestamp" : "2023-11-02T06:36:14Z",
+      "labels" : {
+        "FeatureGates" : "elbv3,SupportClientCertificateRevocation,xGPU"
+      },
+      "annotations" : {
+        "vpcId" : "11c9fe72-5a90-4295-bcfe-774726fb9066"
+      }
+    },
+    "spec" : {
+      "syncMode" : "",
+      "clusterGroupID" : "bffbb35b-7949-11ee-886c-0255ac100037",
+      "manageType" : "grouped",
+      "provider" : "cmccloud",
+      "type" : "cce",
+      "category" : "self",
+      "region" : "cidc-rp-12",
+      "country" : "CN",
+      "city" : "150900",
+      "projectID" : "b6315dd3d0ff4be5b31a963256794989",
+      "projectName" : "cidc-rp-12",
+      "IsDownloadedCert" : false,
+      "operatorNamespace" : "2cd7ebd02e4743eba4e6342c09e49344"
+    },
+    "status" : {
+      "kubernetesVersion" : "v1.25",
+      "conditions" : [ {
+        "type" : "Ready",
+        "status" : "True",
+        "lastTransitionTime" : "2023-11-27T11:05:09+08:00",
+        "reason" : "ClusterAvailable"
+      }, {
+        "type" : "Cluster",
+        "status" : "Available",
+        "lastTransitionTime" : "2023-11-27T11:05:09+08:00",
+        "reason" : "ClusterAvailable"
+      }, {
+        "type" : "Federation",
+        "status" : "Federalized",
+        "lastTransitionTime" : "2023-11-14T14:31:58.744215+08:00"
+      } ],
+      "endpoints" : [ {
+        "url" : "https://192.168.1.251:5443",
+        "type" : "Internal"
+      } ],
+      "phase" : "Available",
+      "arrearFreeze" : "false",
+      "policeFreeze" : "false"
+    }
+  } ],
+  "total" : 1
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Information about all clusters is obtained.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ShowFederationProgress.html b/docs/ucs/api-ref/ShowFederationProgress.html new file mode 100644 index 000000000..f6b5d0ae6 --- /dev/null +++ b/docs/ucs/api-ref/ShowFederationProgress.html @@ -0,0 +1,593 @@ + + +

Querying Federation Enabling Progress

+

Function

This API is used to query the federation enabling progress.

+
+

URI

GET /v1/clustergroups/{clustergroupid}/federations/progress

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Parameter in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

No

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the response body

Parameter

+

Type

+

Description

+

kind

+

String

+

API type

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

ObjectMeta object

+

ObjectMeta is a metadata structure that must be contained in all persistent resources in Kubernetes.

+

spec

+

JobSpec object

+

Details about the job. UCS creates or updates the job based on spec.

+

status

+

JobStatus object

+

Job status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 JobSpec

Parameter

+

Type

+

Description

+

type

+

String

+

Job type

+

federationuid

+

String

+

Federation UID

+

resourceid

+

String

+

Resource ID

+

resourcename

+

String

+

Resource name

+

extendparam

+

String

+

Extended parameter

+

subjobs

+

Array of Job objects

+

Subjobs

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 Job

Parameter

+

Type

+

Description

+

kind

+

String

+

API type

+

apiVersion

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

spec

+

JobSpec object

+

Details about the job. UCS creates or updates the job based on spec.

+

status

+

JobStatus object

+

Job status

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 ObjectMeta

Parameter

+

Type

+

Description

+

uid

+

String

+

Resource ID

+

name

+

String

+

Resource name

+

generateName

+

String

+

If no name is provided, the server uses the prefix to generate a unique name.

+

namespace

+

String

+

Namespace

+

labels

+

Map<String,String>

+

Labels

+

annotations

+

Map<String,String>

+

Annotations

+

creationTimestamp

+

String

+

Creation time

+

updateTimestamp

+

String

+

Update time

+

resourceVersion

+

String

+

Internal version of a resource

+

generation

+

String

+

Generation of the desired resource state

+

managedFields

+

Array of ManagedFieldsEntry objects

+

Fields managed by workflows

+

ownerReferences

+

Array of OwnerReference objects

+

Ownership, dependencies, and garbage collection mechanism of objects. It supports resource management by the controller.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 ManagedFieldsEntry

Parameter

+

Type

+

Description

+

manager

+

String

+

Manager name

+

operation

+

String

+

Operation type that causes this entry to be created. The value can only be Apply or Update.

+

apiVersion

+

String

+

Resource API version used by a manager for defining fields

+

time

+

String

+

Timestamp when this entry was created or last updated

+

fieldsType

+

String

+

Field structure format. The value is fixed at FieldsV1.

+

fieldsV1

+

Object

+

Information about the managed fields

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 OwnerReference

Parameter

+

Type

+

Description

+

apiVersion

+

String

+

API version of the referent

+

kind

+

String

+

Type of the referent

+

name

+

String

+

Name of the referent

+

uid

+

String

+

UID of the referent

+

controller

+

Boolean

+

If the value is true, this reference points to the controller that manages the resource.

+

blockOwnerDeletion

+

Boolean

+

If the value is true and the owner has a finalizer named foregroundDeletion, the owner cannot be deleted until this reference is removed.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 9 JobStatus

Parameter

+

Type

+

Description

+

phase

+

String

+

Job phase

+

reason

+

String

+

Job reason

+

completiontime

+

String

+

Job completion time

+

starttime

+

String

+

Job start time

+
+
+
+

Example Requests

None

+
+

Example Responses

Status code: 200

+

Job for enabling cluster federation returned.

+
{
+  "kind" : "Job",
+  "apiVersion" : "v3",
+  "metadata" : {
+    "uid" : "70b5a14f-2fa4-11ee-bf07-0255ac1000b9",
+    "creationTimestamp" : "2023-07-31 13:16:20.715779 +0000 UTC",
+    "updateTimestamp" : "2023-07-31 13:17:24.497868 +0000 UTC",
+    "annotations" : {
+      "currentTimestamp" : "2023-07-31 13:17:24.933313136 +0000 UTC"
+    }
+  },
+  "spec" : {
+    "type" : "CreateFederationContainer",
+    "federationUID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4",
+    "resourceID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4",
+    "resourceName" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4",
+    "subJobs" : [ {
+      "kind" : "Job",
+      "apiVersion" : "v3",
+      "metadata" : {
+        "uid" : "70b66b9a-2fa4-11ee-bf07-0255ac1000b9",
+        "creationTimestamp" : "2023-07-31 13:16:20.740512 +0000 UTC",
+        "updateTimestamp" : "2023-07-31 13:16:22.100528 +0000 UTC",
+        "annotations" : {
+          "currentTimestamp" : "2023-07-31 13:17:24.934274579 +0000 UTC"
+        }
+      },
+      "spec" : {
+        "type" : "InstallFederationChart",
+        "federationUID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4"
+      },
+      "status" : {
+        "phase" : "Success",
+        "completionTime" : "2023-07-31 13:16:22.100528 +0000 UTC",
+        "startTime" : "2023-07-31 13:16:22.100528 +0000 UTC"
+      }
+    }, {
+      "kind" : "Job",
+      "apiVersion" : "v3",
+      "metadata" : {
+        "uid" : "70b66b68-2fa4-11ee-bf07-0255ac1000b9",
+        "creationTimestamp" : "2023-07-31 13:16:20.736232 +0000 UTC",
+        "updateTimestamp" : "2023-07-31 13:17:24.490359 +0000 UTC",
+        "annotations" : {
+          "currentTimestamp" : "2023-07-31 13:17:24.934277116 +0000 UTC"
+        }
+      },
+      "spec" : {
+        "type" : "CreateNetworkResource",
+        "federationUID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4",
+        "extendParam" : {
+          "JobExtendParamKeyElbID" : "69694819-67dc-44ac-ab6e-9b18087c5c4c"
+        }
+      },
+      "status" : {
+        "phase" : "Success",
+        "completionTime" : "2023-07-31 13:17:24.490359 +0000 UTC",
+        "startTime" : "2023-07-31 13:16:20.744891 +0000 UTC"
+      }
+    }, {
+      "kind" : "Job",
+      "apiVersion" : "v3",
+      "metadata" : {
+        "uid" : "70b66afa-2fa4-11ee-bf07-0255ac1000b9",
+        "creationTimestamp" : "2023-07-31 13:16:20.731295 +0000 UTC",
+        "updateTimestamp" : "2023-07-31 13:16:22.100452 +0000 UTC",
+        "annotations" : {
+          "currentTimestamp" : "2023-07-31 13:17:24.934288685 +0000 UTC"
+        }
+      },
+      "spec" : {
+        "type" : "CreateCert",
+        "federationUID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4"
+      },
+      "status" : {
+        "phase" : "Success",
+        "completionTime" : "2023-07-31 13:16:22.100452 +0000 UTC",
+        "startTime" : "2023-07-31 13:16:22.100452 +0000 UTC"
+      }
+    }, {
+      "kind" : "Job",
+      "apiVersion" : "v3",
+      "metadata" : {
+        "uid" : "70b66ad0-2fa4-11ee-bf07-0255ac1000b9",
+        "creationTimestamp" : "2023-07-31 13:16:20.726434 +0000 UTC",
+        "updateTimestamp" : "2023-07-31 13:16:22.093902 +0000 UTC",
+        "annotations" : {
+          "currentTimestamp" : "2023-07-31 13:17:24.934291673 +0000 UTC"
+        }
+      },
+      "spec" : {
+        "type" : "CreateNode",
+        "federationUID" : "70acf480-2fa4-11ee-ad1d-0255ac1001c4"
+      },
+      "status" : {
+        "phase" : "Success",
+        "completionTime" : "2023-07-31 13:16:22.093902 +0000 UTC",
+        "startTime" : "2023-07-31 13:16:20.745187 +0000 UTC"
+      }
+    } ]
+  },
+  "status" : {
+    "phase" : "Success",
+    "completionTime" : "2023-07-31 13:17:24.497868 +0000 UTC",
+    "startTime" : "2023-07-31 13:16:20.721007 +0000 UTC"
+  }
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Job for enabling cluster federation returned.

+

400

+

Client request error. The server could not execute the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateCluster.html b/docs/ucs/api-ref/UpdateCluster.html new file mode 100644 index 000000000..c132f6227 --- /dev/null +++ b/docs/ucs/api-ref/UpdateCluster.html @@ -0,0 +1,440 @@ + + +

Updating a Cluster

+

Function

This API is used to update a cluster. Currently, only the country/city of attached clusters and on-premises clusters, and the number of worker nodes in a multi-cloud cluster can be updated.

+
+

URI

PUT /v1/clusters/{clusterid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

kind

+

Yes

+

String

+

API type. The value is fixed at Cluster and cannot be changed.

+

apiVersion

+

Yes

+

String

+

API version. The value is fixed at v1 and cannot be changed.

+

metadata

+

No

+

ObjectMeta object

+

Basic information about the cluster. Metadata is a collection of attributes.

+

spec

+

No

+

UpdateClusterSpec object

+

Details about the cluster. UCS creates or updates the cluster based on spec.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 ObjectMeta

Parameter

+

Mandatory

+

Type

+

Description

+

uid

+

No

+

String

+

Cluster ID

+

name

+

No

+

String

+

Cluster name

+

labels

+

No

+

Map<String,String>

+

Labels

+

creationTimestamp

+

No

+

String

+

Creation time. It is the UTC time in the RFC 3339 format.

+

updateTimestamp

+

No

+

String

+

Update timestamp

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 UpdateClusterSpec

Parameter

+

Mandatory

+

Type

+

Description

+

country

+

No

+

String

+

Country where the cluster is located

+

city

+

No

+

String

+

City where the cluster is located (consistent with the country)

+

workerConfig

+

No

+

WorkerConfig object

+

Worker node configuration. This parameter is only available for multi-cloud clusters.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 6 WorkerConfig

Parameter

+

Mandatory

+

Type

+

Description

+

replicas

+

No

+

Integer

+

The number of nodes

+

strategy

+

No

+

NodeUpgradeStrategy object

+

Node update policy

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 7 NodeUpgradeStrategy

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

No

+

String

+

Policy type

+

rollingUpdate

+

No

+

RollingUpdateNodeUpgradeStrategy object

+

Rolling update

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 8 RollingUpdateNodeUpgradeStrategy

Parameter

+

Mandatory

+

Type

+

Description

+

maxUnavailable

+

No

+

Object

+

Maximum number of nodes that can be unavailable during an update

+

maxSurge

+

No

+

Object

+

Maximum number of nodes that can be created over the desired number of nodes

+

deletePolicy

+

No

+

String

+

Deletion policy. The options are Random, Oldest, and Newest.

+
+
+
+

Response Parameters

Status code: 200

+

Cluster information updated.

+

Status code: 400

+ +
+ + + + + + + + + +
Table 9 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 403

+ +
+ + + + + + + + + +
Table 10 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+

Status code: 500

+ +
+ + + + + + + + + +
Table 11 Parameter in the response body

Parameter

+

Type

+

Description

+

-

+

String

+

-

+
+
+
+

Example Requests

Updating a cluster

+
{
+  "kind" : "Cluster",
+  "apiVersion" : "v1",
+  "metadata" : {
+    "annotations" : {
+      "kubeconfig" : "{\"kind\":\"Config\",\"apiVersion\":\"v1\",\"preferences\":{},\"clusters\":[{\"name\":\"internalCluster\",\"cluster\":{\"server\":\"https://100.94.13.93:5443\",\"insecure-skip-tls-verify\":true}}],\"users\":[{\"name\":\"user\",\"user\":{\"client-certificate-data\":\"\",\"client-key-data\":\"\"}}],\"contexts\":[{\"name\":\"internal\",\"context\":{\"cluster\":\"internalCluster\",\"user\":\"user\"}}],\"current-context\":\"internal\"}"
+    }
+  },
+  "spec" : {
+    "country" : "AL",
+    "city" : "AL"
+  }
+}
+
+

Example Responses

Status code: 200

+

The cluster has been updated.

+
{ }
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been updated.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateClusterGroup.html b/docs/ucs/api-ref/UpdateClusterGroup.html new file mode 100644 index 000000000..e3d331eda --- /dev/null +++ b/docs/ucs/api-ref/UpdateClusterGroup.html @@ -0,0 +1,140 @@ + + +

Updating Fleet Description

+

Function

This API is used to update the description of a fleet. You must have the permissions to update the fleet.

+
+

URI

PUT /v1/clustergroups/{clustergroupid}/description

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

description

+

Yes

+

String

+

Fleet description

+
+
+
+

Response Parameters

None

+
+

Example Requests

Updating fleet description

+
{
+  "description" : "aaaaaaaaa"
+}
+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Updated.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

404

+

Resources not found.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateClusterGroupAssociatedClusters.html b/docs/ucs/api-ref/UpdateClusterGroupAssociatedClusters.html new file mode 100644 index 000000000..cc8f632d2 --- /dev/null +++ b/docs/ucs/api-ref/UpdateClusterGroupAssociatedClusters.html @@ -0,0 +1,130 @@ + + +

Adding Clusters to a Fleet

+

Function

This API is used to add clusters to a fleet. One or more clusters can be added at the same time. This API cannot be used to remove all or some clusters from a fleet.

+
+

URI

PUT /v1/clustergroups/{clustergroupid}/associatedclusters

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information. Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token.

+

Content-Type

+

Yes

+

String

+

Message body type (format). Only application/json is supported.

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

clusterIds

+

No

+

Array of strings

+

Cluster IDs for updating information about clusters associated with a fleet

+
+
+
+

Response Parameters

None

+
+

Example Requests

Updating clusters in a fleet

+
{
+  "clusterids" : [ "xxxx-xxxx-xxxx" ]
+}
+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

Clusters have been added to the fleet.

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateClusterGroupAssociatedRules.html b/docs/ucs/api-ref/UpdateClusterGroupAssociatedRules.html new file mode 100644 index 000000000..b0a7e94b2 --- /dev/null +++ b/docs/ucs/api-ref/UpdateClusterGroupAssociatedRules.html @@ -0,0 +1,172 @@ + + +

Updating Permission Policies Associated with a Fleet

+

Function

This API is used to update the permission policies associated with a fleet.

+
+

URI

PUT /v1/clustergroups/{clustergroupid}/associatedrules

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clustergroupid

+

Yes

+

String

+

Fleet ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Token authentication information

+

Minimum length: 1

+

Maximum length: 16384

+

Content-Type

+

Yes

+

String

+

Request body type or format

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

ruleIDNamespaces

+

No

+

Array of RuleIDNamespaces objects

+

Permission policy ID and namespaces related to the permission policy

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 RuleIDNamespaces

Parameter

+

Mandatory

+

Type

+

Description

+

ruleIDs

+

No

+

Array of strings

+

Permission policy IDs

+

namespaces

+

No

+

Array of strings

+

Namespaces related to permission policies

+
+
+
+

Response Parameters

None

+
+

Example Requests

Updating the permission policies associated with a fleet

+
{
+  "ruleIDNamespaces" : [ {
+    "ruleIDs" : [ "f6434332-60d6-11ed-a847-0255ac10003f" ],
+    "namespaces" : [ "default", "kube-system" ]
+  } ]
+}
+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The fleet has been associated with permission policies.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateClusterRules.html b/docs/ucs/api-ref/UpdateClusterRules.html new file mode 100644 index 000000000..7923a3871 --- /dev/null +++ b/docs/ucs/api-ref/UpdateClusterRules.html @@ -0,0 +1,170 @@ + + +

Associating a Cluster with Permission Policies

+

Function

This API is used to associate a cluster with permission policies.

+
+

URI

PUT /v1/clusters/{clusterid}/associatedrules

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

clusterid

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information

+

Content-Type

+

Yes

+

String

+

Request body type or format

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

ruleIDNamespaces

+

No

+

Array of RuleIDNamespaces objects

+

Permission policy ID and namespaces related to the permission policy

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 RuleIDNamespaces

Parameter

+

Mandatory

+

Type

+

Description

+

ruleIDs

+

No

+

Array of strings

+

Permission policy IDs

+

namespaces

+

No

+

Array of strings

+

Namespaces related to permission policies

+
+
+
+

Response Parameters

None

+
+

Example Requests

Associating a cluster with permission policies

+
{
+  "ruleIDNamespaces" : [ {
+    "ruleIDs" : [ "f6434332-60d6-11ed-a847-0255ac10003f" ],
+    "namespaces" : [ "default", "xxxxx" ]
+  } ]
+}
+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The cluster has been associated with permission policies.

+

400

+

Client request error. The server could not execute the request.

+

403

+

The server refused the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/UpdateRule.html b/docs/ucs/api-ref/UpdateRule.html new file mode 100644 index 000000000..2a8d315c0 --- /dev/null +++ b/docs/ucs/api-ref/UpdateRule.html @@ -0,0 +1,220 @@ + + +

Updating a Permission Policy

+

Function

This API is used to update a permission policy.

+
+

URI

PUT /v1/permissions/rules/{ruleid}

+ +
+ + + + + + + + + + + +
Table 1 Path parameter

Parameter

+

Mandatory

+

Type

+

Description

+

ruleid

+

Yes

+

String

+

Permission policy ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Parameters in the request header

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

Identity authentication information

+

Minimum length: 1

+

Maximum length: 16384

+

Content-Type

+

Yes

+

String

+

Request body type or format

+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter in the request body

Parameter

+

Mandatory

+

Type

+

Description

+

spec

+

No

+

RuleSpec object

+

Details about the permission policy. UCS creates or updates the permission policy by spec.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 RuleSpec

Parameter

+

Mandatory

+

Type

+

Description

+

iamuserids

+

No

+

Array of strings

+

Information of IAM users associated with a permission policy

+

type

+

No

+

String

+

Permission policy type. The value can be readonly, develop, admin, or custom.

+

contents

+

No

+

Array of Content objects

+

Permission policy content

+

description

+

No

+

String

+

Permission policy description

+

Minimum length: 0

+

Maximum length: 255

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 Content

Parameter

+

Mandatory

+

Type

+

Description

+

verbs

+

No

+

Array of strings

+

Action list

+

resources

+

No

+

Array of strings

+

Resource list

+
+
+
+

Response Parameters

None

+
+

Example Requests

Updating a permission policy

+
{
+  "spec" : {
+    "iamUserIDs" : [ "978ff70ec1494a5680f6218faa3567d9", "5acdb44b47ba4bd79783ad40e5346783" ],
+    "type" : "custom",
+    "description" : "this is description"
+  }
+}
+
+

Example Responses

None

+
+

Status Codes

+
+ + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

The permission policy has been updated.

+

400

+

Client request error. The server could not execute the request.

+

500

+

Internal server error.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/en-us_image_0000002267758860.png b/docs/ucs/api-ref/en-us_image_0000002267758860.png new file mode 100644 index 0000000000000000000000000000000000000000..4a421d8a13808fbd10523421bdf80fbeb654c9a8 GIT binary patch literal 32432 zcmXtf1z1$y^S2Li5pgm>=TA$g#IFuZdI8-3>v7C8hDd=h5G zjt&08@-|dgzEeHI_!Ins|@S^lZApcPN9J@sS3MC9|oEB>`(%Jb}({`8mi|CaVcEBbI3hbc6ik{Q@o%j5}&;S^9u z;*!u-mgUZg^E}-t@@rt+rajPq>P?d-=5OTaOJx0Ych!@Rk(KMvlFnpUR(|bx{7bi` zW|ec1G6%h?LsL@1kFEU$1%Ok(8b#Nx}tO0Xky z)gQes#Ua`7oRRr-+~Tyks3B+O@QTBj@1GRB37}~HyMf39=18KnVdI6V2X}jH!Wf@k zYf4^D1+U66v|iptu77`Z>FG&WNZ2=}up#lk)nCqnTtWFdqJE7JzH=8+x4$c!1o2=? zB^iZ>VI!MsLum(VJjyngus8&J+x{o-SQG@2@j{=!-4C!G*5qo1Zb+A!iYCzvz`|>T zp9fsGgvH3_{ZC>D8jvQeBBH_t8xG1vQp;a3c9P^WH8WF{6-QGsBlS*bHTA!}WW5C< zw#i>Q&CYGrd~dO9;=A8J47xJWn-O#N>*W++-2p%jtm-Zn{R9Ghpn1j|c@CWjKeZYcrBWe& z?oN&VcqY3@+kgCJ5Ir$X>$m6Nz?l1Y$Xq_O>hi|OTYubIXUZpbVA72g5{m?v0vOYE z5S+)nYjrBT|72bF=)>!Bj^y%RG(}Ts2sX$2AGO+u3u$<9T#V3Osm|?Qugcf_i>fsp zLU_pRZ)Z@F+7Fqy7zKWdFRRF9w5aAS)MV;GVqbtWzxb~6$Q$>>cFN61kWJf9=YDdr zk_4gkySd;mZ2yx&Myi%oh?!xrzXx6p`8(ol0g_mi1K zuD1#lR4gXg<01QdmJaQI)KyY#S_Gb> z2TNEzQTVLrmxs-?GWG#v!BY;@kwUF4?qAIQJ{^CDfy-vlh|}8WP}j%p@f5LUO^Dfm z8;rdpedYYvSk`eGZ?P+1HS1CjKuX;uR0ar9v{S6>xpJu4uZ!x&xAzU4qJ{R7-8Qo#*LY#lZ4NxCu2!W^}$Eu=*l!u_8dd^*<%weV0PleTyKb_64w9n18 z`8{YoibYCqO`6U>`qz$%z*(Ov0So<#3iY#h-t42dQus zZI^1jD_s1yi4i;2=v+#UAmmsVFQ2MTUh4ALNODdPUdy&q$cVER7SKHzod|0AgwESx z>-8%Cpcu9C#^U6iw#$oq%y);}Ut4_Zw$VhkRNe3h(KJ*m_U~se6S@4M-JEVPdN7Fz z_8|>;tVXAlIap5(m+1S$R0Of-a>*HwmfzbK;MZD!Rpv z!esX6D}qF_1s(}1--`l2f$%%D=41HA}c zPA?HUU%si;fGz`2cQWI}s@9pyQsdN)P%vGb^SiaNAL<%bO4SJ_623Z~g%L&qc4J<+ ztJXu@u6g0j#Y34SIM_Hv{Ewttf1qYnl3?lM=Fx9_=cLfRL&Iv`&KuM_;-cm9YRSrW zXRv!l!PKnn7qeVliJXhh(|nSVpmB}j-hr_L^wAPp8rl;zqIK#}2^=vdwYUfvMC7sX zKJ%zt`?TP0z4s{%C-RN&f;5x$4;D=%qevfCcYhTw;)V}ZW`O2D_}ooFl+26lpx)nZ z2(V)_@Xi;K5DgL{v}45<(slmHuu%XB)iiNmi?Bja&MCr_xk}A6#oAzk5V5t$8aa*M zy{LdFd;)lvw8X*VCAolX{&00;-@b#rpBFJgB-Z|k

bES#Nu3=`N|2tZ)5>TfFvX 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 literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/en-us_image_0000002267861934.png b/docs/ucs/api-ref/en-us_image_0000002267861934.png new file mode 100644 index 0000000000000000000000000000000000000000..508f4c13a220594590502d0ce21ddac41a1f0167 GIT binary patch literal 22183 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

G$>UjJHb*Av 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 literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/en-us_image_0000002302431869.png b/docs/ucs/api-ref/en-us_image_0000002302431869.png new file mode 100644 index 0000000000000000000000000000000000000000..829989a93de8520f968e3c7fca35202448009f48 GIT binary patch literal 72356 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

R#o8n`n6q9$aC7F;!{`g>aRe6r@BV1zbo!H&= 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 DD|@ZM literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/en-us_image_0000002302431877.png b/docs/ucs/api-ref/en-us_image_0000002302431877.png new file mode 100644 index 0000000000000000000000000000000000000000..94736e3a3c70ad1e7d4b9cc6d7696e5df298f9af GIT binary patch literal 24961 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 literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/en-us_image_0000002302518741.png b/docs/ucs/api-ref/en-us_image_0000002302518741.png new file mode 100644 index 0000000000000000000000000000000000000000..0adf514b3fa6debb5004706a2cf83c5ea6cf50d3 GIT binary patch literal 27651 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 literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/en-us_image_0000002302518757.png b/docs/ucs/api-ref/en-us_image_0000002302518757.png new file mode 100644 index 0000000000000000000000000000000000000000..ec3abb85c4e87fdcfd64e390ee05842d55edaffe GIT binary patch literal 54806 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 H<}d#@Kp + + +

Fleet

+ +

+
+ + + diff --git a/docs/ucs/api-ref/en-us_topic_0000002551763211.html b/docs/ucs/api-ref/en-us_topic_0000002551763211.html new file mode 100644 index 000000000..e1008c818 --- /dev/null +++ b/docs/ucs/api-ref/en-us_topic_0000002551763211.html @@ -0,0 +1,19 @@ + + + +

UCS Cluster

+ +

+
+ + + diff --git a/docs/ucs/api-ref/en-us_topic_0000002551843195.html b/docs/ucs/api-ref/en-us_topic_0000002551843195.html new file mode 100644 index 000000000..b571c400b --- /dev/null +++ b/docs/ucs/api-ref/en-us_topic_0000002551843195.html @@ -0,0 +1,19 @@ + + + +

Outdated APIs

+ +

+
+ +
+ +
+ diff --git a/docs/ucs/api-ref/public_sys-resources/caution_3.0-en-us.png b/docs/ucs/api-ref/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..60f60762138fe7d98fa081415cf26a4943897779 GIT binary patch literal 2752 zcmV;x3P1IUP)pPa!Eu%RCwC$n`u~-F-BFk{0Y@>jH&Wt02T)4n7aXBssVicB` zOX`JaF2{q_2~&#?rkP8$id|Xfs23G(+0lTGT0tnFxgZFMIx;xG$R>Lr2ng2sFhB=q zSd{Td_5QEx{V+WDJooe7@Bg{)|8u`XpV~`~ZvvYTAfN{@5<(zAAd&!qNCE^R2@oI< zNq|5k0e^NPrRGdyW8`F%MH7XH|3P8=s2${2dg49z003YAM?%tm1!4=85P2aZJs3WS zG6CT8kCv0C(eT;v!9vu9jP&3oZEw^8HmnQ6+clMCL4mv(zK?)Ob8&M#`$%sr@v0v& z@zoUHs-n619H>uFER~Aj==ntk06q~XtAWrX`-(7l=)GLjQP?!@q z{@ZTZw0`amLgo~4vvd&0Pxryp)QHy>ob2%4P9)V*SX4zr!(BuoQ>IK9!d&k>z1cqI z{8L;})njUE#LIJj>h%6Q^ZVF{wB;i;Qi+5h9}NJn%x@raKm6;fW+Fl#T`67idLh|4 zu~b$4-1hhHTVfMtV@>p)0G=3ns@?Zq+;oGKv z*YE#+n>`1!`TpdYF4yhs&w)&meoVo}#+v$ur`WVKNyq<%YnFsZMC$eXSc!Bf$)AMeNOrxm z98up?0IbZ4d1uoLyuSG}0{xcY?H+G%68SDpqp0{6ZmtR(?ChBNKk$ZxK&chd%Fub9B!C3$z*oSdfKP$^R+Au*=jW--Q5@}8T8wOFz(A> z+jPJi0CSN!@M}8~J+m~H+qJd0$mL8L?}^W38D?fiTvJtZ_QG{CGOx1j!^2co2eNIY zE_th}e&*28WCEs4)4Ngh`F*TJs&5jrEg}J*$>Ry|NTs@Q5S4XS*jiLGYupV!l}OmJ zCkyWg!}|T(8zmGK-@ggmTpXX4Lzd^H6d8Ibpk8+o_km$bMW>TS}&FY)P96F+{d%+84 z0FbR#^Wj0eUL$0WrHtk7-A3#N4!~oiv))WDwoq|!rza!b-MC#_%g6i5bZq+f?}v+A z&dvOM*6oz`?o(Suoq{*R_pvM}5O;^mT)Ww?Z7fftAwAED0FP9BCXZ)ZL<03qVuSdN zP8xtRONCq}V{LHL13e@F7rC5Q7nL%1)>HuEPG%TvZ9T=8(JF40lp-DCMCkm>9oo4$ zp2gbI0)X_(**fDB#*QLr-bCyM4&cnWE2QR3>%BzUvd0>L#Q|n|$1Tk60kC$33wat1 zyP`b|;`hpR?G6;%TDEA7?qPdG5~XG3DCEwFEmXV^*atUP1r?Q*Z6tf#C@HG~z|7R7 z%W^bSHmKdEz8|Y+XCNKoj5;@$;5Eqx+bjkplCo$bd!u65ur3Iht+xK#S>J1CGr+PQ z0C$JWZS8>kO3xnquB&Tk(E(-;v|eN5zDOk!LKaKgc6D>}Jxa^U*&dP9D~M#(l4Wdd zEW5NF>oE`jQ&SV}G+O8_@4Ge+!`aD+oB8?teVaq?BU0GA1xO_l=1nQrAx&+WdOB8S#d?X;+5%{W zL%$q0tP5gqR7{WS^|&#ETLM_$tqfODr{F@Wvh7$L9&xbkIv%IZL`G<~%z?=et2Z8l(~lTRu|vXblrbH{CQq;M*jC6P7 zAFJjO7P_e26);09x-VYJYSS8{M>uNB=$!_=`UBu*VJQICR{ab{qy@7TIM~}!cc+es zuSRv+yK8E024LzW_fF?DH>qIv7JK9}8Okgb+deq(_=yx1KZZPwhLE7)i2By(j4ulc zZ0X+G=!}W_*0i+)j$M5C6#K-`Q^PI#NC$_uZf2|)Q-QCDmtJxjn1b~m%uQ)q7k*!v<@zee~^S^yy8n;SIv9h!z@F~L` zuV;E)#MIP`TP3BWq~-E)te=ie;#EKP>`x<4qruHp!K;f(yPS8hZ8~d0reR}ajZ`A( z(HeW)kgTXvuy(`eEDH)`tWfsw@ySLcm z71)pX#Is~7?MOOfjY2*gfad0Vq-SPfE=p#UyBs4UBW!G}*%&$+h}RorbCI@}bUZGD z(D`DX7<2A;EnO+wSMkI5S3ZiysJKOPz zXHjNr`1+U~!-i@z2TQevhO_F+9anqo4qDp6*s z{^#^#iMhy}=wm-XjcU;ayd~S zjKa+^{((2(%#||Kxw$%iyNf&$A}5<97d+PwF{vJcqF5t}K17 zWA47SPe$ba7&NE7d;EGLztWTQN_%qi?{fFvpbejgc;mTn%wk=QtX`o_PVsJpPg-Jv~RCwC$oO@7HS02Ydnp$REOA{(Mow8*Mm>A3h9MeO=6 zYU>mmT}9emv9DQm*RJeXc5T5Q!v0 zB$5b`NFqdtL=w?OklwC|&JB*_kR*g*P1STeQY~6uB+{*;B2i1mw!HxCh>m7?uX_kB zZW668hPGS7cBvYGjjLu-T2{ta(MHkoqDQ**khXqXE?M&}B*qkwZb{|!wVV0PLl1U( zh|@k2Pt@e8KI2W7%cc| zO7%;oh!GEaKI?~$MKHY5t{0Ps=^60OI`;KR@k?HRh+XkChOueL!}QpzFXL=(zz|LUxf|B{Fmxd{EXn6tyV1mZmG!*PMf2b20p#%- z`o8%ZVfQ~su(20?SHHrs3D0@S-1|flxSZIlFT0HsqCq!dAXirJ4@lTnmkYTz0`t-t zoL%_-P1mIvW2W1<$B}7tG*?~Z^s+@a=y&VTO-%?Gh7Jy#@{?>}D?H+5hs1sBQ0R>W z$rPxPB0JS9by>2#BO!*;vNGmn#B$c!n|>2>7?JiN4?lg9=9Ul^WTvn;zkmZNJ#I@f zXfLYayW|WUHCNr9F<}t$c#W4#+=3U8s&%wF9keEQnyx}+}N<*(D-{;R$ zaL&lM{`n*i9mMK`CvfP6+g4qiUbYCAy$P8{NBGDGJ>#mRNP+|zE_)NFmo4(hwYIv@ zj4}Jw)#_@YXz^U^wkl+5Ed$yU@(x$pVxcJ-ZmXBjPZHcyBPNTQ@jT3znFTMzB|S?h0gxfpz6m)AA4I1f{{Z$&2y zk3ciVjBaWI{dcTHs?p)HH*sm#raQmUz>fucJ<0Wt1$&7Yo{Gv8hdf^6w-o?Tw&YWcsTM+dBoLi8 zm#bgrQM3K5ud%~av^tvIiFi|^-&R4OlHQ{uGz@8In6F1rD1F94&As{c8*2bi=#8{A z)KIlQhtnC$?tCJxvO0({nRs+qm1oR!Z=IKnF2v^f{N$t{)~t1Vv2?ngNK$nuGEKO< zzf@ihKvc#!1ci#0h8lzrHSz1+9!LmL<7})$rq&Yk)GWTA^F~0u-~E0TNjvu-Q)}t} z)&}+s8s@*>B2&1%Q%tPac=st8NJG2{;%siGF;7#NJH;& zhtmrs6i)v0ou4BeO^#u2egO+IQwUR3_$5wT3!n{#&@*Jsx3K<;Tq+W^T~4H!KR$~@ zu5|Zlat{Mw&iD(0QiW8dAv|#;hS6ylMyC;;I1(Y)o!@mEZ@FnQU-ZJ$IBKhr$d&Y3 z@~n?c&GxedN!C@{=B92P%iuKA4P5P zF?T5M7UQl=?_?r5^a9HdpCWnaAVwy9ACNdxCO+iz-A9L25o0p3%IfG+5=G4$jjDT3 z_rX_P#9mZ`W{jEERu|5u25kR1=sC=`>*|qQT57FGWQv;}!j;wgsVgZ&P^ySbnS#<_ z@{wsQcZWQgM(3rkuisR2@ddhKm zm>y`QU}}cvFx#%9zncRR0f}5m+=3T>`k`rb(CYH78vp)0Ee*BEwGqTVll7BY1|4qD zR@y0eaw?7*EAlWsiJLyTGjpW6UP@ltw4HQIDv2=#er2YNQnNeHL|TgfF7e2O?@1my zh~&SD2{!g(;QB4N?2Xi&J%utn0;xtv zkRbctK7@An=2gu(9Ra)bZS!9G@?)aLPe-neAnxr2otkuaibwkB-UtAuk5dGci8mbQ zpHD?%2tDKXzEY@Rj-@xHWo6{`Gk44bDS}ZNOehT|CG6gP2Ggpt~a%lW$PyZ(R zi8N$tEzX8o&aMocNSD04oR)@K6nZ1(%xk%iRHX^nOsp#j+)(^s?wgdX$fl*dQ#vN{kQBLN_&` z(}>jJm$ns&TBh$jOxAo08KVLl?;k50S@-!F7S4`i=H$SR@bCXNvu5pPHYX!BHAMhH=PbZLgf2GrXYPBlYfJrz}; z)`4zn0@|b`lo3(5nj87CARk+Pp-;mw(B7`!W7{6u*6MHG>-993S9MlnGP}b>T0X$Q z*4=p=+dA4SslE}Gg;&WhtYpG)6U!Ea29!H%?ahd^54+^o0V28#9s2{xQ^UKnb$1>s zUY^}9i2&9v4QJu(xOPbdVAh?wt?d92zi^J^&vgoySb1+qmmi0B}` Z`Y-il7nw201!5QImN;7^FeRDuvlieQm$nqSgH2#ST^0cx)=Dn zcnY!FJo_HPt-fVW+YdiB+UT#;6V;vF(d}+cR@IeV(d8~pF{?8>qtl(5 z-l&f3hz@sXMqTY}N84?I)T&mtqU9C|*g%8DFx{Fx6Im5iuF|X}%dCt_S87;LjI4+X zS7=Dl>numvWx_9&xPzYqFMxz!h@dKJnV+WiNj6zrg25Bat1rHX34YcM&(@mM25EsKp^s$!A zn#VD|u6s{$op5YkSDD^r^tisfo6%**9APOOq(ypevUm*eg627JCCoz;t2Wm=9wHzA zIZpn)d?D?0K6~e%(5n+Y{``IW_383vZ~ype`|Z!iyVvi|9^OBm{E(}2>Xh(M9J1dY2CIYT07X)PL*D{uoU3SWSe zM5)Z@cZj(9E!*Rn@%yj8UtL_@?zGcisVAyCyQACPnyjiTyQ0fonqpRGc1EW=HN8j060m^=i($GodnU3fs$8X6OO{y~m9EsVpcq*Z6|T^b zqSslDvde-aqopiG$tAYJ8Zb!15?a()3^veUF{}|ZIT4x8)aYX^Swx02G;(1<(UEpq zsD~82sYp46Jp6zr)7XK2NT3kbfI%9Tw8DeMU;_=7#;04Wd;7XW>CRXi!yzvnE_|I|r wZ*w5M>1_7SKcT}DJ@4vn|M>OS_UPly>%-H_{r>p;)5Xs}-+pgDf7s~DJ6{D>Q~&?~ literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-arrowdn.gif b/docs/ucs/api-ref/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 0000000000000000000000000000000000000000..379428032932289326e52c2772bd90ba3d88b906 GIT binary patch literal 1887 zcmZ?wbhEHbCgqow z*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^ z7NqJ2r55Lx7A2Jm>Ih`8X1|p zSh~8p7&*iAy5uL9=BDPA!1Sgd^t#~G3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G{Iz z=0WwQ;C71>PQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R&mZ5v zef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2 z$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE> zX{jm6Nr?&Zaj`McQIQehVWA3>*p!%p5Wn0u7E$th{n6D>ft^YU5&dnB%c=(a~-RV>2EO25SIA CZ-yWM literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-arrowrt.gif b/docs/ucs/api-ref/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6aaaa11c23e919c4798d7dcd2b1ae98dd35dd316 GIT binary patch literal 1890 zcmZ?wbhEHb7yetOgf{ zR2HP_2c;J0mlh?b0+lO+tSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u$h8JcxGNo zetEGbSiP^Wm1kaYNn&1ds;7&s63_&_%*+%k11Cod14Ab>6ALqQLqk^=3j-5FHzP|& zBUd9gQwvj9m|mCsATTyHM;rzL?XHK6w zdE)r7qel)OI(T6JzP)>P@7lRz`?jrHHgDRvVg0(bYgVsXxnlXUrArnsTDV~Tyt#8` z&zd=7`n0K2CQq6;p}()Ur@O1OqrI)QrMaoGp}wxRrn;)KqP(oMq`0WCAU`iRCp#-M zBRwrOB{?ZEAwDiPCORrIB0MZKBseHAz~9f;$J@)(!`;o*#o5Wx!QRf+#@fo#!raW% z#MsEtKwnQ+M_Wr%LtRZ(MOjHvL0(Q)Mp{ZzLR?H#L|8~rfS-?-hntI&gPo0)g_((w zfkE*n3y@@B&;b#k`jUY|nSq%>!ec`MLnAA%oR7zc2TpB#@>)|YCO&lN;uMU!b7Eqm H1A{dHTIz>f literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-caution.gif b/docs/ucs/api-ref/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-danger.gif b/docs/ucs/api-ref/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-huawei.gif b/docs/ucs/api-ref/public_sys-resources/icon-huawei.gif new file mode 100644 index 0000000000000000000000000000000000000000..a31d60f895af919d33855217ca02daf4093136d7 GIT binary patch literal 2767 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 GE&l)<3Z_>8 literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-notice.gif b/docs/ucs/api-ref/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..409070650a49518feb1624c624d814c3bfa63d2e GIT binary patch literal 962 zcmb7D&r8&C5S<{wSd_qn6)U)w5LOaRh!N}_*49lD)S!dZp@M<3gPIX|@UR9-fz+X3 zAaT9)OY{xZtO-;RC85Vab;JEUNIMS5f^r$7-e%-XK`j{0+N$CsgpRd6B1wp z8dw-cH^rU^H4`&7qgabf)l^K`l!66{q9$U(CKRO5%W5pfY)s&YQ6n`HBR0ZTum%`N zgC%I8hQ+`JG_WvCAt-W$sIn@BKCDG1qQWW^a=`*c7G+i@s0S(ZDv1&+K_2`7O-#cM z=m!ZX1Z#kSG+3e)Jg^wpfCd(Yb5TZ)U=a!DwsG z)Z`|1ejMK4ap%CHj;%+>T6=D++5I=uBbQ$fZ48cf{hV1}9&Njl-I}i7e0#6Hdug@s zsr-57_=gLr&9Ros$k}}M>tJ77=hEJ}iPaZ%8|P+gUbS|Oj}5I{|5nZZc)C1$e*Rj` d`09hYXJ4M@PhCx)dHK8WZo1*|*q+^V@*ncduk8Q; literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/icon-tip.gif b/docs/ucs/api-ref/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..c47bae05c9fd17c02a851d96cfac67bf194498d8 GIT binary patch literal 879 zcmchWKWmj?48@OdDOZPr)a61!OE4yGD)salg#|^Ix$qIEF#uk)V>D{95e^!2r`i+9t# zTMu5YtUcd+@#gp0tDE;9ug>oLIzL$6dOx4-t#2PKExu1KulwoYeD?Os#mVO%AMWih HO|EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/ucs/api-ref/public_sys-resources/note_3.0-en-us.png b/docs/ucs/api-ref/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..57a0e1f53377b28fd80ceb393b035f8d9b8b392a GIT binary patch literal 1080 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 + +

UCS Clusters

+
+ + diff --git a/docs/ucs/api-ref/topic_300000001.html b/docs/ucs/api-ref/topic_300000001.html new file mode 100644 index 000000000..5571d4077 --- /dev/null +++ b/docs/ucs/api-ref/topic_300000001.html @@ -0,0 +1,42 @@ + + +

Fleets

+

+
+ + diff --git a/docs/ucs/api-ref/topic_300000002.html b/docs/ucs/api-ref/topic_300000002.html new file mode 100644 index 000000000..9b710983d --- /dev/null +++ b/docs/ucs/api-ref/topic_300000002.html @@ -0,0 +1,22 @@ + + +

Permissions

+

+
+ + diff --git a/docs/ucs/api-ref/ucs_api_0001.html b/docs/ucs/api-ref/ucs_api_0001.html new file mode 100644 index 000000000..2a2ae5b0a --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0001.html @@ -0,0 +1,19 @@ + + +

Before You Start

+
+ + diff --git a/docs/ucs/api-ref/ucs_api_0002.html b/docs/ucs/api-ref/ucs_api_0002.html new file mode 100644 index 000000000..f99a24252 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0002.html @@ -0,0 +1,12 @@ + + +

Overview

+

Ubiquitous Cloud Native Service (UCS) is the first distributed cloud native product in the industry. It provides a consistent experience in cloud native application deployment, management, and ecosystem. Cloud native applications can run across regions and clouds with intelligent traffic distribution.

+

This document describes how to use application programming interfaces (APIs) to perform operations on UCS, such as creating or deleting fleets, registering or deleting clusters, and creating, updating, or deleting permission policies.

+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0003.html b/docs/ucs/api-ref/ucs_api_0003.html new file mode 100644 index 000000000..0a257a852 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0003.html @@ -0,0 +1,11 @@ + + +

API Calling

+

UCS supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details about API calling, see Calling APIs.

+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0004.html b/docs/ucs/api-ref/ucs_api_0004.html new file mode 100644 index 000000000..7e06dd949 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0004.html @@ -0,0 +1,11 @@ + + +

Endpoints

+

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. The endpoint of UCS consists of the service name, region ID, and external domain name. The format is as follows: ucs.region0_id.external_global_domain_name.

+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0005.html b/docs/ucs/api-ref/ucs_api_0005.html new file mode 100644 index 000000000..051ce5487 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0005.html @@ -0,0 +1,11 @@ + + +

Constraints

+
  • UCS imposes quotas on the number and capacity of resources that a user can access. By default, you can create a maximum of 50 fleets, 50 clusters, and 50 permission policies.
  • For more constraints, see the description of each API.
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0006.html b/docs/ucs/api-ref/ucs_api_0006.html new file mode 100644 index 000000000..3a5b72c4b --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0006.html @@ -0,0 +1,21 @@ + + +

Concepts

+
  • Domain

    A domain is created upon successful signing up. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user passwords and grant user permissions. The domain is a payment entity, which should not be used directly to perform routine management. For security purposes, create Identity and Access Management (IAM) users and grant them permissions for routine management.

    +
  • User

    An IAM user is created by an account in IAM to use cloud services. Each IAM user has its own identity credentials (password and access keys).

    +

    You can view the domain name and IAM user ID on the My Credentials page. API authentication requires information such as the domain, username, and password.

    +
  • Region

    A region is a geographic area in which cloud resources are deployed. Availability zones (AZs) in the same region can communicate with each other over an intranet, while AZs in different regions are isolated from each other. Deploying cloud resources in different regions can better suit certain user requirements or comply with local laws or regulations.

    +

    For details, see Region and AZ.

    +
  • AZ

    An AZ comprises one or more physical data centers equipped with independent ventilation, fire, water, and electricity facilities. Computing, network, storage, and other resources in an AZ are logically divided into multiple clusters. AZs within a region are interconnected using high-speed optical fibers to allow you to build cross-AZ high-availability systems.

    +
  • Project

    A region corresponds to a project by default. Default projects are defined to group and physically isolate resources (including computing, storage, and network resources) across regions. Users can be granted permissions in a default project to access all resources under theirdomains in the region associated with the project. If you need more refined access control, create subprojects under a default project and create resources in subprojects. Then you can assign users the permissions required to access only the resources in the specific subprojects.

    +
    Figure 1 Project isolation model
    +
  • Enterprise project

    Enterprise projects group and manage resources across regions. Resources in different enterprise projects are logically isolated.

    +

    For details about enterprise projects and about how to obtain enterprise project IDs, see Enterprise Management User Guide.

    +
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0007.html b/docs/ucs/api-ref/ucs_api_0007.html new file mode 100644 index 000000000..fe08504da --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0007.html @@ -0,0 +1,15 @@ + + +

Calling APIs

+
+ + diff --git a/docs/ucs/api-ref/ucs_api_0008.html b/docs/ucs/api-ref/ucs_api_0008.html new file mode 100644 index 000000000..2d509ef2f --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0008.html @@ -0,0 +1,177 @@ + + +

Making an API Request

+

This section describes the structure of a REST API request, and uses the IAM API for obtaining a user tokenobtaining a user token as an example to demonstrate how to call an API. The obtained token can then be used to authenticate the calling of other APIs.

+

Request URI

A request URI is in the following format:

+

{URI-scheme}://{Endpoint}/{resource-path}?{query-string}

+

Although a request URI is included in the request header, most programming languages or frameworks require the request URI to be transmitted separately.

+ +
+ + + + + + + + + + + + + + + + +
Table 1 URI parameters

Parameter

+

Description

+

URI-scheme

+

Protocol used to transmit requests. All APIs use HTTPS.

+

Endpoint

+

Domain name or IP address of the server bearing the REST service. The endpoint varies between services in different regions. It can be obtained from Regions and Endpoints"Regions and Endpoints".

+

resource-path

+

Access path of an API for performing a specified operation. Obtain the path from the URI of an API. For example, the resource-path of the API used to obtain a user token is /v3/auth/tokens.

+

query-string

+

Query parameter, which is optional. Ensure that a question mark (?) is included before each query parameter that is in the format of Parameter name=Parameter value. For example, ?limit=10 indicates that a maximum of 10 data records will be displayed.

+
+
+

To simplify the URI display in this document, each API is provided only with a resource-path and a request method. The URI-scheme of all APIs is HTTPS, and the endpoints of all APIs in the same region are identical.

+
+
+

Request Methods

The HTTP protocol defines the following request methods that can be used to send a request to the server. +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 2 HTTP methods

Method

+

Description

+

GET

+

Requests the server to return specified resources.

+

PUT

+

Requests the server to update specified resources.

+

POST

+

Requests the server to add resources or perform special operations.

+

DELETE

+

Requests the server to delete specified resources, for example, an object.

+

HEAD

+

Requests the server to return the response header.

+

PATCH

+

Requests the server to update partial content of a specified resource.

+

If the resource does not exist, a new resource will be created.

+
+
+
+

For example, in the case of the API used to obtain a user tokenobtain a user token, the request method is POST. The request is as follows:

+
1
POST https://{{endpoint}}/v3/auth/tokens
+
+
+
+

Request Header

You can also add additional header fields to a request, such as the fields required by a specified URI or HTTP method. For example, to request for the authentication information, add Content-Type, which specifies the request body type.

+
Table 3 lists common request header fields. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Common request header fields

Parameter

+

Description

+

Mandatory

+

Example Value

+

Host

+

Specifies the server domain name and port number of the resources being requested. The value can be obtained from the URL of the service API. The value is in the format of Hostname:Port number. If the port number is not specified, the default port is used. The default port number for https is 443.

+

No

+

This field is mandatory for AK/SK authentication.

+

code.test.com

+

or

+

code.test.com:443

+

Content-Type

+

Specifies the type (or format) of the message body. The default value application/json is recommended. Other values of this field will be provided for specific APIs if any.

+

Yes

+

application/json

+

Content-Length

+

Specifies the length of the request body. The unit is byte.

+

No

+

3495

+

X-Project-Id

+

Specifies the project ID. Obtain the project ID by following the instructions in Obtaining a Project ID.

+

No

+

e9993fc787d94b6c886cbaa340f9c0f4

+

X-Auth-Token

+

Specifies the user token.

+

It is a response to the API for obtaining a user token. (This is the only API that does not require authentication.)

+

After the request is processed, the value of X-Subject-Token in the response header is the token value.

+

No

+

This field is mandatory for token authentication.

+

The following is part of an example token:

+

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

+
+
+
+

In addition to supporting authentication using tokens, APIs support authentication using AK/SK, which uses SDKs to sign a request. During the signature, the Authorization (signature authentication) and X-Sdk-Date (time when a request is sent) headers are automatically added in the request.

+

For more details, see "Authentication Using AK/SK" in Authentication.

+
+

The API used to obtain a user tokenobtain a user token does not require authentication. Only the Content-Type field needs to be added to requests for calling the API. An example of such requests is as follows:

+
1
+2
POST https://{{endpoint}}/v3/auth/tokens
+Content-Type: application/json
+
+
+
+

(Optional) Request Body

This part is optional. The body of a request is often sent in a structured format (for example, JSON or XML) as specified in the Content-Type header field. The request body transfers content except the request header.

+

The request body varies between APIs. Some APIs do not require the request body, such as the APIs requested using the GET and DELETE methods.

+

In the case of the API used to obtain a user tokenobtain a user token, the request parameters and parameter description can be obtained from the API request. The following provides an example request with a body included. Replace username, domainname (domain), ******** (login password), and xxxxxxxxxxxxxxxxxx (project name) with the actual values. Obtain the project name from Regions and Endpoints"Regions and Endpoints".

+

If all data required for the API request is available, you can send the request to call the API through curl, Postman, or coding. In the response to the API used to obtain a user token, x-subject-token is the desired user token. This token can then be used to authenticate the calling of other APIs.

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0009.html b/docs/ucs/api-ref/ucs_api_0009.html new file mode 100644 index 000000000..0f20c85b3 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0009.html @@ -0,0 +1,116 @@ + + +

Authentication

+

Requests for calling an API can be authenticated using an AK/SK pair.

+

AK/SK Authentication

An AK/SK is used to verify the identity of a request sender. In AK/SK authentication, a signature needs to be obtained and then added to requests.

+

AK: access key ID, which is a unique identifier used together with an SK to sign requests cryptographically.

+

SK: secret access key, which is used together with an AK to sign requests cryptographically. It identifies a request sender and prevents the request from being modified.

+
+

The following demo shows how to sign a request and use an HTTP client to send an HTTPS request.

+

Download the demo at https://github.com/api-gate-way/SdkDemo.

+

If you do not need the demo project, visit the following URL to download the API Gateway signing SDK:

+

Request an API Gateway signing SDK from the enterprise administrator.

+

Decompress the downloaded package to obtain a JAR file. Add the decompressed JAR file to the dependency path, as shown below.

+
Figure 1 Adding the API Gateway signing SDK
+
  1. Generate an AK/SK. (If you already have an AK/SK file, skip this step and find it. Generally, the file name is credentials.csv.)

    1. Log in to the console.
    2. Click the username and select My Credentials from the drop-down list.
    1. In the navigation tree on the left, click Access Keys.
    2. Click Create Access Key. The Create Access Key dialog box is displayed.
    3. Click OK to download the AK/SK.

      Keep the AK/SK secure.

      +
      +
    +

  2. Download and decompress the demo code.
  3. Import the demo project into Eclipse.

    Figure 2 Selecting an existing project
    +
    Figure 3 Selecting the decompressed demo code
    +
    Figure 4 Example structure
    +

  4. Sign the request.

    The request signing method is integrated in the JAR files imported in 3. The request needs to be signed before it is sent. The signature will then be added as part of the HTTP header to the request.

    +

    The demo code is classified into three classes:

    +
    • AccessService: an abstract class that merges the GET, POST, PUT, and DELETE methods into the access method
    • Demo: an execution entry used to simulate the sending of GET, POST, PUT, and DELETE requests
    • AccessServiceImpl: access method implementation, which contains the code required for communication with API Gateway
    +
    1. Edit the main method in the Demo.java file and replace the bold text with actual values.

      If you use other methods such as POST, PUT, and DELETE, see the corresponding comment.

      +

      Specify region, serviceName, AK/SK, and URL with actual values. In this demo, the URLs for accessing VPC resources are used.

      +

      To obtain the project ID in the URLs, see Obtaining a Project ID.

      +

      To obtain the endpoint, see "Regions and Endpoints".

      +
       1
      + 2
      + 3
      + 4
      + 5
      + 6
      + 7
      + 8
      + 9
      +10
      +11
      +12
      +13
      +14
      +15
      +16
      +17
      +18
      +19
      +20
      +21
      +22
      +23
      +24
      +25
      +26
      +27
      +28
      +29
      +30
      +31
      +32
      +33
      +34
      +35
      +36
      +37
      +38
      //TODO: Replace region with the name of the region in which the service to be accessed is located. 
      +private static final String region = "";
      +
      +//TODO: Replace vpc with the name of the service you want to access. For example, ecs, vpc, iam, and elb.
      +private static final String serviceName = "";
      +
      +public static void main(String[] args) throws UnsupportedEncodingException
      +{
      +//TODO: Replace the AK and SK with those obtained on the My Credentials page.
      +String ak = "ZIRRKMTWP******1WKNKB";
      +String sk = "Us0mdMNHk******YrRCnW0ecfzl";
      +
      +//TODO: To specify a project ID (multi-project scenarios), add the X-Project-Id header.
      +//TODO: To access a global service, such as IAM, DNS, CDN, and TMS, add the X-Domain-Id header to specify an account ID.
      +//TODO: To add a header, find "Add special headers" in the AccessServiceImple.java file.
      +
      +//TODO: Test the API
      +String url = "https://{Endpoint}/v1/{project_id}/vpcs";
      +get(ak, sk, url);
      +
      +//TODO: When creating a VPC, replace {project_id} in postUrl with the actual value.
      +//String postUrl = "https://serviceEndpoint/v1/{project_id}/cloudservers";
      +//String postbody ="{\"vpc\": {\"name\": \"vpc\",\"cidr\": \"192.168.0.0/16\"}}";
      +//post(ak, sk, postUrl, postbody);
      +
      +//TODO: When querying a VPC, replace {project_id} in url with the actual value.
      +//String url = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}";
      +//get(ak, sk, url);
      +
      +//TODO: When updating a VPC, replace {project_id} and {vpc_id} in putUrl with the actual values.
      +//String putUrl = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}";
      +//String putbody ="{\"vpc\":{\"name\": \"vpc1\",\"cidr\": \"192.168.0.0/16\"}}";
      +//put(ak, sk, putUrl, putbody);
      +
      +//TODO: When deleting a VPC, replace {project_id} and {vpc_id} in deleteUrl with the actual values.
      +//String deleteUrl = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}";
      +//delete(ak, sk, deleteUrl);
      +}
      +
      +
      +
    2. Compile and run the code to call an API.

      In the Package Explorer area on the left, right-click Demo.java and choose Run AS > Java Application from the shortcut menu to run the demo code.

      +

      You can view the API calling logs on the console.

      +
    +

+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0010.html b/docs/ucs/api-ref/ucs_api_0010.html new file mode 100644 index 000000000..b0f8e31f5 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0010.html @@ -0,0 +1,59 @@ + + +

Response

+

Status Code

After sending a request, you will receive a response, including a status code, response header, and response body.

+

A status code is a group of digits, ranging from 1xx to 5xx. It indicates the status of a request. For more information, see Status Codes.

+

For example, if status code 201 is returned for calling the API used to obtain a user token, the request is successful.

+
+

Response Header

Similar to a request, a response also has a header, for example, Content-Type.

+

Figure 1 shows the response header fields for the API used to obtain a user token. The X-Subject-Token header field is the desired user token. This token can then be used to authenticate the calling of other APIs.

+

For security purposes, you are advised to set the token in ciphertext in configuration files or environment variables and decrypt it when using it.

+
+
Figure 1 Header fields of the response to the request for obtaining a user token
+
+

(Optional) Response Body

The body of a response is often returned in structured format (for example, JSON or XML) as specified in the Content-Type header field. The response body transfers content except the response header.

+
+

The following shows part of the response body for the API used to obtain a user token.

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
{
+    "token": {
+        "expires_at": "2019-02-13T06:52:13.855000Z",
+        "methods": [
+            "password"
+        ],
+        "catalog": [
+            {
+                "endpoints": [
+                    {
+                        "region_id": "az-01",
+......
+
+
+

If an error occurs during API calling, an error code and a message will be displayed. The following shows an error response body.

+
1
+2
+3
+4
{
+    "error_msg": "The request message format is invalid.",
+    "error_code": "IMG.0001"
+}
+
+
+

In the response body, error_code is an error code, and error_msg provides information about the error.

+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0011.html b/docs/ucs/api-ref/ucs_api_0011.html new file mode 100644 index 000000000..1d674d785 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0011.html @@ -0,0 +1,13 @@ + + +

API

+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0015.html b/docs/ucs/api-ref/ucs_api_0015.html new file mode 100644 index 000000000..12bf0388f --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0015.html @@ -0,0 +1,21 @@ + + +

Appendix

+
+ + diff --git a/docs/ucs/api-ref/ucs_api_0016.html b/docs/ucs/api-ref/ucs_api_0016.html new file mode 100644 index 000000000..07f290589 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0016.html @@ -0,0 +1,121 @@ + + +

Status Codes

+
  • Normal values +
    + + + + + + + + + + + + + + + + +

    Returned Value

    +

    Description

    +

    200 OK

    +

    The results of GET and PUT operations are returned as expected.

    +

    201 Created

    +

    The results of the POST operation are returned as expected.

    +

    202 Accepted

    +

    The request has been accepted for processing.

    +

    204 No Content

    +

    The results of the DELETE operation are returned as expected.

    +
    +
    +
  • Abnormal values +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Returned Value

    +

    Description

    +

    400 Bad Request

    +

    The server failed to process the request.

    +

    401 Unauthorized

    +

    You must enter a username and password to access the requested page.

    +

    403 Forbidden

    +

    You are forbidden to access the requested page.

    +

    404 Not Found

    +

    The server could not find the requested page.

    +

    405 Method Not Allowed

    +

    You are not allowed to use the method specified in the request.

    +

    406 Not Acceptable

    +

    The response generated by the server could not be accepted by the client.

    +

    407 Proxy Authentication Required

    +

    You must first authenticate yourself with the proxy.

    +

    408 Request Timeout

    +

    The server timed out waiting for the request.

    +

    409 Conflict

    +

    The request could not be processed due to a conflict.

    +

    500 Internal Server Error

    +

    The request failed due to a service error.

    +

    501 Not Implemented

    +

    The request failed because the server does not support the requested function.

    +

    502 Bad Gateway

    +

    The request failed because the request is invalid.

    +

    503 Service Unavailable

    +

    The request failed because the system is temporarily abnormal.

    +

    504 Gateway Timeout

    +

    A gateway timeout error occurred.

    +
    +
    +
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0018.html b/docs/ucs/api-ref/ucs_api_0018.html new file mode 100644 index 000000000..8f96efe42 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0018.html @@ -0,0 +1,46 @@ + + +

Obtaining a Project ID

+

Scenarios

A project ID is required for some URLs when an API is called. Therefore, you need to obtain a project ID in advance. Two methods are available:

+ +
+

Obtaining a Project ID by Calling an API

You can obtain the project ID by calling the IAM API used to query project information based on the specified criteria.

+

The API used to obtain a project ID is GET https://{Endpoint}/v3/projects. {Endpoint} is the IAM endpoint and can be obtained from the administratorRegions and Endpoints. For details about API authentication, see Authentication.

+

The following is an example response. The value of id is the project ID.

+
{
+    "projects": [
+        {
+            "domain_id": "65382450e8f64ac0870cd180d14e684b",
+            "is_domain": false,
+            "parent_id": "65382450e8f64ac0870cd180d14e684b",
+            "name": "project_name",
+            "description": "",
+            "links": {
+                "next": null,
+                "previous": null,
+                "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99"
+            },
+            "id": "a4a5d4098fb4474fa22cd05f897d6b99",
+            "enabled": true
+        }
+    ],
+    "links": {
+        "next": null,
+        "previous": null,
+        "self": "https://www.example.com/v3/projects"
+    }
+}
+
+

Obtaining a Project ID on the Console

A project ID needs to be specified in the URIs of some APIs. Therefore, you need to obtain the project ID before calling APIs. The following procedure describes how to obtain a project ID:
  1. Log in to the management console.
  2. Click the username and select My Credentials from the drop-down list.

    On the My Credentials page, view project IDs in the project list.

    +
    Figure 1 Viewing project IDs
    +

    In multi-project scenarios, expand the region, and obtain your sub-project ID from the Project ID column.

    +
+
+
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0019.html b/docs/ucs/api-ref/ucs_api_0019.html new file mode 100644 index 000000000..ea6636da3 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0019.html @@ -0,0 +1,13 @@ + + +

Obtaining an Account ID

+

An account ID is required for some URLs when an API is called. To obtain the account ID, perform the following steps:

+
  1. Register an account and log in to the management console.
  2. Click the username and select My Credentials from the drop-down list.

    On the API Credentials page, view Account ID.

    +
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0022.html b/docs/ucs/api-ref/ucs_api_0022.html new file mode 100644 index 000000000..b4417b6a2 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0022.html @@ -0,0 +1,11 @@ + + +

Country Codes

+
  • AF: Afghanistan
  • AL: Albania
  • DZ: Algeria
  • AD: Andorra
  • AO: Angola
  • AG: Antigua and Barbuda
  • AR: Argentina
  • AM: Armenia
  • AU: Australia
  • AT: Austria
  • AZ: Azerbaijan
  • BS: Bahamas
  • BH: Bahrain
  • BD: Bangladesh
  • BB: Barbados
  • BY: Belarus
  • BE: Belgium
  • BZ: Belize
  • BJ: Benin
  • BT: Bhutan
  • BO: Bolivia
  • BA: Bosnia and Herzegovina
  • BW: Botswana
  • BR: Brazil
  • BN: Brunei
  • BG: Bulgaria
  • BF: Burkina Faso
  • BI: Burundi
  • CV: Cape Verde
  • KH: Cambodia
  • CM: Cameroon
  • CA: Canada
  • CF: Central Africa
  • TD: Chad
  • CL: Chile
  • CN: China
  • CO: Colombia
  • KM: Comoros
  • CG: Republic of the Congo
  • CD: Democratic Republic of the Congo
  • CR: Costa Rica
  • CI: Ivory Coast
  • HR: Croatia
  • CU: Cuba
  • CY: Cyprus
  • DK: Denmark
  • DJ: Djibouti
  • DM: Dominic
  • DO: Dominica
  • EC: Ecuador
  • EG: Egypt
  • SV: El Salvador
  • GQ: Equatorial Guinea
  • ER: Eritrea
  • EE: Estonia
  • SZ: Kingdom of Eswatini
  • ET: Ethiopia
  • FJ: Fiji
  • FI: Finland
  • FR: France
  • GA: Gabon
  • GM: Gambia
  • GE: Georgia
  • DE: Germany
  • GH: Ghana
  • GR: Greece
  • GD: Grenada
  • GT: Guatemala
  • GN: Guinea
  • GW: Guinea-Bissau
  • GY: Guyana
  • HT: Haiti
  • VA: Vatican City State
  • HN: Honduras
  • HU: Hungary
  • IS: Iceland
  • IN: India
  • ID: Indonesia
  • IR: Iran
  • IQ: Iraq
  • IE: Ireland
  • IL: Israel
  • IT: Italy
  • JM: Jamaica
  • JP: Japan
  • JO: Jordan
  • KZ: Kazakhstan
  • KE: Kenya
  • KI: Kiribati
  • KP: DPRK
  • KR: ROK
  • KW: Kuwait
  • KG: Kyrgyzstan
  • LA: Laos
  • LV: Latvia
  • LB: Lebanon
  • LS: Lesotho
  • LR: Liberia
  • LY: Libya
  • LI: Liechtenstein
  • LT: Lithuania
  • LU: Luxembourg
  • MG: Madagascar
  • MW: Malawi
  • MY: Malaysia
  • MV: Maldives
  • ML: Republic of Mali
  • MT: Malta
  • MH: Republic of the Marshall Islands
  • MR: Mauritania
  • MU: Mauritius
  • MX: Mexico
  • FM: Federated States of Micronesia
  • MD: Moldova
  • MC: Monaco
  • MN: Mongolia
  • ME: Montenegro
  • MA: Morocco
  • MZ: Mozambique
  • MM: Myanmar
  • NA: Namibia
  • NR: Republic of Nauru
  • NP: Nepal
  • NL: Netherlands
  • NZ: New Zealand
  • NI: Nicaragua
  • NE: Niger
  • NG: Nigeria
  • MK: North Macedonia
  • NO: Kingdom of Norway
  • OM: Sultanate of Oman
  • PK: Pakistan
  • PW: Palau
  • PA: Panama
  • PG: Papua New Guinea
  • PY: Paraguay
  • PE: Republic of Peru
  • PH: Republic of the Philippines
  • PL: Republic of Poland
  • PT: Portugal
  • QA: Qatar
  • RO: Romania
  • RU: Russia
  • RW: Rwanda
  • KN: Saint Kitts and Nevis
  • LC: Saint Lucia
  • VC: Saint Vincent and the Grenadines
  • WS: Samoa
  • SM: San Marino
  • ST: Sao Tome and Principe
  • SA: Saudi Arabia
  • SN: Senegal
  • RS: Serbia
  • SC: Seychelles
  • SL: Sierra Leone
  • SG: Singapore
  • SK: Slovakia
  • SI: Slovenia
  • SB: Solomon Islands
  • SO: Somalia
  • ZA: South Africa
  • SS: South Sudan
  • ES: Spain
  • LK: Sri Lanka
  • SD: Sudan
  • SR: Suriname
  • SE: Sweden
  • CH: Swiss Confederation
  • SY: Syria
  • TJ: Tajikistan
  • TZ: Tanzania
  • TH: Thailand
  • TL: Democratic Republic of Timor-Leste
  • TG: Togolese Republic
  • TO: Kingdom of Tonga
  • TT: Trinidad and Tobago
  • TN: Tunisia
  • TR: Republic of Türkiye
  • TM: Turkmenistan
  • TV: Tuvalu
  • UG: Uganda
  • UA: Ukraine
  • AE: United Arab Emirates
  • GB: United Kingdom
  • US: United States
  • UY: Uruguay
  • UZ: Uzbekistan
  • VU: Vanuatu
  • VE: Venezuela
  • VN: Socialist Republic of Viet Nam
  • YE: Republic of Yemen
  • ZM: Zambia
  • ZW: Zimbabwe
+
+
+ +
+ diff --git a/docs/ucs/api-ref/ucs_api_0024.html b/docs/ucs/api-ref/ucs_api_0024.html new file mode 100644 index 000000000..7157a85a4 --- /dev/null +++ b/docs/ucs/api-ref/ucs_api_0024.html @@ -0,0 +1,66 @@ + + +

Cluster Categories and Types

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Category

+

Type

+

Provider

+

Attached clusters

+

AKS clusters

+

Azure

+

EKS clusters

+

AWS

+

GKE clusters

+

Google Cloud

+

OpenShift clusters

+

OpenShift

+

Self-managed clusters

+

Private Kubernetes provider

+

Self-hosted clusters

+

Self

+

OTC clusters (self)

+

CCE standard clusters

+

OTC

+

CCE Turbo clusters

+

OTC

+
+
+
+
+ +
+