Creating an ECS

Scenarios

An ECS with EVS disks is required.

An ECS can be created using a disk or image. This section uses an image as an example to describe how to create an ECS.

Involved APIs

Creating an ECS involves viewing flavors and AZs as well as creating EVS disks. The following APIs are required:

  • API for viewing details about ECS flavors

  • API for viewing details about images

  • API for viewing networks

  • API for creating and importing an SSH key pair

  • API for creating an ECS

  • API for viewing details about an ECS

Procedure

  1. Determine the ECS flavor.

    1. View ECS flavors.

      • API

        URI format: GET /v2/{tenant_id}/flavors/detail{?minDisk,minRam,is_public,sort_key,sort_dir}

        The fields following the question mark (?) are optional for viewing flavors. For details, see section Querying Details About ECS Flavors.

      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/flavors/detail

        Obtain the endpoint from Regions and Endpoints.

      • Response example

        {
          "flavors": [
            {
              "name": "c1.2xlarge",
              "links": [
                {
                  "href": "https://xxx/v2/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge",
                  "rel": "self"
                },
                {
                  "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge",
                  "rel": "bookmark"
                }
              ],
              "ram": 8192,
              "OS-FLV-DISABLED:disabled": false,
              "vcpus": 8,
              "swap": "",
              "os-flavor-access:is_public": true,
              "rxtx_factor": 1,
              "OS-FLV-EXT-DATA:ephemeral": 0,
              "disk": 0,
              "id": "c1.2xlarge"
            }
        ]
        }
        
    2. Select a flavor based on site requirements and record the flavor ID.

  2. Determine the image.

    1. View images.

      • API

        URI format: GET /v2/{tenant_id}/images/detail

        For details, see section "Querying Image Details" in Elastic Cloud Server API Reference.

      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/images/detail

        Obtain the endpoint from Regions and Endpoints.

      • Response example

        {
          "images": [
            {
              "OS-EXT-IMG-SIZE:size": 0,
              "metadata": {
                "__os_type": "Linux",
                "hw_vif_multiqueue_enabled": "true",
                "__imagetype": "gold",
                "__quick_start": "true",
                "virtual_env_type": "FusionCompute",
                "__support_xen": "true",
                "__support_kvm": "true",
                "__image_source_type": "uds",
                "__platform": "EulerOS",
                "__os_version": "EulerOS 2.2 64bit",
                "__os_bit": "64",
                "__isregistered": "false"
              },
              "created": "2018-05-14T06:13:50Z",
              "minRam": 0,
              "name": "DBS-MySQL-Image_2.1.3.3",
              "progress": 100,
              "links": [
                {
                  "rel": "self",
                  "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
                },
                {
                  "rel": "bookmark",
                  "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
                },
                {
                  "rel": "alternate",
                  "href": "https://None/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4",
                  "type": "application/vnd.openstack.image"
                }
              ],
              "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4",
              "updated": "2018-05-14T06:13:52Z",
              "minDisk": 40,
              "status": "ACTIVE"
            }
          ]
        }
        
    2. Select an image based on site requirements and record the image ID.

  3. Determine the network configuration.

    1. View networks.

      • API

        URI format: GET /v2/{tenant_id}/os-networks

        For details, see section "Querying Networks" in Elastic Cloud Server API Reference.

      • Request example

        GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-networks

        Obtain the endpoint from Regions and Endpoints.

      • Response example

        {
          "networks": [
            {
              "id": "07a9557d-4256-48ae-847c-415a9c8f7ff6",
              "label": "b_tt3_td1b",
              "broadcast": null,
              "cidr": null,
              "dns1": null,
              "dns2": null,
              "gateway": null,
              "netmask": null,
              "cidr_v6": null,
              "gateway_v6": null,
              "netmask_v6": null
            }
          ]
        }
        
    2. Select a network based on site requirements and record the network ID.

  4. Set the login mode to key pair.

    1. Create a key pair.

      • API

        URI format: POST /v2/{tenant_id}/os-keypairs

        For details, see section "Creating and Importing an SSH Key Pair" in Elastic Cloud Server API Reference.

      • Request example

        POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-keypairs

        Obtain the endpoint from Regions and Endpoints.

        Body

        {
            "keypair": {
                "type": "ssh",
                "name": "demo1",
                "user_id": "fake"
            }
        }
        
      • Response example

        {
          "keypair": {
            "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh5ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shTD+00G5WuwkBbFU4CLvt1B44u0NUiaTJ35NAvW2/4XvpXm9OwiQ3B5ge6ZY7Esi38Unh+pkbhPkYxNBCK8yoOlojQhWs75abdxZBi811/8RwLcNiFiocA2RGxtRjBdpEScj+1TU+OcfZdQnr0AFbO11z7yxfIygwwzVTgUuJNbMbKHStQqRbklfMlHY4RBPQgb7RN/YaXKTQSXT84k+D9xlDNo7Wj4fwOJTOz/s/PvbIOqjRHt9D6Y4IKd Generated-by-Nova\n",
            "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAq0eRnMJYeYoeyTr8yFLkMUuas1ljzGB3g15AykkPVuabpjld\nOUojt1grMJ2kOcTHTpd9ZjYh7cJcKvXSYu1+oyQQdrIUw/tNBuVrsJAWxVOAi77d\nQeOLtDVImkyd+TQL1tv+F76V5vTsIkNweYHumWOxLIt/FJ4fqZG4T5GMTQQivMqD\npaI0IVrO+Wm3cWQYvNdf/EcC3DYhYqHANkRsbUYwXaREnI/tU1PjnH2XUJ69ABWz\ntdc+8sXyMoMMM1U4FLiTWzGyh0rUKkW5JXzJR2OEQT0IG+0Tf2Glyk0El0/OJPg/\ncZQzaO1o+H8DiUzs/7Pz72yDqo0R7fQ+mOCCnQIDAQABAoIBAA6/c9dGmK2mae4z\nyQ5KrOFdvC1TNhej+sZx+CwyzEJUSvSuHcvQCXFBAz8FY92hhvPKcX66jINXZ+4/\nCmWAQ5YyhcRiow0Y91HvsS0bywoknX3q6kxBFodmyyCWFkgd5iMTADb1Lx0a27Y7\njlS4Dl5gyiGmxUN2Ng24wWEAjE8ZNuI0lrtr5IZKp+s5IAi/rb5AG/mL7EzicE8c\nmGP+QAa+nzwhAwNhFwVID230xen/ZcoL1d77hxeARNqJUxoR25gwJd6Ebg2y9pDW\nVu6cbbzgdGUCfQYlMEoAamAkCswOsDpVDBXwQnt2A537n6Wq2bgYIKusHr9thtxP\n/5ubQLUCgYEA4zYuBG2vtLHnvce26P8o2j1xcJS9K0ozkah9JFl3hqFN0sAqLlz7\n/Fm1jA4kzHJS3d0UqP3AMDxY3HkIqCn4Be7lqeAAe2AfqkOZpt9MDNv4VwKe9sPb\nViW1qjL3FxziLC/YWTRNSlpwRjqJJGhA+UQt8rOia1k/zXmrEs7bXLcCgYEAwPsu\nK3j5QoAiziYVMYf5iCzWwAM9Ljpf9gw23lefTdIzhhfFtJplVRSyxRGU0UZ84GMI\nTd5zmcIF/1KUfhqmeiQzz6NIPEYEReahjpQ/sOH/Gk5Rwr3QwYPrwAu5x+kk/SRi\nKPkqw7APTR0sMQBcUq+ZYwGYLGPMdd1zUdLfb0sCgYBkuz11iydtxb3G/obSD2WO\nM9VaIycmzRPFzNwGRH/gOR0mhTluKp0wyJjbSd34oeqpH/2r2ivddrOysxoqa8jg\n4IQDZyLvj7MaKjQxrieqP89+y9Or9TMFo1xB46x2G8EN8/xHuA9YGnZSPFtWv72m\nhRqV0hv82amWsA0vHnRUSwKBgDsKHXvrTMbNkNhkykMXCH5iyWiBFSyZa1ZJMlgf\nknsqfdzeVPwF6E55QKAN2uuTlwzG/3ljPxahR1hvmUJjQN9JSBiUKbtW6GPCRVbr\nf/jLi1Iu99COZdluVKeybqn8Z/aSNP24DR9FM8kxzZ1IMPaTBmhFypp6BclhcLBt\nxTG1AoGAfcrkVbV1SOy7fECUtMpUECcw0yU4GWj3sR2RbII63C500RVYQlUpUaRR\naANbASHTVR4myOKtGSxEUhAQHlxFDwsDL7W3gzAqTFbEDp1xAAUyT/nkOAhQjEm4\nORFdDETeXLQG1KMUj+8AdnhfYp3JTdft6rmPpZEBUFiCAUMAvb0=\n-----END RSA PRIVATE KEY-----\n",
            "user_id": "f79791beca3c48159ac2553fff22e166",
            "name": "demo1",
            "fingerprint": "57:a7:a2:ed:5f:aa:e7:54:62:2e:bb:e7:92:22:cb:40"
          }
        }
        
    2. Import the key pair.

      • API

        URI format: POST /v2/{tenant_id}/os-keypairs

        For details, see section "Creating and Importing an SSH Key Pair" in Elastic Cloud Server API Reference.

      • Request example

        POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/os-keypairs

        Obtain the endpoint from Regions and Endpoints.

        Body

        {
            "keypair": {
                "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n",
                "type": "ssh",
                "name": "demo2",
                "user_id": "fake"
            }
        }
        
      • Response example

        {
          "keypair": {
            "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n",
            "user_id": "f79791beca3c48159ac2553fff22e166",
            "name": "demo2",
            "fingerprint": "dd:44:45:49:d9:f6:4f:c0:24:2d:81:aa:c4:4b:83:c2"
          }
        }
        
    3. Record the name in the response body, for example, demo2.

  5. Create an ECS authenticated using the key pair.

    • API

      URI format: POST /v2/{tenant_id}/servers

      For details about API constraints and request parameters, see section "Creating an ECS" in Elastic Cloud Server API Reference.

      Note

      In this example, the ECS is created using a specified image. Therefore,

      • In block_device_mapping_v2, set source_type to image, uuid to the image ID, destination_type to volume, and boot_index to 0.

      • The volume_size must be greater than or equal to the minimum value specified in the image metadata.

    • Request example

      POST: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers

      Obtain the endpoint from Regions and Endpoints.

      Body

      {
          "server": {
              "flavorRef": "c1.large",
              "name": "zttestvm1",
              "block_device_mapping_v2": [{
              "source_type": "image",
              "destination_type": "volume",
              "volume_type": "SATA",
                    "volume_size": "40",
                    "delete_on_termination": "true",
              "uuid": "11e8f727-d439-4ed1-b3b8-33f46c0379c4",
              "boot_index": "0"
              }],
              "networks": [{
                  "uuid": "fb68519f-a7c0-476e-98d4-2e4cf6de6def"
              }],
              "key_name": "demo2",
              "availability_zone": "eu-de-01"
          }
      }
      
    • Response example

      {
        "server": {
          "security_groups": [
            {
              "name": "default"
            }
          ],
          "OS-DCF:diskConfig": "MANUAL",
          "links": [
            {
              "rel": "self",
              "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077"
            },
            {
              "rel": "bookmark",
              "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077"
            }
          ],
          "id": "6d311127-bce1-48db-bf0f-cac9f8f7f077",
          "adminPass": "WcC4QoVZPXpV"
        }
      }
      
  6. Verify the ECS creation.

    • API

      URI format: GET /v2/{tenant_id}/servers/{server_id}

      For details, see section "Querying Details About an ECS" in Elastic Cloud Server API Reference.

    • Request example

      GET: https://{endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6

      Where,

      0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6 is the UUID of the created ECS.

      Obtain the endpoint from Regions and Endpoints.

    • Response example

      {
        "server": {
          "tenant_id": "74610f3a5ad941998e91f076297ecf27",
          "addresses": {
            "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68": [
              {
                "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:88:01:1b",
                "OS-EXT-IPS:type": "fixed",
                "addr": "192.168.2.192",
                "version": 4
              }
            ]
          },
          "metadata": {},
          "OS-EXT-STS:task_state": null,
          "OS-DCF:diskConfig": "MANUAL",
          "OS-EXT-AZ:availability_zone": "eu-de-01",
          "links": [
            {
              "rel": "self",
              "href": "https://None/v2/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6"
            },
            {
              "rel": "bookmark",
              "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6"
            }
          ],
          "OS-EXT-STS:power_state": 1,
          "id": "0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6",
          "os-extended-volumes:volumes_attached": [
            {
              "id": "b551445a-e749-4d53-932a-638a455cb6c3"
            }
          ],
          "OS-EXT-SRV-ATTR:host": "pod1a.eude1",
          "image": {
            "links": [
              {
                "rel": "bookmark",
                "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4"
              }
            ],
            "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4"
          },
          "OS-SRV-USG:terminated_at": null,
          "accessIPv4": "",
          "accessIPv6": "",
          "created": "2018-05-25T01:47:11Z",
          "hostId": "b2792bef989888d2df1f51bff81de5ac58a4117f4e9ec3059c1a0410",
          "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova001@36",
          "key_name": null,
          "flavor": {
            "links": [
              {
                "rel": "bookmark",
                "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/c1.large"
              }
            ],
            "id": "c1.large"
          },
          "security_groups": [
            {
              "name": "default"
            }
          ],
          "config_drive": "",
          "OS-EXT-STS:vm_state": "active",
          "OS-EXT-SRV-ATTR:instance_name": "instance-001883cd",
          "user_id": "f79791beca3c48159ac2553fff22e166",
          "name": "zttestvm1",
          "progress": 0,
          "OS-SRV-USG:launched_at": "2018-05-25T01:47:55.755922",
          "updated": "2018-05-25T01:47:55Z",
          "status": "ACTIVE"
        }
      }