解析组件模板包
功能介绍
此API用于解析组件模板包。
URI
POST /v3/{project_id}/cas/components/parse-template-package
| 
       参数  | 
     
       是否必选  | 
     
       参数类型  | 
     
       描述  | 
    
|---|---|---|---|
| 
       project_id  | 
     
       是  | 
     
       String  | 
     
       租户项目ID。获取方法,请参考获取项目ID。  | 
    
请求参数
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        Content-Type  | 
      
        是  | 
      
        String  | 
      
        消息体的类型(格式),默认取值为“application/json;charset=utf8”。  | 
     
| 
        X-Auth-Token  | 
      
        是  | 
      
        String  | 
      
        调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考认证鉴权。  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        template_source  | 
      
        否  | 
      
        Object  | 
      
        组件模板包来源,请参考表4。  | 
     
| 
        component_id  | 
      
        否  | 
      
        String  | 
      
        组件ID。 
  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        storage  | 
      
        是  | 
      
        String  | 
      
        组件模板包存储方式。 
  | 
     
| 
        url  | 
      
        是  | 
      
        String  | 
      
        组件模板包地址。 组件模板包存储方式为自定义文件地址时有效。  | 
     
| 
        http_username  | 
      
        否  | 
      
        String  | 
      
        用户名。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。  | 
     
| 
        http_password  | 
      
        否  | 
      
        String  | 
      
        密码。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。  | 
     
| 
        http_headers  | 
      
        否  | 
      
        Array of objects  | 
      
        请求头,请参考表5。 组件模板包存储方式为自定义文件地址且安全认证方式为自定义Header认证时有效。  | 
     
响应消息
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        template  | 
      
        Map<String, String>  | 
      
        模板包文件信息。  | 
     
| 
        variables  | 
      
        Map<String, Object>  | 
      
        模板包变量声明信息。 
  | 
     
| 
        input_values  | 
      
        Map<String, 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.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: 配置文件名稱\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.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
    }
}
 状态码
| 
        状态码  | 
      
        描述  | 
     
|---|---|
| 
        200  | 
      
        操作成功  | 
     
| 
        400  | 
      
        错误的请求  | 
     
| 
        404  | 
      
        请求对象不存在  | 
     
| 
        500  | 
      
        内部错误  | 
     
错误码
请参考ServiceStage错误码。