Updated on 2023-11-23 GMT+08:00

Updating a Deployment

Function

This API is used to update a Deployment.

URI

PUT /v3/{project_id}/edgemgr/deployments/{deployment_id}

Table 1 Path parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain a project ID, see Obtaining a Project ID.

deployment_id

Yes

String

Deployment ID.

Request

Table 2 Parameters in the request header

Parameter

Mandatory

Type

Description

Content-Type

Yes

String

Message body type (format).

The default value application/json is recommended.

X-Auth-Token

Yes

String

User token. The token can be obtained by calling the IAM API used to obtain a user token. The value of X-Subject-Token in the response header is the user token.

Table 3 Parameters in the request body

Parameter

Mandatory

Type

Description

deployment

No

UpdatePodDeployment object

New deployment configurations. This API is called to replace all configurations of the Deployment.

description

No

String

New Deployment description. If only the description is modified, the deployment parameter does not need to be specified.

Table 4 UpdatePodDeployment

Parameter

Mandatory

Type

Description

replicas

Yes

Integer

Number of Deployment instances. The value can only be 1.

template

Yes

PodRequest object

Deployment chart.

Table 5 PodRequest

Parameter

Mandatory

Type

Description

configs

Yes

PodConfigs object

Application instance configuration.

affinity

No

affinity object

Affinity rules for the Deployment. This parameter is available only for platinum service instances.

init_containers

No

Array of ContainerDef objects

init container configuration of the Deployment.

containers

Yes

Array of ContainerDef objects

Container configuration of the Deployment.

Table 6 ContainerDef

Parameter

Mandatory

Type

Description

name

Yes

String

Container name. The name contains a maximum of 32 characters starting and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed.

image_url

Yes

String

Container image URL.

args

No

Array of strings

Container startup arguments. The value contains a maximum of 65,536 characters.

command

No

Array of strings

Container startup commands. The value contains a maximum of 65,536 characters.

resources

No

ResQuest object

Container resource amount.

envs

No

Array of Env objects

Key-value pair of the container environment variable.

ports

No

Array of HostContainerPortMapping objects

Container port mapping.

privileged

No

Boolean

Whether the privileged container is enabled. The default value is false.

readiness_probe

No

Probe object

Workload readiness probe configuration.

liveness_probe

No

Probe object

Workload liveness probe configuration.

version

No

String

Container version. The value contains a maximum of 128 characters.

volumes

No

Array of Volume objects

Volumes attached to containers.

npu_type

No

String

NPU type. NUP type supports D310.

  • D310
  • If this parameter is left blank, D310 is used.
Table 7 Volume

Parameter

Mandatory

Type

Description

name

Yes

String

Volume name. The name contains a maximum of 63 characters. Only lowercase letters and digits are allowed.

type

Yes

String

Volume type. The value can be configMap, secret, emptyDir, or hostPath.

read_only

Yes

Boolean

Read/Write permission. The default value is read.

source

Yes

String

Volume source. When type is set to hostPath, enter a path. The path must start with a slash (/) and can contain hyphens (-), slashes (/), underscores (_), periods (.), letters, and digits.

When type is set to secret, enter a secret name. When type is set to configMap, enter a ConfigMap name. When type is set to emptyDir, enter a disk or memory.

destination

Yes

String

Volume mount path. It must be a valid path.

Table 8 Probe

Parameter

Mandatory

Type

Description

http_get

No

HttpGet object

HTTP health check. Specify either this parameter or exec.

exec

No

Table 10 object

CLI-based check. Specify either this parameter or http_get.

initial_delay_seconds

No

Long

Period between the workload start time and the probe start time. The value is an integer greater than 0 and less than or equal to 3600. The default value is 10.

timeout_seconds

No

Long

Probing timeout time. The value is an integer greater than 0 and less than or equal to 3600. The default value is 1.

Table 9 HttpGet

Parameter

Mandatory

Type

Description

path

Yes

String

The value must start with a slash (/). The structure is as follows: Protocol type://Host address:Port path

port

Yes

Integer

HTTP port number for detection. The value is an integer ranging from 1 to 65535.

host

No

String

Requested host address. The default value is the IP address of the container.

scheme

No

String

Protocol type. The value can be HTTP or HTTPS. The default value is HTTP.

Table 10 Exec

Parameter

Mandatory

Type

Description

command

Yes

String

Commands to be executed by the probe. The value contains a maximum of 10,240 characters.

Table 11 HostContainerPortMapping

Parameter

Mandatory

Type

Description

container_port

Yes

Long

Container port number, which is an integer ranging from 1 to 65535.

host_port

No

Long

Host port number, which is an integer ranging from 1 to 65535.

host_ip

No

String

NIC address of the host.

host_port_range

No

HostPortRange object

