Updated on 2024-11-06 GMT+08:00

Updating a Release

Function

This API is used to update a release.

Calling Method

For details, see Calling APIs.

URI

PUT /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name}

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

name

Yes

String

Release name

namespace

Yes

String

Namespace of the chart

cluster_id

Yes

String

Details:

Cluster ID. For details about how to obtain the value, see How to Obtain Parameters in the API URI.

Constraints:

None

Options:

Cluster IDs

Default value:

N/A

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

Content-Type

Yes

String

Details:

Request body type or format

Constraints:

The GET method is not verified.

Options:

  • application/json

  • application/json;charset=utf-8

  • application/x-pem-file

Default value:

N/A

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

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

chart_id

Yes

String

Chart ID

action

Yes

String

upgrade for an upgrade and rollback for a rollback

parameters

Yes

ReleaseReqBodyParams object

Release parameters

values

Yes

values object

Release value

Table 4 ReleaseReqBodyParams

Parameter

Mandatory

Type

Description

dry_run

No

Boolean

After this function is enabled, only chart parameters are verified, and installation is not performed.

name_template

No

String

Release name template

no_hooks

No

Boolean

Whether to disable hooks during installation

replace

No

Boolean

Whether to replace the release with the same name

recreate

No

Boolean

Whether to rebuild the release

reset_values

No

Boolean

Whether to reset values during an update

release_version

No

Integer

Version of the rollback release

include_hooks

No

Boolean

Enable hooks during an update or deletion.

Table 5 values

Parameter

Mandatory

Type

Description

imagePullPolicy

No

String

Image pull policy

imageTag

No

String

Image tag

Response Parameters

Status code: 200

Table 6 Response body parameters

Parameter

Type

Description

chart_name

String

Chart name

chart_public

Boolean

Whether the chart is public

chart_version

String

Chart version

cluster_id

String

Cluster ID

cluster_name

String

Current name

create_at

String

Created at

description

String

Release description

name

String

Release name

namespace

String

Namespace to which a chart release belongs

parameters

String

Release parameters

resources

String

Resources required by the release

status

String

Release status.

  • DEPLOYED: The release is normal.

  • DELETED: The release has been deleted.

  • FAILED: The release fails to be deployed.

  • DELETING: The release is being deleted.

  • PENDING_INSTALL: The release is waiting to be installed.

  • PENDING_UPGRADE: The release is waiting to be upgraded.

  • PENDING_ROLLBACK: The release is waiting for rollback.

  • UNKNOWN: The release status is unknown, indicating that the release is abnormal. You can manually delete the release and reinstall it.

status_description

String

Release status description

update_at

String

Updated at

values

String

Release value

version

Integer

Release version

Example Requests

PUT /cce/cam/v3/clusters/{cluster_id}/namespace/{namespace}/releases/{name}

{
  "chart_id" : "af4b699e-018c-11ec-b8b0-0255ac100b05",
  "action" : "upgrade",
  "parameters" : {
    "dry_run" : false,
    "name_template" : "string",
    "no_hooks" : false,
    "replace" : false,
    "recreate" : false,
    "reset_values" : false,
    "release_version" : 1,
    "include_hooks" : false
  },
  "values" : {
    "imagePullPolicy" : "IfNotPresent",
    "imageTag" : "v2"
  }
}

Example Responses

Status code: 200

OK

