:original_name: vpc_subnet01_0001.html .. _vpc_subnet01_0001: Creating a Subnet ================= Function -------- This API is used to create a subnet. URI --- POST /v1/{project_id}/subnets :ref:`Table 1 ` describes the parameters. .. _vpc_subnet01_0001__table21421675: .. table:: **Table 1** Parameter description ========== ========= ========================= Name Mandatory Description ========== ========= ========================= project_id Yes Specifies the project ID. ========== ========= ========================= Request Message --------------- - Request parameter .. table:: **Table 2** Request parameter +--------+-----------+---------------------------------------------------------+-------------------------------------------------------------------------+ | Name | Mandatory | Type | Description | +========+===========+=========================================================+=========================================================================+ | subnet | Yes | :ref:`subnet ` object | Specifies the :ref:`subnet objects `. | +--------+-----------+---------------------------------------------------------+-------------------------------------------------------------------------+ .. _vpc_subnet01_0001__table45596481: .. table:: **Table 3** **subnet** objects +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Mandatory | Type | Description | +===================+=================+================================================================================+=====================================================================================================================================================================================================================================+ | name | Yes | String | - Specifies the subnet name. | | | | | - The value can contain 1 to 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.). | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | description | No | String | - Provides supplementary information about the subnet. | | | | | - The value can contain no more than 255 characters and cannot contain angle brackets (< or >). | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | cidr | Yes | String | - Specifies the subnet CIDR block. | | | | | - The value must be within the VPC CIDR block. | | | | | - The value must be in CIDR format. The subnet mask cannot be greater than 28. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | gateway_ip | Yes | String | - Specifies the gateway of the subnet. | | | | | - The value must be an IP address in the subnet. | | | | | - The value must be a valid IP address. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dhcp_enable | No | Boolean | - Specifies whether DHCP is enabled for the subnet. | | | | | - The value can be **true** (enabled) or **false** (disabled). | | | | | - If this parameter is left blank, the value is set to **true** by default. If this parameter is set to **false**, newly created ECSs cannot obtain IP addresses, and usernames and passwords cannot be injected using Cloud-init. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | primary_dns | No | String | - Specifies the IP address of DNS server 1 on the subnet. | | | | | - The value must be an IP address. If the value is not specified, the default value will be left blank. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | secondary_dns | No | String | - Specifies the IP address of DNS server 2 on the subnet. | | | | | - The value must be an IP address. If the value is not specified, the default value will be left blank. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dnsList | No | Array of strings | - Specifies the DNS server address list of a subnet. This field is required if you need to use more than two DNS servers. | | | | | - This parameter value is the superset of both DNS server address 1 and DNS server address 2. If the value is not specified, the default value will be left blank. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | availability_zone | No | String | - Specifies the AZ to which the subnet belongs, which can be obtained from endpoints. | | | | | - The value must be an existing AZ in the system. If the value is not specified, the default value will be left blank. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | vpc_id | Yes | String | Specifies the ID of the VPC to which the subnet belongs. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | extra_dhcp_opts | No | Array of :ref:`extra_dhcp_opt ` objects | Specifies the NTP server address or DHCP lease time configured for the subnet. For details, see :ref:`Table 4 `. | +-------------------+-----------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _vpc_subnet01_0001__table1805181451016: .. table:: **Table 4** **extra_dhcp_opt** object +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Mandatory | Type | Description | +=================+=================+=================+======================================================================================================================================================================================================================================================================================================================================================================================================================================+ | opt_value | No | String | - Specifies the NTP server address or DHCP lease expiration time configured for the subnet. | | | | | | | | | | - Constraints: | | | | | | | | | | The option **ntp** for **opt_name** indicates the NTP server configured for the subnet. Currently, only IPv4 addresses are supported. A maximum of four IP addresses can be configured, and each address must be unique. Multiple IP addresses must be separated using commas (,). The option **null** for **opt_name** indicates that no NTP server is configured for the subnet. The parameter value cannot be an empty string. | | | | | | | | | | The option **addresstime** for **opt_name** indicates the DHCP lease expiration time. The value can be **-1**, which indicates unlimited lease time, or *Number*\ **+h**. The number ranges from 1 to 30,000. For example, the value can be **5h**. The default value is **24h**. | +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | opt_name | Yes | String | - Specifies the NTP server address name or DHCP lease expiration time name configured for the subnet. | | | | | - Currently, the value can only be set to **ntp** or **addresstime**. | +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - Example request .. code-block:: text POST https://{Endpoint}/v1/{project_id}/subnets { "subnet": { "name": "subnet", "description": "", "cidr": "192.168.20.0/24", "gateway_ip": "192.168.20.1", "dhcp_enable": true, "primary_dns": "114.xx.xx.114", "secondary_dns": "114.xx.xx.115", "dnsList": [ "114.xx.xx.114", "114.xx.xx.115" ], "availability_zone": "aa-bb-cc", "vpc_id": "3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85", "extra_dhcp_opts": [ { "opt_value": "10.100.0.33,10.100.0.34", "opt_name": "ntp" }, { "opt_value": "24h", "opt_name": "addresstime" } ] } } Response Message ---------------- - Response parameter .. table:: **Table 5** Response parameter +--------+---------------------------------------------------------+-------------------------------------------------------------------------+ | Name | Type | Description | +========+=========================================================+=========================================================================+ | subnet | :ref:`subnet ` object | Specifies the :ref:`subnet objects `. | +--------+---------------------------------------------------------+-------------------------------------------------------------------------+ .. _vpc_subnet01_0001__table54041329: .. table:: **Table 6** **subnet** objects +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Type | Description | +=======================+===============================================================================+==================================================================================================================================================================================================================================================+ | id | String | Specifies the resource identifier in the form of UUID. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | String | - Specifies the subnet name. | | | | - The value can contain 1 to 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.). | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | description | String | - Provides supplementary information about the subnet. | | | | - The value can contain no more than 255 characters and cannot contain angle brackets (< or >). | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | cidr | String | - Specifies the subnet CIDR block. | | | | - The value must be within the VPC CIDR block. | | | | - The value must be in CIDR format. The subnet mask cannot be greater than 28. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | gateway_ip | String | - Specifies the gateway of the subnet. | | | | - The value must be an IP address in the subnet. | | | | - The value must be a valid IP address. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dhcp_enable | Boolean | Specifies whether the DHCP function is enabled for the subnet. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | primary_dns | String | - Specifies the IP address of DNS server 1 on the subnet. | | | | - The value must be an IP address. If the value is not specified, the default value will be left blank. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | secondary_dns | String | - Specifies the IP address of DNS server 2 on the subnet. | | | | - The value must be an IP address. If the value is not specified, the default value will be left blank. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dnsList | Array of strings | - Specifies the DNS server address list of a subnet. This field is required if you need to use more than two DNS servers. | | | | - This parameter value is the superset of both DNS server address 1 and DNS server address 2. If the value is not specified, the default value will be left blank. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | availability_zone | String | - Specifies the AZ to which the subnet belongs, which can be obtained from endpoints. | | | | - The value must be an existing AZ in the system. If the value is not specified, the default value will be left blank. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | vpc_id | String | Specifies the ID of the VPC to which the subnet belongs. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | status | String | - Specifies the status of the subnet. | | | | | | | | - The value can be **ACTIVE**, **UNKNOWN**, or **ERROR**. | | | | | | | | - **ACTIVE**: indicates that the subnet has been associated with a VPC. | | | | - **UNKNOWN**: indicates that the subnet has not been associated with a VPC. | | | | - **ERROR**: indicates that the subnet is abnormal. | | | | | | | | - The system creates a subnet and then associates the subnet with a VPC in the threads. | | | | | | | | In the concurrent scenario, if the CIDR block of the created subnet is the same as that of an existing subnet, the created subnet fails to associate with a VPC after underlying system verification. As a result, the subnet creation fails. | | | | | | | | In this scenario, the returned value of **status** is **UNKNOWN**. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | neutron_network_id | String | Specifies the ID of the corresponding network (OpenStack Neutron API). | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | neutron_subnet_id | String | Specifies the ID of the corresponding subnet (OpenStack Neutron API). | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | extra_dhcp_opts | Array of :ref:`extra_dhcp_opt ` objects | Specifies the NTP server address or DHCP lease time configured for the subnet. For details, see :ref:`Table 7 `. | +-----------------------+-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _vpc_subnet01_0001__table019517383270: .. table:: **Table 7** **extra_dhcp_opt** object +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Mandatory | Type | Description | +=================+=================+=================+======================================================================================================================================================================================================================================================================================================================================================================================================================================+ | opt_value | No | String | - Specifies the NTP server address or DHCP lease expiration time configured for the subnet. | | | | | | | | | | - Constraints: | | | | | | | | | | The option **ntp** for **opt_name** indicates the NTP server configured for the subnet. Currently, only IPv4 addresses are supported. A maximum of four IP addresses can be configured, and each address must be unique. Multiple IP addresses must be separated using commas (,). The option **null** for **opt_name** indicates that no NTP server is configured for the subnet. The parameter value cannot be an empty string. | | | | | | | | | | The option **addresstime** for **opt_name** indicates the DHCP lease expiration time. The value can be **-1**, which indicates unlimited lease time, or *Number*\ **+h**. The number ranges from 1 to 30,000. For example, the value can be **5h**. The default value is **24h**. | +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | opt_name | Yes | String | - Specifies the NTP server address name or DHCP lease expiration time name configured for the subnet. | | | | | - Currently, the value can only be set to **ntp** or **addresstime**. | +-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - Example response .. code-block:: { "subnet": { "id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "name": "subnet", "description": "", "cidr": "192.168.20.0/24", "dnsList": [ "114.xx.xx.114", "114.xx.xx.115" ], "status": "UNKNOWN", "vpc_id": "3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85", "gateway_ip": "192.168.20.1", "dhcp_enable": true, "primary_dns": "114.xx.xx.114", "secondary_dns": "114.xx.xx.115", "availability_zone": "aa-bb-cc", "neutron_network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "neutron_subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12" "extra_dhcp_opts": [ { "opt_value": "10.100.0.33,10.100.0.34", "opt_name": "ntp" }, { "opt_value": "24h", "opt_name": "addresstime" } ] } } Status Code ----------- See :ref:`Status Codes `. Error Code ---------- See :ref:`Error Codes `.