Host port range. Host ports in the specified range are automatically allocated to application instances. Specify either host_port_range or host_port. This parameter is available only in the platinum edition.

Table 12 HostPortRange

Parameter

Mandatory

Type

Description

min_port

Yes

Long

Lower limit of the host port, which is an integer ranging from 1 to 65535.

max_port

Yes

Long

Upper limit of the host port, which is an integer ranging from 1 to 65535. The value of max_port must be greater than that of min_port.

Table 13 Env

Parameter

Mandatory

Type

Description

name

Yes

String

Key of an environment variable. The key must be unique and can contain a maximum of 2,048 characters starting with a letter or underscore. Only digits, letters, and underscores (_) are allowed.

value

No

String

Value of an environment variable. The value contains a maximum of 20,480 characters. Specify only one of the value, value_from, and field_path parameters.

value_from

No

Table 17 object

Environment variables can be imported from ConfigMaps or secrets.

field_path

No

String

Currently, this parameter can be set only to status.hostIP, that is, the IP address of an edge node is used as the environment variable.

Table 14 ResQuest

Parameter

Mandatory

Type

Description

limits

No

Res object

Resource amount limit.

requests

No

Res object

Requested resource amount, which cannot be greater than the resource limit.

Table 15 Res

Parameter

Mandatory

Type

Description

cpu

No

String

Number of CPUs. The value range is 0.01–1000. The value of this parameter does not need to contain a unit in the request.

memory

No

String

Memory size, in MBs. The value range is 0.01–1,024,000. Note: The minimum value of limits for the memory is 4. The value of this parameter does not need to contain a unit in the request.

gpu

No

String

GPU memory size, in MBs. The value range is 0.01–1,024,000. The value of this parameter does not need to contain a unit in the request.

npu

No

String

Number of NPUs. The value range is 1–1000.

Table 16 PodConfigs

Parameter

Mandatory

Type

Description

host_network

Yes

Boolean

Whether the host network is enabled for an application instance. If the host network is not enabled, port mapping is used. The default value is false.

host_pid

No

Boolean

Whether an application instance shares the PID namespace with the host. The default value is false.

migration

No

Boolean

Whether an application instance is migrated when a fault occurs. This parameter is mandatory when the application is deployed to a specified node group. The default value is false.

restart_policy

Yes

String

Restart policy of an application instance. The value can be Always, OnFailure, or Never.

NOTE:

The restart_policy parameter value cannot be updated.

toleration_seconds

No

Integer

Time that a fault can be tolerated before an application instance is migrated. This parameter takes effect only when the application is deployed to a specified node group.

Table 17 value_from

Parameter

Mandatory

Type

Description

secret

No

Table 18 object

Secret to be referenced by an environment variable. If value_from is specified, either secret or configmap must be specified.

configmap

No

Table 19 object

ConfigMap to be referenced by an environment variable.

Table 18 secret

Parameter

Mandatory

Type

Description

name

Yes

String

Secret name.

key

Yes

String

Secret key.

Table 19 configmap

Parameter

Mandatory

Type

Description

name

Yes

String

ConfigMap name.

key

Yes

String

ConfigMap key.

Response

When the status code is 200, the response parameters are as follows:

Table 20 Parameters in the response body

Parameter

Type

Description

id

String

Deployment ID.

name

String

Deployment name. The name contains a maximum of 32 characters starting and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed.

replicas

Integer

Total number of Deployment instances.

ready_replicas

Integer

Number of normal instances.

description

String

Deployment description. The description contains a maximum of 255 characters. The following characters are not allowed: ^~#$%&*<>()[]{}'"\

group_id

String

ID of the node group to which the application is deployed. Specify either group_id or node_ids.

node_ids

Array of strings

ID of the edge node to which the Deployment is deployed. Currently, only one edge node is supported.

tags

Array of Attribute objects

-

api_version

String

Deployment version.

source

String

Deployment source. The value can be userdefined (custom).

project_id

String

Project ID.

created_at

String

Time when the Deployment was created.

updated_at

String

Time when the Deployment was updated.

template

PodRequest object

Application template.

state

String

Application status, which can be FREEZE, PENDING_DELETE, or DELETE_FAILED. This field is reserved.

source_id

String

Reserved.

Table 21 PodRequest

Parameter

Type

Description

configs

PodConfigs object

Application instance configuration.

affinity

affinity object

Affinity rules for the Deployment. This parameter is available only for platinum service instances.

init_containers

Array of ContainerDef objects

init container configuration of the Deployment.

containers

Array of ContainerDef objects

Container configuration of the Deployment.

Table 22 ContainerDef

Parameter

Type

Description

name

String

Container name. The name contains a maximum of 32 characters starting and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed.

image_url

String

Container image URL.

args

Array of strings

Container startup arguments.

command

Array of strings

