更新AddonInstance
功能介绍
更新插件实例的功能。
调用方法
请参见如何调用API。
URI
PUT /api/v3/addons/{id}
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
id |
是 |
String |
插件实例id |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
kind |
是 |
String |
API类型,固定值“Addon”,该值不可修改,该字段传入无效。 |
apiVersion |
是 |
String |
API版本,固定值“v3”,该值不可修改,该字段传入无效。 |
metadata |
是 |
AddonMetadata object |
基本信息,为集合类的元素类型,包含一组由不同名称定义的属性 |
spec |
是 |
InstanceRequestSpec object |
spec是集合类的元素类型,内容为插件实例安装/升级的具体请求信息 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
uid |
否 |
String |
唯一id标识 |
name |
否 |
String |
插件名称 |
alias |
否 |
String |
插件别名 |
labels |
否 |
Map<String,String> |
插件标签,key/value对格式,接口保留字段,填写不会生效 |
annotations |
否 |
Map<String,String> |
插件注解,由key/value组成
|
updateTimestamp |
否 |
String |
更新时间 |
creationTimestamp |
否 |
String |
创建时间 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
kind |
String |
API类型,固定值“Addon”,该值不可修改。 |
apiVersion |
String |
API版本,固定值“v3”,该值不可修改。 |
metadata |
AddonMetadata object |
基本信息,为集合类的元素类型,包含一组由不同名称定义的属性 |
spec |
InstanceSpec object |
spec是集合类的元素类型,内容为插件实例具体信息,实例的详细描述主体部分都在spec中给出 |
status |
AddonInstanceStatus object |
插件实例状态 |
参数 |
参数类型 |
描述 |
---|---|---|
uid |
String |
唯一id标识 |
name |
String |
插件名称 |
alias |
String |
插件别名 |
labels |
Map<String,String> |
插件标签,key/value对格式,接口保留字段,填写不会生效 |
annotations |
Map<String,String> |
插件注解,由key/value组成
|
updateTimestamp |
String |
更新时间 |
creationTimestamp |
String |
创建时间 |
参数 |
参数类型 |
描述 |
---|---|---|
clusterID |
String |
集群id |
version |
String |
插件模板版本号,如1.0.0 |
addonTemplateName |
String |
插件模板名称,如coredns |
addonTemplateType |
String |
插件模板类型 |
addonTemplateLogo |
String |
插件模板logo图片的地址 |
addonTemplateLabels |
Array of strings |
插件模板所属类型 |
description |
String |
插件模板描述 |
values |
Map<String,Object> |
插件模板安装参数(各插件不同),请根据具体插件模板信息填写安装参数。 |
参数 |
参数类型 |
描述 |
---|---|---|
status |
String |
插件实例状态, 取值如下
|
Reason |
String |
插件安装失败原因 |
message |
String |
安装错误详情 |
targetVersions |
Array of strings |
此插件版本,支持升级的集群版本 |
currentVersion |
Versions object |
当前插件实例使用的具体插件版本信息 |
isRollbackable |
Boolean |
是否支持回滚到插件升级前的插件版本 |
previousVersion |
String |
插件升级或回滚前的版本 |
参数 |
参数类型 |
描述 |
---|---|---|
version |
String |
插件版本号 |
input |
Object |
插件安装参数 |
stable |
Boolean |
是否为稳定版本 |
translate |
Object |
供界面使用的翻译信息 |
supportVersions |
Array of SupportVersions objects |
支持集群版本号 |
creationTimestamp |
String |
创建时间 |
updateTimestamp |
String |
更新时间 |
请求示例
更新everest插件,更新后的插件版本为2.1.30。
{ "kind" : "Addon", "apiVersion" : "v3", "metadata" : { "annotations" : { "addon.upgrade/type" : "upgrade" } }, "spec" : { "clusterID" : "*****", "version" : "2.1.30", "addonTemplateName" : "everest", "values" : { "basic" : { "bms_url" : "*****", "driver_init_image_version" : "2.1.30", "ecsEndpoint" : "*****", "everest_image_version" : "2.1.30", "evs_url" : "*****", "iam_url" : "*****", "ims_url" : "*****", "obs_url" : "*****", "platform" : "linux-amd64", "sfs30_url" : "*****", "sfs_turbo_url" : "*****", "sfs_url" : "*****", "supportHcs" : false, "swr_addr" : "*****", "swr_user" : "hwofficial", "rbac_enabled" : true, "cluster_version" : "v1.23" }, "flavor" : { "description" : "High avaiable", "name" : "HA", "replicas" : 2, "resources" : [ { "limitsCpu" : "250m", "limitsMem" : "2000Mi", "name" : "everest-csi-controller", "requestsCpu" : "250m", "requestsMem" : "1500Mi" }, { "limitsCpu" : "500m", "limitsMem" : "300Mi", "name" : "everest-csi-driver", "requestsCpu" : "100m", "requestsMem" : "300Mi" } ], "category" : [ "CCE", "Turbo" ] }, "custom" : { "cluster_id" : "*****", "csi_attacher_detach_worker_threads" : "60", "csi_attacher_worker_threads" : "60", "default_vpc_id" : "*****", "disable_auto_mount_secret" : false, "enable_node_attacher" : true, "flow_control" : { }, "multiAZEnabled" : false, "over_subscription" : "80", "project_id" : "*****", "volume_attaching_flow_ctrl" : "0" } } } }
响应示例
状态码: 200
OK
{ "kind" : "Addon", "apiVersion" : "v3", "metadata" : { "uid" : "******", "name" : "everest", "alias" : "everest", "creationTimestamp" : "2023-07-03T10:57:43Z", "updateTimestamp" : "2023-07-03T11:24:05Z" }, "spec" : { "clusterID" : "******", "version" : "2.1.30", "addonTemplateName" : "everest", "addonTemplateType" : "helm", "addonTemplateLogo" : "******", "addonTemplateLabels" : [ "Storage" ], "description" : "", "values" : { "basic" : { "bms_url" : "******", "cluster_version" : "v1.23", "driver_init_image_version" : "2.1.30", "ecsEndpoint" : "******", "everest_image_version" : "2.1.30", "evs_url" : "******", "iam_url" : "******", "ims_url" : "******", "obs_url" : "******", "platform" : "linux-amd64", "rbac_enabled" : true, "sfs30_url" : "******", "sfs_turbo_url" : "******", "sfs_url" : "******", "supportHcs" : false, "swr_addr" : "******", "swr_user" : "hwofficial" }, "custom" : { "cluster_id" : "******", "cluster_version" : "v1.23.8-r0", "csi_attacher_detach_worker_threads" : "60", "csi_attacher_worker_threads" : "60", "default_vpc_id" : "******", "disable_auto_mount_secret" : false, "enable_node_attacher" : false, "flow_control" : { }, "multiAZEnabled" : false, "over_subscription" : "80", "project_id" : "******", "volume_attaching_flow_ctrl" : "0" }, "flavor" : { "category" : [ "CCE", "Turbo" ], "description" : "Has only one instance", "name" : "Single", "replicas" : 1, "resources" : [ { "limitsCpu" : "250m", "limitsMem" : "600Mi", "name" : "everest-csi-controller", "requestsCpu" : "250m", "requestsMem" : "600Mi" }, { "limitsCpu" : "100m", "limitsMem" : "300Mi", "name" : "everest-csi-driver", "requestsCpu" : "100m", "requestsMem" : "300Mi" } ] }, "systemAutoInject" : { "cluster" : { "clusterID" : "******", "clusterNetworkMode" : "vpc-router", "clusterVersion" : "v1.23.8-r0" }, "user" : { "projectID" : "******" } } } }, "status" : { "status" : "upgrading", "Reason" : "addon upgrading", "message" : "", "targetVersions" : null, "isRollbackable" : false, "currentVersion" : { "version" : "2.1.30", "input" : { "basic" : { "bms_url" : "******", "driver_init_image_version" : "2.1.30", "ecsEndpoint" : "******", "everest_image_version" : "2.1.30", "evs_url" : "******", "iam_url" : "******", "ims_url" : "******", "obs_url" : "******", "platform" : "******", "sfs30_url" : "******", "sfs_turbo_url" : "******", "sfs_url" : "******", "supportHcs" : false, "swr_addr" : "******", "swr_user" : "hwofficial" }, "parameters" : { "common" : { "defaultVPCId" : 1234567 }, "custom" : { "cluster_id" : "", "csi_attacher_detach_worker_threads" : "60", "csi_attacher_worker_threads" : "60", "default_vpc_id" : "", "disable_auto_mount_secret" : false, "enable_node_attacher" : false, "flow_control" : { }, "multiAZEnabled" : false, "over_subscription" : "80", "project_id" : "", "volume_attaching_flow_ctrl" : "0" }, "flavor1" : { "description" : "High avaiable", "name" : "HA", "replicas" : 2, "resources" : [ { "limitsCpu" : "250m", "limitsMem" : "1500Mi", "name" : "everest-csi-controller", "requestsCpu" : "250m", "requestsMem" : "600Mi" }, { "limitsCpu" : "500m", "limitsMem" : "300Mi", "name" : "everest-csi-driver", "requestsCpu" : "100m", "requestsMem" : "300Mi" } ] }, "flavor2" : { "description" : "Has only one instance", "name" : "Single", "replicas" : 1, "resources" : [ { "limitsCpu" : "250m", "limitsMem" : "600Mi", "name" : "everest-csi-controller", "requestsCpu" : "250m", "requestsMem" : "600Mi" }, { "limitsCpu" : "100m", "limitsMem" : "300Mi", "name" : "everest-csi-driver", "requestsCpu" : "100m", "requestsMem" : "300Mi" } ] }, "flavor3" : { "description" : "custom resources", "name" : "custom-resources", "replicas" : 2, "resources" : [ { "limitsCpu" : "250m", "limitsMem" : "2000Mi", "name" : "everest-csi-controller", "requestsCpu" : "250m", "requestsMem" : "1500Mi" }, { "limitsCpu" : "500m", "limitsMem" : "300Mi", "name" : "everest-csi-driver", "requestsCpu" : "100m", "requestsMem" : "300Mi" } ] } } }, "stable" : true, "translate" : { "en_US" : { "addon" : { "changeLog" : "", "description" : "" }, "description" : { "Parameters.flavor1.description" : "Deploy the add-on with two instances, delivering high availability but requiring more compute resources.", "Parameters.flavor1.name" : "HA", "Parameters.flavor2.description" : "Deploy the add-on with one instance.", "Parameters.flavor2.name" : "Standalone", "Parameters.flavor3.name" : "Custom" } }, "fr_FR" : { "addon" : { "changeLog" : "", "description" : "" }, "description" : { "Parameters.flavor1.description" : "Déployez avec deux instances, haute disponibilité.", "Parameters.flavor1.name" : "HA", "Parameters.flavor2.description" : "Déployez avec une seule instance.", "Parameters.flavor2.name" : "Célibataire", "Parameters.flavor3.name" : "Douane" } }, "zh_CN" : { "addon" : { "changeLog" : "", "description" : "" }, "description" : { "Parameters.flavor1.description" : "双实例部署,具有高可用能力,需占用更多的计算资源。", "Parameters.flavor1.name" : "高可用", "Parameters.flavor2.description" : "单实例部署.", "Parameters.flavor2.name" : "单实例", "Parameters.flavor3.description" : "自定义资源规格部署", "Parameters.flavor3.name" : "自定义" } } }, "supportVersions" : null, "creationTimestamp" : "2023-05-12T16:10:05Z", "updateTimestamp" : "2023-05-12T16:10:05Z" } } }
SDK代码示例
SDK代码示例如下。
更新everest插件,更新后的插件版本为2.1.30。
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; import java.util.Map; import java.util.HashMap; public class UpdateAddonInstanceSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); UpdateAddonInstanceRequest request = new UpdateAddonInstanceRequest(); request.withId("{id}"); InstanceRequest body = new InstanceRequest(); Map<String, Object> listSpecValues = new HashMap<>(); listSpecValues.put("basic", "{\"evs_url\":\"*****\",\"obs_url\":\"*****\",\"cluster_version\":\"v1.23\",\"supportHcs\":false,\"iam_url\":\"*****\",\"rbac_enabled\":true,\"ecsEndpoint\":\"*****\",\"sfs_url\":\"*****\",\"platform\":\"linux-amd64\",\"ims_url\":\"*****\",\"driver_init_image_version\":\"2.1.30\",\"sfs30_url\":\"*****\",\"sfs_turbo_url\":\"*****\",\"swr_user\":\"hwofficial\",\"bms_url\":\"*****\",\"everest_image_version\":\"2.1.30\",\"swr_addr\":\"*****\"}"); listSpecValues.put("flavor", "{\"replicas\":2,\"name\":\"HA\",\"description\":\"High avaiable\",\"resources\":[{\"limitsCpu\":\"250m\",\"name\":\"everest-csi-controller\",\"limitsMem\":\"2000Mi\",\"requestsMem\":\"1500Mi\",\"requestsCpu\":\"250m\"},{\"limitsCpu\":\"500m\",\"name\":\"everest-csi-driver\",\"limitsMem\":\"300Mi\",\"requestsMem\":\"300Mi\",\"requestsCpu\":\"100m\"}],\"category\":[\"CCE\",\"Turbo\"]}"); listSpecValues.put("custom", "{\"csi_attacher_worker_threads\":\"60\",\"cluster_id\":\"*****\",\"csi_attacher_detach_worker_threads\":\"60\",\"disable_auto_mount_secret\":false,\"over_subscription\":\"80\",\"project_id\":\"*****\",\"enable_node_attacher\":true,\"volume_attaching_flow_ctrl\":\"0\",\"multiAZEnabled\":false,\"flow_control\":{},\"default_vpc_id\":\"*****\"}"); InstanceRequestSpec specbody = new InstanceRequestSpec(); specbody.withVersion("2.1.30") .withClusterID("*****") .withValues(listSpecValues) .withAddonTemplateName("everest"); Map<String, String> listMetadataAnnotations = new HashMap<>(); listMetadataAnnotations.put("addon.upgrade/type", "upgrade"); AddonMetadata metadatabody = new AddonMetadata(); metadatabody.withAnnotations(listMetadataAnnotations); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("Addon"); request.withBody(body); try { UpdateAddonInstanceResponse response = client.updateAddonInstance(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
更新everest插件,更新后的插件版本为2.1.30。
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] credentials = BasicCredentials(ak, sk) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateAddonInstanceRequest() request.id = "{id}" listValuesSpec = { "basic": "{\"evs_url\":\"*****\",\"obs_url\":\"*****\",\"cluster_version\":\"v1.23\",\"supportHcs\":false,\"iam_url\":\"*****\",\"rbac_enabled\":true,\"ecsEndpoint\":\"*****\",\"sfs_url\":\"*****\",\"platform\":\"linux-amd64\",\"ims_url\":\"*****\",\"driver_init_image_version\":\"2.1.30\",\"sfs30_url\":\"*****\",\"sfs_turbo_url\":\"*****\",\"swr_user\":\"hwofficial\",\"bms_url\":\"*****\",\"everest_image_version\":\"2.1.30\",\"swr_addr\":\"*****\"}", "flavor": "{\"replicas\":2,\"name\":\"HA\",\"description\":\"High avaiable\",\"resources\":[{\"limitsCpu\":\"250m\",\"name\":\"everest-csi-controller\",\"limitsMem\":\"2000Mi\",\"requestsMem\":\"1500Mi\",\"requestsCpu\":\"250m\"},{\"limitsCpu\":\"500m\",\"name\":\"everest-csi-driver\",\"limitsMem\":\"300Mi\",\"requestsMem\":\"300Mi\",\"requestsCpu\":\"100m\"}],\"category\":[\"CCE\",\"Turbo\"]}", "custom": "{\"csi_attacher_worker_threads\":\"60\",\"cluster_id\":\"*****\",\"csi_attacher_detach_worker_threads\":\"60\",\"disable_auto_mount_secret\":false,\"over_subscription\":\"80\",\"project_id\":\"*****\",\"enable_node_attacher\":true,\"volume_attaching_flow_ctrl\":\"0\",\"multiAZEnabled\":false,\"flow_control\":{},\"default_vpc_id\":\"*****\"}" } specbody = InstanceRequestSpec( version="2.1.30", cluster_id="*****", values=listValuesSpec, addon_template_name="everest" ) listAnnotationsMetadata = { "addon.upgrade/type": "upgrade" } metadatabody = AddonMetadata( annotations=listAnnotationsMetadata ) request.body = InstanceRequest( spec=specbody, metadata=metadatabody, api_version="v3", kind="Addon" ) response = client.update_addon_instance(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
更新everest插件,更新后的插件版本为2.1.30。
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateAddonInstanceRequest{} request.Id = "{id}" var listValuesSpec = map[string]interface{}{ "basic": "{\"evs_url\":\"*****\",\"obs_url\":\"*****\",\"cluster_version\":\"v1.23\",\"supportHcs\":false,\"iam_url\":\"*****\",\"rbac_enabled\":true,\"ecsEndpoint\":\"*****\",\"sfs_url\":\"*****\",\"platform\":\"linux-amd64\",\"ims_url\":\"*****\",\"driver_init_image_version\":\"2.1.30\",\"sfs30_url\":\"*****\",\"sfs_turbo_url\":\"*****\",\"swr_user\":\"hwofficial\",\"bms_url\":\"*****\",\"everest_image_version\":\"2.1.30\",\"swr_addr\":\"*****\"}", "flavor": "{\"replicas\":2,\"name\":\"HA\",\"description\":\"High avaiable\",\"resources\":[{\"limitsCpu\":\"250m\",\"name\":\"everest-csi-controller\",\"limitsMem\":\"2000Mi\",\"requestsMem\":\"1500Mi\",\"requestsCpu\":\"250m\"},{\"limitsCpu\":\"500m\",\"name\":\"everest-csi-driver\",\"limitsMem\":\"300Mi\",\"requestsMem\":\"300Mi\",\"requestsCpu\":\"100m\"}],\"category\":[\"CCE\",\"Turbo\"]}", "custom": "{\"csi_attacher_worker_threads\":\"60\",\"cluster_id\":\"*****\",\"csi_attacher_detach_worker_threads\":\"60\",\"disable_auto_mount_secret\":false,\"over_subscription\":\"80\",\"project_id\":\"*****\",\"enable_node_attacher\":true,\"volume_attaching_flow_ctrl\":\"0\",\"multiAZEnabled\":false,\"flow_control\":{},\"default_vpc_id\":\"*****\"}", } versionSpec:= "2.1.30" specbody := &model.InstanceRequestSpec{ Version: &versionSpec, ClusterID: "*****", Values: listValuesSpec, AddonTemplateName: "everest", } var listAnnotationsMetadata = map[string]string{ "addon.upgrade/type": "upgrade", } metadatabody := &model.AddonMetadata{ Annotations: listAnnotationsMetadata, } request.Body = &model.InstanceRequest{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "Addon", } response, err := client.UpdateAddonInstance(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
OK |
错误码
请参见错误码。