{
  "chart_name" : "magento-mysql",
  "chart_public" : false,
  "chart_version" : "1.0.0",
  "cluster_id" : "a870253f-5dc7-11ee-bf71-0255ac100b03",
  "cluster_name" : "sfs-turbo-test",
  "create_at" : "2023-11-14T20:30:57+08:00",
  "description" : "Initial install underway",
  "name" : "testwww",
  "namespace" : "monitoring",
  "parameters" : "",
  "resources" : "",
  "status" : "PENDING_INSTALL",
  "status_description" : "Initial install underway",
  "update_at" : "2023-11-14T20:30:57+08:00",
  "values" : "{\"basic\":{\"admin_password\":\"******\",\"admin_username\":\"username\",\"app_name\":\"magento\",\"mysql_database\":\"magento\",\"mysql_name\":\"mysql\",\"mysql_password\":\"******\",\"mysql_port\":3306,\"mysql_root_password\":\"******\",\"mysql_user\":\"magento\",\"storage_class\":\"csi-nas\",\"storage_mode\":\"ReadWriteMany\",\"storage_size\":\"10G\"},\"global\":{\"magento_EIP\":\"100.100.100.100\",\"magento_EPORT\":32080,\"namespace\":\"default\"},\"image\":{\"magento_image\":\"example.com/everest/magento:latest\",\"mysql_image\":\"example.com/everest/mysql:5.7.14\"}}",
  "version" : 1
}

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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 UpdateReleaseSolution {

    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();
        UpdateReleaseRequest request = new UpdateReleaseRequest();
        request.withName("{name}");
        request.withNamespace("{namespace}");
        request.withClusterId("{cluster_id}");
        UpdateReleaseReqBody body = new UpdateReleaseReqBody();
        UpdateReleaseReqBodyValues valuesbody = new UpdateReleaseReqBodyValues();
        valuesbody.withImagePullPolicy("IfNotPresent")
            .withImageTag("v2");
        ReleaseReqBodyParams parametersbody = new ReleaseReqBodyParams();
        parametersbody.withDryRun(false)
            .withNameTemplate("string")
            .withNoHooks(false)
            .withReplace(false)
            .withRecreate(false)
            .withResetValues(false)
            .withReleaseVersion(1)
            .withIncludeHooks(false);
        body.withValues(valuesbody);
        body.withParameters(parametersbody);
        body.withAction(UpdateReleaseReqBody.ActionEnum.fromValue("upgrade"));
        body.withChartId("af4b699e-018c-11ec-b8b0-0255ac100b05");
        request.withBody(body);
        try {
            UpdateReleaseResponse response = client.updateRelease(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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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 = UpdateReleaseRequest()
        request.name = "{name}"
        request.namespace = "{namespace}"
        request.cluster_id = "{cluster_id}"
        valuesbody = UpdateReleaseReqBodyValues(
            image_pull_policy="IfNotPresent",
            image_tag="v2"
        )
        parametersbody = ReleaseReqBodyParams(
            dry_run=False,
            name_template="string",
            no_hooks=False,
            replace=False,
            recreate=False,
            reset_values=False,
            release_version=1,
            include_hooks=False
        )
        request.body = UpdateReleaseReqBody(
            values=valuesbody,
            parameters=parametersbody,
            action="upgrade",
            chart_id="af4b699e-018c-11ec-b8b0-0255ac100b05"
        )
        response = client.update_release(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
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
68
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.UpdateReleaseRequest{}
	request.Name = "{name}"
	request.Namespace = "{namespace}"
	request.ClusterId = "{cluster_id}"
	imagePullPolicyValues:= "IfNotPresent"
	imageTagValues:= "v2"
	valuesbody := &model.UpdateReleaseReqBodyValues{
		ImagePullPolicy: &imagePullPolicyValues,
		ImageTag: &imageTagValues,
	}
	dryRunParameters:= false
	nameTemplateParameters:= "string"
	noHooksParameters:= false
	replaceParameters:= false
	recreateParameters:= false
	resetValuesParameters:= false
	releaseVersionParameters:= int32(1)
	includeHooksParameters:= false
	parametersbody := &model.ReleaseReqBodyParams{
		DryRun: &dryRunParameters,
		NameTemplate: &nameTemplateParameters,
		NoHooks: &noHooksParameters,
		Replace: &replaceParameters,
		Recreate: &recreateParameters,
		ResetValues: &resetValuesParameters,
		ReleaseVersion: &releaseVersionParameters,
		IncludeHooks: &includeHooksParameters,
	}
	request.Body = &model.UpdateReleaseReqBody{
		Values: valuesbody,
		Parameters: parametersbody,
		Action: model.GetUpdateReleaseReqBodyActionEnum().UPGRADE,
		ChartId: "af4b699e-018c-11ec-b8b0-0255ac100b05",
	}
	response, err := client.UpdateRelease(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

OK

Error Codes

See Error Codes.