Container startup commands.

resources

ResQuest object

Container resource amount.

envs

Array of Env objects

Key-value pair of the container environment variable.

ports

Array of HostContainerPortMapping objects

Container port mapping.

privileged

Boolean

Whether the privileged container is enabled. The default value is false.

readiness_probe

Probe object

Workload readiness probe configuration.

liveness_probe

Probe object

Workload liveness probe configuration.

version

String

Container version.

volumes

Array of Volume objects

Volumes attached to containers.

npu_type

String

NPU type. NUP type supports D310.

  • D310
  • If this parameter is left blank, D310 is used.
Table 23 Volume

Parameter

Type

Description

name

String

Volume name. The name contains a maximum of 63 characters. Only lowercase letters and digits are allowed.

type

String

Volume type. The value can be configMap, secret, emptyDir, or hostPath.

read_only

Boolean

Read/Write permission. The default value is read.

source

String

Volume source. When type is set to hostPath, enter a path. The path must start with a slash (/) and can contain hyphens (-), slashes (/), underscores (_), periods (.), letters, and digits.

When type is set to secret, enter a secret name. When type is set to configMap, enter a ConfigMap name. When type is set to emptyDir, enter a disk or memory.

destination

String

Volume mount path. It must be a valid path.

Table 24 Probe

Parameter

Type

Description

http_get

HttpGet object

HTTP health check.

exec

Table 26 object

CLI-based check.

initial_delay_seconds

Long

Period between the workload start time and the probe start time. The value is an integer greater than 0 and less than or equal to 3600. The default value is 10.

timeout_seconds

Long

Probing timeout time. The value is an integer greater than 0 and less than or equal to 3600. The default value is 1.

Table 25 HttpGet

Parameter

Type

Description

path

String

The value must start with a slash (/). The structure is as follows: Protocol type://Host address:Port path

port

Integer

HTTP port number for detection. The value is an integer ranging from 1 to 65535.

host

String

Host address. The default value is the container IP address.

scheme

String

Protocol type. The value can be HTTP or HTTPS. The default value is HTTP.

Table 26 Exec

Parameter

Type

Description

command

String

Commands to be executed by the probe. The value contains a maximum of 10,240 characters.

Table 27 HostContainerPortMapping

Parameter

Type

Description

container_port

Long

Container port number, which is an integer ranging from 1 to 65535.

host_port

Long

Host port number, which is an integer ranging from 1 to 65535.

host_ip

String

NIC address of the host.

host_port_range

HostPortRange object

Host port range. Host ports in the specified range are automatically allocated to application instances. Specify either host_port_range or host_port.

Table 28 HostPortRange

Parameter

Type

Description

min_port

Long

Lower limit of the host port, which is an integer ranging from 1 to 65535.

max_port

Long

Upper limit of the host port, which is an integer ranging from 1 to 65535. The value of max_port must be greater than that of min_port.

Table 29 Env

Parameter

Type

Description

name

String

Key of an environment variable. The key must be unique and can contain a maximum of 2,048 characters starting with a letter or underscore. Only digits, letters, and underscores (_) are allowed.

value

String

Value of an environment variable. The value contains a maximum of 20,480 characters. Specify only one of the value, value_from, and field_path parameters.

value_from

Table 34 object

Environment variables can be imported from ConfigMaps or secrets.

field_path

String

Currently, this parameter can be set only to status.hostIP, that is, the IP address of an edge node is used as the environment variable.

Table 30 ResQuest

Parameter

Type

Description

limits

Res object

Resource amount limit.

requests

Res object

Requested resource amount.

Table 31 Res

Parameter

Type

Description

cpu

String

Number of CPU cores. The value range is 0.01–1000.

memory

String

Memory size, in MBs. The value range is 0.01–1,024,000. Note that the minimum value of limits for the memory is 4.

gpu

String

GPU size, in MBs. The value range is 0.01–1,024,000.

npu

String

Number of NPUs. The value range is 1–1000.

Table 32 PodConfigs

Parameter

Type

Description

host_network

Boolean

Whether the host network is enabled for an application instance. If the host network is not enabled, port mapping is used. The default value is false.

host_pid

Boolean

Whether an application instance shares the PID namespace with the host. The default value is false.

migration

Boolean

Whether an application instance is migrated when a fault occurs. This parameter is mandatory when the application is deployed to a specified node group. The default value is false.

restart_policy

String

Restart policy of an application instance. The value can be Always, OnFailure, or Never.

toleration_seconds

Integer

Time that a fault can be tolerated before an application instance is migrated. This parameter takes effect only when the application is deployed to a specified node group.

Table 33 Attribute

Parameter

Type

Description

key

String

A maximum of 10 keys are allowed. These keys must be unique and cannot be empty. A key can contain a maximum of 36 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.

value

