Rolling Back an Add-on Instance
Function
Roll back the add-on instance version to the source version. Only when the status.isRollbackable parameter is set to true, and the add-on instance is in the running, available, abnormal, upgradeFailed, or rollbackFailed state, the version can be rolled back to the source version.
Calling Method
For details, see Calling APIs.
URI
POST /api/v3/addons/{id}/operation/rollback
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
id |
Yes |
String |
Add-on instance ID |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Details: 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. For details, see Obtaining a User Token. Constraints: None Options: N/A Default value: N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
clusterID |
Yes |
String |
Cluster ID |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
kind |
String |
API type. The value is fixed at Addon and cannot be changed. |
apiVersion |
String |
API version. The value is fixed at v3 and cannot be changed. |
metadata |
AddonMetadata object |
Basic information about the object. Metadata is a collection of attributes. |
spec |
InstanceSpec object |
Detailed description of the add-on instance. |
status |
AddonInstanceStatus object |
Add-on instance status. |
Parameter |
Type |
Description |
---|---|---|
uid |
String |
Unique ID |
name |
String |
Add-on name |
alias |
String |
Add-on alias |
labels |
Map<String,String> |
Add-on labels in key-value pairs. This is a reserved field and does not take effect. |
annotations |
Map<String,String> |
Add-on annotations in the format of key-value pairs.
|
updateTimestamp |
String |
Updated at |
creationTimestamp |
String |
Created at |
Parameter |
Type |
Description |
---|---|---|
clusterID |
String |
Cluster ID. |
version |
String |
Add-on template version, for example, 1.0.0. |
addonTemplateName |
String |
Add-on template name, for example, coredns. |
addonTemplateType |
String |
Add-on template type. |
addonTemplateLogo |
String |
URL for obtaining the add-on template logo. |
addonTemplateLabels |
Array of strings |
Labels of the add-on template. |
description |
String |
Add-on template description. |
values |
Map<String,Object> |
Add-on template installation parameters (varying depending on the add-on). Set the parameters accordingly. |
Parameter |
Type |
Description |
---|---|---|
status |
String |
Add-on instance status. Options:
|
Reason |
String |
Cause of the add-on installation failure. |
message |
String |
Installation error details. |
targetVersions |
Array of strings |
Versions to which the current add-on version can be upgraded. |
currentVersion |
Versions object |
Information about the current add-on version. |
isRollbackable |
Boolean |
Whether the add-on version can be rolled back to the source version. |
previousVersion |
String |
The add-on version before upgrade or rollback |
Parameter |
Type |
Description |
---|---|---|
version |
String |
Add-on version. |
input |
Object |
Add-on installation parameters. |
stable |
Boolean |
Whether the add-on version is a stable release. |
translate |
Object |
Translation information used by the GUI. |
supportVersions |
Array of SupportVersions objects |
Cluster versions that support the add-on. |
creationTimestamp |
String |
Creation time. |
updateTimestamp |
String |
Update time. |
Example Requests
{ "clusterID" : "******" }
Example Responses
Status code: 200
Add-on instance version is rolled back.
{ "kind" : "Addon", "apiVersion" : "v3", "metadata" : { "uid" : "******", "name" : "everest", "alias" : "everest", "creationTimestamp" : "2023-03-15T02:48:01Z", "updateTimestamp" : "2023-03-15T04:18:45Z" }, "spec" : { "clusterID" : "******", "version" : "2.1.16", "addonTemplateName" : "everest", "addonTemplateType" : "helm", "addonTemplateLogo" : "******", "addonTemplateLabels" : [ "Storage" ], "description" : "Everest is a cloud native container storage system based on CSI, used\nto support cloud storages services for Kubernetes", "values" : { "basic" : { "base_image" : "euleros", "bms_url" : "******", "cluster_version" : "v1.25", "driver_init_image_version" : "2.1.16", "ecsEndpoint" : "******", "euleros_version" : "2.2.5", "everest_image_version" : "2.1.16", "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" : "******" }, "custom" : { "cluster_id" : "******", "cluster_version" : "v1.25.3-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" : "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" } ] }, "multiAZPreferred" : { "podAntiAffinity" : { "preferredDuringSchedulingIgnoredDuringExecution" : [ { "podAffinityTerm" : { "labelSelector" : { "matchExpressions" : [ { "key" : "app", "operator" : "In", "values" : [ "everest-csi-controller" ] } ] }, "topologyKey" : "topology.kubernetes.io/zone" }, "weight" : 100 } ] } }, "multiAZRequired" : { "podAntiAffinity" : { "requiredDuringSchedulingIgnoredDuringExecution" : [ { "labelSelector" : { "matchExpressions" : [ { "key" : "app", "operator" : "In", "values" : [ "everest-csi-controller" ] } ] }, "topologyKey" : "topology.kubernetes.io/zone" } ] } }, "systemAutoInject" : { "cluster" : { "category" : "CCE", "clusterID" : "******", "clusterNetworkMode" : "vpc-router", "clusterVersion" : "v1.25.3-r0" }, "user" : { "projectID" : "******" } }, "tolerations" : [ { "effect" : "NoExecute", "key" : "node.kubernetes.io/not-ready", "operator" : "Exists", "tolerationSeconds" : 60 }, { "effect" : "NoExecute", "key" : "node.kubernetes.io/unreachable", "operator" : "Exists", "tolerationSeconds" : 60 } ] } }, "status" : { "status" : "rollbacking", "Reason" : "Rollback to 4", "message" : "", "targetVersions" : [ "2.1.18", "2.1.19" ], "isRollbackable" : false, "previousVersion" : "2.1.19", "currentVersion" : { "version" : "2.1.16", "input" : { "basic" : { "bms_url" : "******", "driver_init_image_version" : "2.1.16", "ecsEndpoint" : "******", "everest_image_version" : "2.1.16", "evs_url" : "******", "iam_url" : "******", "ims_url" : "******", "obs_url" : "******", "platform" : "linux-amd64", "sfs30_url" : "******", "sfs_turbo_url" : "******", "sfs_url" : "******", "supportHcs" : false, "swr_addr" : "******", "swr_user" : "******" }, "parameters" : { "common" : { "defaultVPCId" : 0 }, "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" : "******", "Parameters.flavor1.name" : "******", "Parameters.flavor2.description" : "******", "Parameters.flavor2.name" : "******", "Parameters.flavor3.name" : "******" } }, "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-02-21T16:29:02Z", "updateTimestamp" : "2023-02-22T06:49:50Z" } } }
SDK Sample Code
The SDK sample code is as follows.
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 |
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.*; public class RollbackAddonInstanceSolution { 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(); RollbackAddonInstanceRequest request = new RollbackAddonInstanceRequest(); request.withId("{id}"); AddonInstanceRollbackRequest body = new AddonInstanceRollbackRequest(); body.withClusterID("******"); request.withBody(body); try { RollbackAddonInstanceResponse response = client.rollbackAddonInstance(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()); } } } |
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 |
# 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 = RollbackAddonInstanceRequest() request.id = "{id}" request.body = AddonInstanceRollbackRequest( cluster_id="******" ) response = client.rollback_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) |
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 |
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.RollbackAddonInstanceRequest{} request.Id = "{id}" request.Body = &model.AddonInstanceRollbackRequest{ ClusterID: "******", } response, err := client.RollbackAddonInstance(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
200 |
Add-on instance version is rolled back. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot