Parsing a Component Template Package
Function
This API is used to parse a component template package.
URI
POST /v3/{project_id}/cas/components/parse-template-package
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Tenant's project ID. See Obtaining a Project ID. |
Request
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
Content-Type |
Yes |
String |
Message body type (format). Default value: application/json;charset=utf8. |
X-Auth-Token |
Yes |
String |
API calling can be authenticated using a token or AK/SK. If you use a token, this parameter is mandatory and must be set to the token. For details about how to obtain the token, see Authentication. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
template_source |
No |
Object |
Source of the component template package. See Table 4. |
component_id |
No |
String |
Component ID.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
storage |
Yes |
String |
Storage mode of the component template package.
|
url |
Yes |
String |
Address of the component template package. This parameter is valid only when the component template package storage mode is http. |
http_username |
No |
String |
Username. This parameter is valid only when the component template package storage mode is http and the security authentication mode is username and password authentication. |
http_password |
No |
String |
Password. This parameter is valid only when the component template package storage mode is http and the security authentication mode is username and password authentication. |
http_headers |
No |
Array of objects |
Request header. See Table 5. This parameter is valid only when the component template package storage mode is http and the security authentication mode is custom header authentication. |
Response
Parameter |
Type |
Description |
---|---|---|
template |
Map<String, String> |
Template package file information. |
variables |
Map<String, Object> |
Template package variable declaration information.
|
input_values |
Map<String, String> |
Template package input information. |
Example Request
Parse the demo-app-package.zip component template package stored in the obs://apitest/ directory of the OBS bucket.
{ "template_source": { "storage": "obs", "url": "obs://apitest/demo-app-package.zip", "http_username": null, "http_password": null, "http_headers": [] } }
Example Response
{ "template": { "comp_demo/service-account.yaml": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n name: ss-demo-app-account\n namespace: ${var.namespace}", "comp_demo/role.yaml": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name: ss-demo-app-role\n namespace: ${var.namespace}\nrules:\n - apiGroups: [ \"\" ]\n resources: [ \"pods\" ]\n verbs: [ \"get\", \"list\", \"watch\" ]", "values.yaml": "namespace: demo\ndep_name: demo-dep\nsvc_port: 8080\nvalue: World\nimage: swr.ap-southeast-1.myhuaweicloud.com/ss/demo-app:latest\nconfig_name: demo-group/application-wqd.yaml", "comp_demo/rolebinding.yaml": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n name: ss-demo-app-rolebinding\n namespace: ${var.namespace}\nroleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: Role\n name: ss-demo-app-role\nsubjects:\n - kind: ServiceAccount\n name: ss-demo-app-account\n namespace: ${var.namespace}", "comp_demo/service.yaml": "apiVersion: v1\nkind: Service\nmetadata:\n name: demo-app-service\n namespace: ${var.namespace}\nspec:\n selector:\n app: ${var.dep_name}\n ports:\n - name: cce-service-0\n targetPort: ${var.svc_port}\n port: ${var.svc_port}\n protocol: TCP\n type: ClusterIP\n", "comp_demo/ss-component.yaml": "kind: ServiceStageComponent\nspec:\n name: ${var.dep_name}\n refer_resources:\n - type: cce\n id: ${var.cce_resource}\n - type: elb\n id: ${var.elb_resource}\n external_accessed:\n - address: www.demo.com\n forward_port: 8080\n id : ${var.elb_resource}\n protocol: HTTP\n type: SPECIFIED\n configs:\n - config_name: ${var.config_name}\n mount_path: /home/demo/application-wqd.yaml\n container_name: container-1", "comp_demo/ss-config.yaml": "kind: ServiceStageConfig\nspec:\n name: ${var.config_name}\n description: desc\n sensitive: true\n content: |\n server:\n port: ${var.svc_port}\n demo:\n value: ${var.value}", "comp_demo/secret.yaml": "apiVersion: v1\nkind: Secret\nmetadata:\n name: ss-demo-app-secret\n namespace: ${var.namespace}\ntype: Opaque\ndata:\n SECRET_KEY: dmFsdWU=", "comp_demo/hpa.yaml": "kind: HorizontalPodAutoscaler\napiVersion: autoscaling/v2\nmetadata:\n name: ss-demo-app-hpa\n namespace: ${var.namespace}\nspec:\n scaleTargetRef:\n kind: Deployment\n name: ${var.dep_name}\n apiVersion: apps/v1\n minReplicas: 1\n maxReplicas: 10\n metrics:\n - type: Resource\n resource:\n name: cpu\n target:\n type: Utilization\n averageUtilization: 70", "comp_demo/deployment.yaml": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: ${var.dep_name}\n namespace: ${var.namespace}\nspec:\n selector:\n matchLabels: {}\n template:\n metadata:\n labels: {}\n spec:\n containers:\n - name: container-1\n image: ${var.image}\n imagePullPolicy: IfNotPresent\n envFrom:\n - configMapRef:\n name: ss-demo-app-configmap\n - secretRef:\n name: ss-demo-app-secret\n resources:\n requests:\n cpu: 100m\n memory: 256Mi\n limits:\n cpu: 100m\n memory: 256Mi\n serviceAccountName: ss-demo-app-account\n imagePullSecrets:\n - name: default-secret\n terminationGracePeriodSeconds: 30\n dnsPolicy: ClusterFirst\n replicas: 2\n revisionHistoryLimit: 10\n strategy:\n type: RollingUpdate\n rollingUpdate:\n maxUnavailable: 25%\n maxSurge: 25%\n progressDeadlineSeconds: 600\n", "variables.yaml": "variable:\n config_name:\n type: string\n default: demo-group/application-wqd.yaml\n description: configuration file name\n namespace:\n type: string\n default: demo\n description: namespace\n dep_name:\n type: string\n default: demo-dep\n description: workload name\n svc_port:\n type: integer\n default: 8080\n description: service port number\n value:\n type: string\n default: World\n description: Hello interface response data\n cce_resource:\n type: cce\n description: CCE resource\n elb_resource:\n type: elb\n description: ELB resource\n image:\n type: string\n description: workload image", "comp_demo/configmap.yaml": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: ss-demo-app-configmap\n namespace: ${var.namespace}\ndata:\n CONFIG_KEY: \"value\"", "spec.yaml": "model_version: v1.0.0\n\ncomponent:\n component_dir: comp_demo/\n\nk8s_resources:\n order_type: CUSTOM\n custom_orders:\n - ServiceAccount\n - Role\n - RoleBinding\n - ConfigMap\n - Secret\n - Deployment\n - HorizontalPodAutoscaler\n - Service\n - Ingress" }, "variable": { "config_name": { "type": "string", "default": "demo-group/application-wqd.yaml", "description": "configuration file name" }, "namespace": { "type": "string", "default": "demo", "description": "namespace" }, "dep_name": { "type": "string", "default": "demo-dep", "description": "workload name" }, "svc_port": { "type": "integer", "default": 8080, "description": "service port number" }, "value": { "type": "string", "default": "World", "description": "Hello interface response data" }, "cce_resource": { "type": "cce", "default": null, "description": "CCE resource" }, "elb_resource": { "type": "elb", "default": null, "description": "ELB resource" }, "image": { "type": "string", "default": null, "description": "workload image" } }, "input_values": { "config_name": "demo-group/application.yaml", "image": "swr.ap-southeast-1.myhuaweicloud.com/ss/demo-app:latest", "svc_port": 8080, "cce_resource": null, "namespace": "demo", "dep_name": "demo-dep", "value": "World", "elb_resource": null } }
Status Code
Status Code |
Description |
---|---|
200 |
OK |
400 |
Bad Request |
404 |
Not Found |
500 |
Internal Server Error |
Error Code
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