Creating a Component
Function
This API is used to create a component.
Authorization Information
Each account has all the permissions required to call all APIs, but IAM users must be assigned the required permissions.
- If you are using role/policy-based authorization, see Permissions Policies and Supported Actions for details on the required permissions.
- If you are using identity policy-based authorization, no identity policy-based permission required for calling this API.
URI
POST /v1/{project_id}/cae/applications/{application_id}/components
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
project_id |
Yes |
String |
Project ID. See Obtaining a Project ID. |
|
application_id |
Yes |
String |
Application ID. |
Request Parameters
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
X-Auth-Token |
Yes |
String |
User token.
|
|
X-Enterprise-Project-ID |
No |
String |
Enterprise project ID.
NOTE:
For details about how to obtain enterprise project IDs and enterprise project features, see Enterprise Management User Guide.
|
|
X-Environment-ID |
Yes |
String |
Environment ID.
|
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
api_version |
Yes |
String |
API version. Fixed value: v1. |
|
kind |
Yes |
String |
API type. Fixed value: Component. |
|
metadata |
Yes |
metadata object |
Request data. |
|
spec |
Yes |
spec object |
Component specifications. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
name |
Yes |
String |
Component name. |
|
annotations |
Yes |
Map<String,String> |
Additional parameter for creating a component. Only version is supported. This parameter is mandatory. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
runtime |
Yes |
String |
Language or runtime. |
|
replica |
Yes |
Integer |
Number of instances. |
|
build |
No |
Build object |
Build information. |
|
source |
Yes |
Source object |
Source information. |
|
resource_limit |
Yes |
ResourceLimit object |
Instance specifications |
|
image_url |
No |
String |
Image address. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
archive |
Yes |
Archive object |
Place where build products are archived for management. |
|
parameters |
Yes |
Map<String,String> |
Additional parameters. Options:
|
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
artifact_namespace |
No |
String |
SWR organization for product management. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
code |
No |
Repo object |
Source code repository information. |
|
type |
Yes |
String |
Definition Source type. Constraints When updating a component, the source type must match the type used during its initial creation. Range
Default Value N/A |
|
sub_type |
No |
String |
Source subtype.
|
|
url |
Yes |
String |
URL.
|
Response Parameters
Status code: 200
|
Parameter |
Type |
Description |
|---|---|---|
|
api_version |
String |
API version. Fixed value: v1. |
|
kind |
String |
API type. Fixed value: Component. |
|
metadata |
MetadataResponse object |
Response data. |
|
spec |
CreateComponentSpec object |
Component specifications. |
|
Parameter |
Type |
Description |
|---|---|---|
|
id |
String |
Component ID. |
|
name |
String |
Component name. |
|
annotations |
Map<String,String> |
Additional attributes of the component. Options:
|
|
created_at |
String |
Creation time. |
|
updated_at |
String |
Update time. |
|
Parameter |
Type |
Description |
|---|---|---|
|
runtime |
String |
Language or runtime. |
|
env_id |
String |
Environment ID. |
|
replica |
Integer |
Number of instances. |
|
source |
Source object |
Source information. |
|
build |
Build object |
Build information. |
|
resource_limit |
ResourceLimit object |
Instance specifications |
|
available_replica |
Integer |
Number of available instances. |
|
status |
String |
Component status.
|
|
Parameter |
Type |
Description |
|---|---|---|
|
code |
Repo object |
Source code repository information. |
|
type |
String |
Definition Source type. Constraints When updating a component, the source type must match the type used during its initial creation. Range
Default Value N/A |
|
sub_type |
String |
Source subtype.
|
|
url |
String |
URL.
|
|
Parameter |
Type |
Description |
|---|---|---|
|
auth_name |
String |
Authorization name. |
|
branch |
String |
Branch. |
|
namespace |
String |
Namespace, which must be Base64-encoded. |
|
Parameter |
Type |
Description |
|---|---|---|
|
archive |
Archive object |
Place where build products are archived for management. |
|
parameters |
Map<String,String> |
Additional parameters. Options:
|
Example Requests
-
Create a component based on a source code repository: Set the component name to test-code, version to 1.0.0, and runtime to Java8, and select source code repository GitLab.
POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components { "api_version" : "v1", "kind" : "Component", "metadata" : { "name" : "test-code", "annotations" : { "version" : "1.0.0" } }, "spec" : { "runtime" : "Java8", "build" : { "archive" : { "artifact_namespace" : "xxx" }, "parameters" : { "base_image" : "openjdk:8u181-jdk-alpine", "dockerfile_path" : "./Dockerfile" } }, "source" : { "type" : "code", "sub_type" : "GitLab", "url" : "https://xxx:8090/xxx/cae-frontend.git", "code" : { "branch" : "master", "auth_name" : "gitlab-xxx", "namespace" : "em1n" } }, "resource_limit" : { "cpu_limit" : "500m", "memory_limit" : "1Gi" }, "replica" : 1 } } -
Create a component based on an image: Set the component name to test-image, version to 1.0.0, and runtime to Docker, and select image nginx.
POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components { "api_version" : "v1", "kind" : "Component", "metadata" : { "name" : "test-image", "annotations" : { "version" : "1.0.0" } }, "spec" : { "runtime" : "Docker", "source" : { "type" : "image", "url" : "nginx:stable-alpine-perl" }, "resource_limit" : { "cpu_limit" : "500m", "memory_limit" : "1Gi" }, "replica" : 1 } } -
Create a component based on a software package: Set the component name to test-jar, version to 1.0.0, and runtime to Java8, and select software package forecast-1.0.0.jar.
POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components { "api_version" : "v1", "kind" : "Component", "metadata" : { "name" : "test-jar", "annotations" : { "version" : "1.0.0" } }, "spec" : { "runtime" : "Java8", "build" : { "archive" : { "artifact_namespace" : "xxx" }, "parameters" : { "base_image" : "openjdk:8u181-jdk-alpine", "dockerfile_content" : "FROM java:8 \\nADD forecast-1.0.0.jar \\nEXPOSE 8080 \\nENTRYPOINT [\"java\",\"-jar\",\"forecast-1.0.0.jar\"]" } }, "source" : { "type" : "softwarePackage", "sub_type" : "BinObs", "url" : "https://xxx.obs.region.xxx.huawei.com/xxx/forecast-1.0.0.jar" }, "resource_limit" : { "cpu_limit" : "500m", "memory_limit" : "1Gi" }, "replica" : 1 } }
Example Responses
Status code: 200
OK
{
"api_version": "v1",
"kind": "Component",
"metadata": {
"id": "cac09548-047f-46c4-abbd-a6a652305565",
"name": "test-code",
"annotations": {
"log_group_id": "5b13213a-84f8-4b72-8ca5-530e15cc1402",
"log_stream_id": "6ddf6c71-4767-46db-98a2-fe5fb301b366",
"version": "1.0.0"
},
"created_at": "2023-02-13T02:38:22.689607114Z",
"updated_at": "2023-02-13T02:38:22.689607114Z"
},
"spec": {
"runtime": "Java8",
"env_id": "9819b3f5-dd08-44ff-ba88-eb38e435594c",
"replica": 1,
"source": {
"type": "code",
"sub_type": "GitLab",
"url": "http://xxx@cpe.gitlab.com:8090/xxx/cae-backend.git",
"code": {
"branch": "master",
"auth_name": "gitlab-xxx",
"namespace": "em1n"
}
},
"build": {
"archive": {
"artifact_namespace": "xxx"
},
"parameters": {
"base_image": "openjdk:8u181-jdk-alpine"
"dockerfile_path": "./Dockerfile"
}
},
"resource_limit": {
"cpu_limit": "500m",
"memory_limit": "1Gi"
},
"available_replica": 0,
"status": "created"
}
}
Status Codes
|
Status Code |
Description |
|---|---|
|
200 |
OK |
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