
# 解析组件模板包 - ParseComponentTemplatePackage
#### 功能介绍
此API用于解析组件模板包。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-servicestage/servicestage_06_0183.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                           | 访问级别 | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 别名                   | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | servicestage:app:getComponent | read | app \*      | - [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)  - [g:ResourceTag/\<tag-key\>](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)   | servicestage:app:get | -      |
     
  
 
#### URI
POST /v3/{project_id}/cas/components/parse-template-package
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 租户项目ID。获取方法，请参考[获取项目ID](https://support.huaweicloud.com/api-servicestage/servicestage_06_0164.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| Content-Type | 是    | String | **参数解释：** 消息体的类型（格式）。 **约束限制：** 不涉及 **取值范围：** application/json;charset=utf8 **默认取值：** 不涉及                                                                                                                      |
| X-Auth-Token | 是    | String | **参数解释：** 调用接口的认证方式分为Token和AK/SK两种，如果您使用的Token方式，此参数为必填，请填写Token的值。Token获取方式，请参考[认证鉴权](https://support.huaweicloud.com/api-servicestage/servicestage_06_0010.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数              | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| template_source | 否    | Object | **参数解释：** 组件模板包来源，请参考[表4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| component_id    | 否    | String | **参数解释：** 组件ID。 - 通过[根据组件ID修改组件信息 - ModifyComponentInformationBasedOnTheComponentID](https://support.huaweicloud.com/api-servicestage/servicestage_06_0079.html)升级组件时需要设置。获取方法，请参考[获取应用所有组件 - ObtainAllComponentsOfAnApplication](https://support.huaweicloud.com/api-servicestage/servicestage_06_0077.html)。  - [基于组件模板创建组件 - CreateComponentBasedOnComponentTemplate](https://support.huaweicloud.com/api-servicestage/servicestage_06_0242.html)时无需设置。   **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表4template_source 
| 参数            | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| storage       | 是    | String           | **参数解释：** 组件模板包存储方式。 **取值范围：** - devcloud：CodeArts软件发布库。  - obs：OBS对象存储。  - http：自定义文件地址。   **默认取值：** 不涉及 |
| url           | 是    | String           | **参数解释：** 组件模板包地址。 组件模板包存储方式为自定义文件地址时有效。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| http_username | 否    | String           | **参数解释：** 用户名。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                       |
| http_password | 否    | String           | **参数解释：** 密码。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                        |
| http_headers  | 否    | Array of objects | **参数解释：** 请求头，请参考[表5]。 组件模板包存储方式为自定义文件地址且安全认证方式为自定义Header认证时有效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表5http_headers 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| key   | 是    | String | **参数解释：** 请求key。 **取值范围：** 不涉及 **默认取值：** 不涉及        |
| value | 是    | String | **参数解释：** 请求value。 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 响应消息
表6响应参数 
| 参数           | 参数类型                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| template     | Map\<String, String\> | **参数解释：** 模板包文件信息。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| variables    | Map\<String, Object\> | **参数解释：** 模板包变量声明信息。 **取值范围：** - key：变量名。  - value：请参考[表7]。   |
| input_values | Map\<String, String\> | **参数解释：** 模板包输入信息。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
 表7variables 
| 参数          | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| type        | String | **参数解释：** 变量类型。 **取值范围：** - LIST：集合。  - SET：无重复集合。  - MAP：键值对。  - OBJECT：普通对象。   |
| default     | String | **参数解释：** 变量默认值。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                    |
| description | String | **参数解释：** 变量描述。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 请求示例
解析存储在OBS桶obs://apitest/路径下的demo-app-package.zip组件模板包。
```
{
    "template_source": {
        "storage": "obs",
        "url": "obs://apitest/demo-app-package.zip",
        "http_username": null,
        "http_password": null
    }
}
```
#### 响应示例
```
{
    "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.cn-north-4.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: ******",
        "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: 配置文件名称\n  namespace:\n    type: string\n    default: demo\n    description: 命名空间\n  dep_name:\n    type: string\n    default: demo-dep\n    description: 工作负载的名字\n  svc_port:\n    type: integer\n    default: 8080\n    description: 服务的端口号\n  value:\n    type: string\n    default: World\n    description: Hello接口响应数据\n  cce_resource:\n    type: cce\n    description: CCE资源\n  elb_resource:\n    type: elb\n    description: ELB资源\n  image:\n    type: string\n    description: 工作负载镜像",
        "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"
    },
    "input_values": {
        "config_name": "demo-group/application.yaml",
        "image": "swr.cn-north-4.myhuaweicloud.com/ss/demo-app:latest",
        "svc_port": 8080,
        "cce_resource": null,
        "namespace": "demo",
        "dep_name": "demo-dep",
        "value": "World",
        "elb_resource": null
    }
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 操作成功    |
| 400 | 错误的请求   |
| 404 | 请求对象不存在 |
| 500 | 内部错误    |
   
#### 错误码
请参考[ServiceStage错误码](https://support.huaweicloud.com/api-servicestage/servicestage_06_0162.html)。
