更新时间:2024-03-05 GMT+08:00

创建子网

功能介绍

创建子网。

约束与限制

  • 网络下存在IPv4子网的情况下,才可以创建IPv6子网。
  • VXLAN类型网络下只能有一个IPv4的子网和一个IPv6的子网。

URI

POST /v1/{project_id}/subnets

参数说明请参见表1
表1 参数说明

名称

是否必选

说明

project_id

项目ID,获取项目ID请参见获取项目ID

请求参数

表2 请求参数

名称

是否必选

参数类型

说明

subnet

subnet object

subnet对象

表3 subnet对象

名称

是否必选

参数类型

说明

name

String

  • 功能说明:子网名称
  • 取值范围:1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)

description

String

  • 功能说明:子网描述
  • 取值范围:0-255个字符,不能包含“<”和“>”。

cidr

String

  • 功能说明:子网的网段
  • 取值范围:必须在vpc对应cidr范围内
  • 约束:必须是cidr格式。掩码长度不能大于28

gateway_ip

String

  • 功能说明:子网的网关
  • 取值范围:子网网段中的IP地址
  • 约束:必须是ip格式

ipv6_enable

Boolean

  • 功能说明:是否创建IPv6子网
  • 取值范围:true(开启),false(关闭)
  • 约束:不填时默认为false

dhcp_enable

Boolean

  • 功能说明:子网是否开启dhcp功能
  • 取值范围:true(开启),false(关闭)
  • 约束:不填时默认为true。当设置为false时,会导致新创建的ECS无法获取IP地址,Cloud-init无法注入账号密码,请谨慎操作。

primary_dns

String

  • 功能说明:子网dns服务器地址1
  • 约束:ip格式,不支持IPv6地址。不填时,默认为空

secondary_dns

String

  • 功能说明:子网dns服务器地址2
  • 约束:ip格式,不支持IPv6地址。不填时,默认为空。

    若只填secondary_dns,不填primary_dns,会自动把值填入primary_dns。

    只有一个dns服务器地址时,只显示primary_dns,不显示secondary_dns。

dnsList

Array of strings

  • 功能说明:子网dns服务器地址的集合;如果想使用两个以上dns服务器,请使用该字段
  • 约束:是子网dns服务器地址1跟子网dns服务器地址2的合集的父集不填时,默认为空

availability_zone

String

  • 功能说明:子网所在的可用区标识,从终端节点获取,参考终端节点(Endpoint)
  • 约束:系统存在的可用区标识;不填时,默认为空

vpc_id

String

子网所在VPC标识

extra_dhcp_opts

Array of extra_dhcp_opt objects

子网配置的NTP地址,详情请参见extra_dhcp_opt对象

表4 extra_dhcp_opt对象

名称

是否必选

参数类型

说明

opt_value

String

  • 功能说明:子网配置的NTP地址。
  • 约束:

    opt_name配置为“ntp”,则表示是子网ntp地址,目前只支持IPv4地址,每个IP地址以逗号隔开,IP地址个数不能超过4个,不能存在相同地址。该字段为null表示取消该子网NTP的设置,不能为“ ”(空字符串)。

opt_name

String

  • 功能说明:子网配置的NTP地址名称。
  • 约束:目前只支持填写字符串“ntp”。

请求示例

  • 创建一个子网,所在vpc的id为3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85,命名为subent,设置cidr为192.168.20.0/24,网关IP为192.168.20.1。
    POST https://{Endpoint}/v1/{project_id}/subnets
    
    {
        "subnet": {
            "name": "subnet",
            "description": "",
            "cidr": "192.168.20.0/24",
            "gateway_ip": "192.168.20.1",
            "ipv6_enable": true,
            "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"
        }
    }

响应参数

表5 响应参数

名称

参数类型

说明

subnet

subnet object

subnet对象

表6 subnet对象

名称

参数类型

说明

id

String

uuid形式的一个资源标识

name

String

  • 功能说明:子网名称
  • 取值范围:1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)

description

String

  • 功能说明:子网描述
  • 取值范围:0-255个字符,不能包含“<”和“>”。

cidr

String

  • 功能说明:子网的网段
  • 取值范围:必须在vpc对应cidr范围内
  • 约束:必须是cidr格式。掩码长度不能大于28

gateway_ip

String

  • 功能说明:子网的网关
  • 取值范围:子网网段中的IP地址
  • 约束:必须是ip格式

ipv6_enable

Boolean

是否创建IPv6子网

cidr_v6

String

IPv6子网的网段,如果子网为IPv4子网,则不返回此参数

gateway_ip_v6

String

IPv6子网的网关,如果子网为IPv4子网,则不返回此参数

dhcp_enable

Boolean

子网是否开启dhcp功能

primary_dns

String

  • 功能说明:子网dns服务器地址1
  • 约束:ip格式,不支持IPv6地址。不填时,默认为空

secondary_dns

String

  • 功能说明:子网dns服务器地址2
  • 约束:ip格式,不支持IPv6地址。不填时,默认为空。

    若只填secondary_dns,不填primary_dns,会自动把值填入primary_dns。

    只有一个dns服务器地址时,只显示primary_dns,不显示secondary_dns。

dnsList

Array of strings

  • 功能说明:子网dns服务器地址的集合;如果想使用两个以上dns服务器,请使用该字段
  • 约束:是子网dns服务器地址1跟子网dns服务器地址2的合集的父集不填时,默认为空

availability_zone

String

  • 功能说明:子网所在的可用区标识,从终端节点获取,参考终端节点(Endpoint)
  • 约束:系统存在的可用区标识;不填时,默认为空

vpc_id

String

子网所在VPC标识

status

String

  • 功能说明:子网的状态。
  • 取值范围:ACTIVE,UNKNOWN,ERROR
    • ACTIVE表示子网已挂载到VPC上
    • UNKNOWN表示子网还未挂载到VPC上
    • ERROR表示子网状态故障
  • 创建子网的流程为:先创建子网,然后在线程中将子网挂载在VPC上。

    在并发场景下,由于使用相同的cidr来创建子网,底层发生校验后使得挂载VPC失败,回滚创建子网的过程,子网创建失败。

    创建子网接口返回时,状态为UNKNOWN。

neutron_network_id

String

对应网络(OpenStack Neutron接口)id

neutron_subnet_id

String

对应子网(OpenStack Neutron接口)id

neutron_subnet_id_v6

String

对应IPv6子网(OpenStack Neutron接口)id,如果子网为IPv4子网,则不返回此参数

extra_dhcp_opts

Array of extra_dhcp_opt objects

子网配置的NTP地址,详情请参见表7

表7 extra_dhcp_opt对象

名称

是否必选

参数类型

说明

opt_value

String

  • 功能说明:子网配置的NTP地址。
  • 约束:

    opt_name配置为“ntp”,则表示是子网ntp地址,目前只支持IPv4地址,每个IP地址以逗号隔开,IP地址个数不能超过4个,不能存在相同地址。该字段为null表示取消该子网NTP的设置,不能为“ ”(空字符串)。

opt_name

String

  • 功能说明:子网配置的NTP地址名称。
  • 约束:目前只支持填写字符串“ntp”。

响应示例

{
    "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",
        "ipv6_enable": true, 
        "cidr_v6": "2001:db8:a583::/64",
        "gateway_ip_v6": "2001:db8:a583::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",
        "neutron_subnet_id_v6": "e0fa7de1-a6e2-44c9-b052-b9d8cebe93c4",  
    }
}

状态码

请参见状态码

错误码

请参考错误码