String

The value contains a maximum of 43 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

Table 34 value_from

Parameter

Type

Description

secret

Table 35 object

Secret to be referenced by an environment variable. If value_from is specified, either secret or configmap must be specified.

configmap

Table 36 object

ConfigMap to be referenced by an environment variable.

Table 35 secret

Parameter

Type

Description

name

String

Secret name.

key

String

Secret key.

Table 36 configmap

Parameter

Type

Description

name

String

ConfigMap name.

key

String

ConfigMap key.

When the status code is 400, the response parameters are as follows:

Table 37 Parameters in the response body

Parameter

Type

Description

error_code

String

Error Code

error_msg

String

Error description.

When the status code is 500, the response parameters are as follows:

Table 38 Parameters in the response body

Parameter

Type

Description

error_code

String

Error Code

error_msg

String

Error description.

Example Request

{
    "deployment": {
        "replicas": 1,
        "template": {
            "configs": {
                "host_network": true,
                "host_pid": true,
                "migration": true,
                "restart_policy": "Always",
                "toleration_seconds": 300
            },
            "containers": [
                {
                    "name": "container-0",
                    "image_url": "",
                    "args": [
                        "-c",
                        "sleep 1000"
                    ],
                    "command": [
                        "/bin/bash"
                    ],
                    "resources": {
                        "limits": {
                            "cpu": "0.25",
                            "memory": "500",
                            "gpu": "500"
                        },
                        "requests": {
                            "cpu": "0.25",
                            "memory": "500",
                            "gpu": "500"
                        }
                    },
                    "envs": [
                        {
                            "name": "CERT_PATH",
                            "value": "/opt/cert"
                        }
                    ],
                    "ports": [
                        {
                            "container_port": 80,
                            "host_port": 80
                        }
                    ],
                    "privileged": true,
                    "readiness_probe": {
                        "http_get": {
                            "path": "/",
                            "port": 80,
                            "scheme": "HTTP"
                        },
                        "initial_delay_seconds": 10,
                        "timeout_seconds": 10
                    },
                    "liveness_probe": {
                        "http_get": {
                            "path": "/",
                            "port": 80,
                            "scheme": "HTTP"
                        },
                        "initial_delay_seconds": 10,
                        "timeout_seconds": 10
                    },
                    "version": "1.0"
                }
            ]
        }
    },
    "description": "this is a test app"
}

Example Response

Example response with status code 200:

{
    "id": "3e64d98a-37c5-43a6-9bfe-052b9083e362",
    "name": "app-test",
    "replicas": 1,
    "ready_replicas": 1,
    "description": "this is a test app",
    "group_id": "",
    "node_ids": [
        "29d20c18-c20c-4a45-a087-42c766fc5d97"
    ],
    "tags": [
        {
            "key": "app",
            "value": "test"
        }
    ],
    "api_version": "v3",
    "source": "userdefine",
    "project_id": "bcd83056c918480f8f190844bd425b23",
    "created_at": "2019-10-10T02:21:38.489Z",
    "updated_at": "2019-10-10T02:21:38.489Z",
    "template": {
        "configs": {
            "host_network": true,
            "host_pid": true,
            "migration": true,
            "restart_policy": "Always",
            "toleration_seconds": 300
        },
        "init_containers": []
        "containers": [
            {
                "name": "container-0",
                "image_url": "",
                "npu_type": "",
                "args": [
                    "-c",
                    "sleep 1000"
                ],
                "command": [
                    "/bin/bash"
                ],
                "resources": {
                    "limits": {
                        "cpu": "0.25",
                        "memory": "500",
                        "gpu": 500"
                    },
                    "requests": {
                        "cpu": "0.25",
                        "memory": "500",
                        "gpu": "500"
                    }
                },
                "envs": [
                    {
                        "name": "CERT_PATH",
                        "value": "/opt/cert"
                    }
                ],
                "ports": [
                    {
                        "container_port": 80,
                        "host_port": 80
                    }
                ],
                "privileged": true,
                "readiness_probe": {
                    "http_get": {
                        "path": "/",
                        "port": 80,
                        "scheme": "HTTP"
                    },
                    "initial_delay_seconds": 10,
                    "timeout_seconds": 10
                },
                "liveness_probe": {
                    "http_get": {
                        "path": "/",
                        "port": 80,
                        "scheme": "HTTP"
                    },
                    "initial_delay_seconds": 10,
                    "timeout_seconds": 10
                },
                "version": "1.0"
            }
        ]
    }
}

Example response with status code 400:

{
	"error_code" : "IEF.100001",
	"error_msg" : "PROJECT_ID not found"
}

Example response with status code 500:

{
	"error_code" : "IEF.100158",
	"error_msg" : "Fail to extract gpu information"
}

Error Codes

For details, see Error Codes.