
# 示例1：创建IDE实例
#### 操作场景
本节指导用户通过API创建IDE实例。
API的调用方法请参见[如何调用API](https://support.huaweicloud.com/api-cloudide/cloudide_03_0006.html)，接口参数详情参考 [创建IDE实例 - CreateInstance](https://support.huaweicloud.com/api-cloudide/CreateInstance.html)。
#### 前提条件
确定调用API的Endpoint，详细信息请参见[终端节点](https://support.huaweicloud.com/api-cloudide/cloudide_03_0000.html#cloudide_03_0000__section094053201215)。
#### 创建IDE实例
1. 检查实例名是否重复。 GET https://{endpoint}/v2/instances/duplicate?display_name=test
   接口相关信息请参考[查询IDE实例名是否重复 - CheckName](https://support.huaweicloud.com/api-cloudide/CheckName.html)。
   
2. 确定待创建实例的技术栈。 GET https://{endpoint}/v2/stacks/tag
   接口相关信息请参考[查询某个IDE实例对应技术栈部署 - ShowInstanceTechStack](https://support.huaweicloud.com/api-cloudide/ShowInstanceTechStack.html)。
   查询所有技术栈，根据实际需要选择技术栈及其对应的规格（CPU、存储）。
   ```
   {
     "stack" : {
       "tags" : [ "Java", "Maven", "CPP", "Vue", "ServiceComb", "Blockchain", "GO", "Node.js", "DCN", "Quantum", "JavaScript", "Ruby", "Python" ],
       "stack_list" : [ {
         "id" : 1,
         "stack_id" : "all",
         "creator" : "ide",
         "name" : "All in One",
         "description" : "支持Java、Python、JS/TS等多种语言",
         "scope" : "general",
         "config" : {
           "recipe" : {
             "content" : "hishell-all-in-one:alpha",
             "type" : "dockerimage"
           },
           "attributes" : {
             "specs" : [ "2U4G" ],
             "volumes" : [ "5GB", "10GB", "20GB" ]
           }
         },
         "tags" : [ "Java", "Maven", "CPP", "JavaScript", "Vue", "GO", "Node.js", "Ruby", "Python", "ServiceComb" ],
         "disable" : false,
         "arm_config" : {
           "recipe" : {
             "content" : "hishell-all-in-one:alpha",
             "type" : "dockerimage"
           },
           "attributes" : {
             "specs" : [ "4U8G" ],
             "volumes" : [ "5GB", "10GB", "20GB" ]
           }
         }
       } ]
     },
     "status" : "success"
   }
   ```
   - stack_id：技术栈id。
   
   - config.attributes.specs：技术栈x86架构支持的内存。
   
   - config.attributes.volumes：技术栈x86架构支持的存储容量。
   
   - arm_config.attributes.specs：技术栈arm架构支持的内存。
   
   - arm _config.attributes.volumes：技术栈arm架构支持的存储容量。
    
3. 查询技术栈费用。 可以参考[获取技术栈计费信息 - ShowPrice](https://support.huaweicloud.com/api-cloudide/ShowPrice.html)，为cpu内存和存储容量价格和。
   
4. 确定技术栈模板工程。 GET https://{endpoint}/v2/templates?stack_id=all
   接口相关信息参考[查询技术栈模板工程 - ListProjectTemplates](https://support.huaweicloud.com/api-cloudide/ListProjectTemplates.html)，根据实际需求选择模板工程。
   ```
   {
     "templates" : [ {
       "template_id" : 5,
       "name" : "web-java-spring",
       "source" : {
         "location" : "git@codehub.alpha.devcloud.inhuawei.com:Demo00226/JavaWeb.git",
         "type" : "git",
         "parameters" : { }
       },
       "display_name" : "web-java-spring",
       "path" : "/web-java-spring",
       "description" : "A basic example using Spring servlets. The app returns values entered into a submit form.",
       "project_type" : "maven",
       "region" : "cn-north-7",
       "tags" : [ "maven", "spring", "java", "web" ],
       "arch" : "x86,arm"
     } ],
     "status" : "success"
   }
   ```
   其中，**source.location**为模板git仓地址。
   
5. 创建IDE实例。 org_id：组织id（对应华为云账号的domainId）。
   POST https://{endpoint}/v2/{org_id}/instances
   ```
   {
     "display_name" : "test",
     "stack_id" : "java",
     "description" : "",
     "cpu_memory" : "2U4G",
     "pvc_quantity" : "5GB",
     "refresh_interval" : 30
   }
   ```
   - display_name：实例名称。
   
   - stack_id：技术栈id。
   
   - cpu_memory：内存。
   
   - pvc_quantity：存储容量。
   
   - refresh_interval：实例生命周期。
   
   
   响应如下，表示创建成功。
   ```
   {
     "result" : {
       "link" : "https://****/cloudide/loading?instanceId=mpdrao",
       "arch" : "x86",
       "id" : "mpdrao"
     },
     "status" : "success"
   }
   ```
   - id：实例id。
   
   - link：实例访问地址。
   
   
   ![](https://support.huaweicloud.com/api-cloudide/public_sys-resources/note_3.0-zh-cn.png)
   访问接口返回的link地址，可以进入IDE实例。此处没有获取模板工程，如果要下载模板，可以指定模板git地址scmUrl。
   https://\*\*\*\*/cloudide/loading?scmName=test\&scmUrl=git@\*\*\*/JavaWeb.git\&deleteRepoInfo=true\&instanceId=mpdrao
   
 
