nova/doc/api_schemas/network_data.json
Balazs Gibizer 0b05b838a4 Fix bond_mode enum 802.1ad -> 802.3ad
This seems to me a clerical error made a long time ago in the spec [1].
The 802.1ad values does not seems to be a valid bonding mode but 802.3ad
does.

This patch fixes the schema in the nova doc. No test are changed as nova
does not generate this part of the network metadata.

[1] https://specs.openstack.org/openstack/nova-specs/specs/kilo/approved/metadata-service-network-info.html#rest-api-impact

Change-Id: I0055d13b055e34372a8186008ba75be68aa2edf9
Closes-Bug: #1925388
2021-04-29 17:42:59 +02:00

581 lines
16 KiB
JSON

{
"$schema": "http://openstack.org/nova/network_data.json#",
"id": "http://openstack.org/nova/network_data.json",
"type": "object",
"title": "OpenStack Nova network metadata schema",
"description": "Schema of Nova instance network configuration information",
"required": [
"links",
"networks",
"services"
],
"properties": {
"links": {
"$id": "#/properties/links",
"type": "array",
"title": "L2 interfaces settings",
"items": {
"$id": "#/properties/links/items",
"oneOf": [
{
"$ref": "#/definitions/l2_link"
},
{
"$ref": "#/definitions/l2_bond"
},
{
"$ref": "#/definitions/l2_vlan"
}
]
}
},
"networks": {
"$id": "#/properties/networks",
"type": "array",
"title": "L3 networks",
"items": {
"$id": "#/properties/networks/items",
"oneOf": [
{
"$ref": "#/definitions/l3_ipv4_network"
},
{
"$ref": "#/definitions/l3_ipv6_network"
}
]
}
},
"services": {
"$ref": "#/definitions/services"
}
},
"definitions": {
"l2_address": {
"$id": "#/definitions/l2_address",
"type": "string",
"pattern": "(?i)^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$",
"title": "L2 interface address",
"examples": [
"fa:16:3e:9c:bf:3d"
]
},
"l2_id": {
"$id": "#/definitions/l2_id",
"type": "string",
"title": "L2 interface ID",
"examples": [
"eth0"
]
},
"l2_mtu": {
"$id": "#/definitions/l2_mtu",
"title": "L2 interface MTU",
"anyOf": [
{
"type": "number",
"minimum": 1,
"maximum": 65535
},
{
"type": "null"
}
],
"examples": [
1500
]
},
"l2_vif_id": {
"$id": "#/definitions/l2_vif_id",
"type": "string",
"title": "Virtual interface ID",
"examples": [
"cd9f6d46-4a3a-43ab-a466-994af9db96fc"
]
},
"l2_link": {
"$id": "#/definitions/l2_link",
"type": "object",
"title": "L2 interface configuration settings",
"required": [
"ethernet_mac_address",
"id",
"type"
],
"properties": {
"id": {
"$ref": "#/definitions/l2_id"
},
"ethernet_mac_address": {
"$ref": "#/definitions/l2_address"
},
"mtu": {
"$ref": "#/definitions/l2_mtu"
},
"type": {
"$id": "#/definitions/l2_link/properties/type",
"type": "string",
"enum": [
"bridge",
"dvs",
"hw_veb",
"hyperv",
"ovs",
"tap",
"vhostuser",
"vif",
"phy"
],
"title": "Interface type",
"examples": [
"bridge"
]
},
"vif_id": {
"$ref": "#/definitions/l2_vif_id"
}
}
},
"l2_bond": {
"$id": "#/definitions/l2_bond",
"type": "object",
"title": "L2 bonding interface configuration settings",
"required": [
"ethernet_mac_address",
"id",
"type",
"bond_mode",
"bond_links"
],
"properties": {
"id": {
"$ref": "#/definitions/l2_id"
},
"ethernet_mac_address": {
"$ref": "#/definitions/l2_address"
},
"mtu": {
"$ref": "#/definitions/l2_mtu"
},
"type": {
"$id": "#/definitions/l2_bond/properties/type",
"type": "string",
"enum": [
"bond"
],
"title": "Interface type",
"examples": [
"bond"
]
},
"vif_id": {
"$ref": "#/definitions/l2_vif_id"
},
"bond_mode": {
"$id": "#/definitions/bond/properties/bond_mode",
"type": "string",
"title": "Port bonding type",
"enum": [
"802.3ad",
"balance-rr",
"active-backup",
"balance-xor",
"broadcast",
"balance-tlb",
"balance-alb"
],
"examples": [
"802.3ad"
]
},
"bond_links": {
"$id": "#/definitions/bond/properties/bond_links",
"type": "array",
"title": "Port bonding links",
"items": {
"$id": "#/definitions/bond/properties/bond_links/items",
"type": "string"
}
}
}
},
"l2_vlan": {
"$id": "#/definitions/l2_vlan",
"type": "object",
"title": "L2 VLAN interface configuration settings",
"required": [
"vlan_mac_address",
"id",
"type",
"vlan_link",
"vlan_id"
],
"properties": {
"id": {
"$ref": "#/definitions/l2_id"
},
"vlan_mac_address": {
"$ref": "#/definitions/l2_address"
},
"mtu": {
"$ref": "#/definitions/l2_mtu"
},
"type": {
"$id": "#/definitions/l2_vlan/properties/type",
"type": "string",
"enum": [
"vlan"
],
"title": "VLAN interface type",
"examples": [
"vlan"
]
},
"vif_id": {
"$ref": "#/definitions/l2_vif_id"
},
"vlan_id": {
"$id": "#/definitions/l2_vlan/properties/vlan_id",
"type": "integer",
"title": "VLAN ID"
},
"vlan_link": {
"$id": "#/definitions/l2_vlan/properties/vlan_link",
"type": "string",
"title": "VLAN link name"
}
}
},
"l3_id": {
"$id": "#/definitions/l3_id",
"type": "string",
"title": "Network name",
"examples": [
"network0"
]
},
"l3_link": {
"$id": "#/definitions/l3_link",
"type": "string",
"title": "L2 network link to use for L3 interface",
"examples": [
"99e88329-f20d-4741-9593-25bf07847b16"
]
},
"l3_network_id": {
"$id": "#/definitions/l3_network_id",
"type": "string",
"title": "Network ID",
"examples": [
"99e88329-f20d-4741-9593-25bf07847b16"
]
},
"l3_ipv4_type": {
"$id": "#/definitions/l3_ipv4_type",
"type": "string",
"enum": [
"ipv4",
"ipv4_dhcp"
],
"title": "L3 IPv4 network type",
"examples": [
"ipv4_dhcp"
]
},
"l3_ipv6_type": {
"$id": "#/definitions/l3_ipv6_type",
"type": "string",
"enum": [
"ipv6",
"ipv6_dhcp",
"ipv6_slaac"
],
"title": "L3 IPv6 network type",
"examples": [
"ipv6_dhcp"
]
},
"l3_ipv4_host": {
"$id": "#/definitions/l3_ipv4_host",
"type": "string",
"pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$",
"title": "L3 IPv4 host address",
"examples": [
"192.168.81.99"
]
},
"l3_ipv6_host": {
"$id": "#/definitions/l3_ipv6_host",
"type": "string",
"pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(/[0-9]{1,2})?$",
"title": "L3 IPv6 host address",
"examples": [
"2001:db8:3:4::192.168.81.99"
]
},
"l3_ipv4_netmask": {
"$id": "#/definitions/l3_ipv4_netmask",
"type": "string",
"pattern": "^(254|252|248|240|224|192|128|0)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)$",
"title": "L3 IPv4 network mask",
"examples": [
"255.255.252.0"
]
},
"l3_ipv6_netmask": {
"$id": "#/definitions/l3_ipv6_netmask",
"type": "string",
"pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7})|(::))$",
"title": "L3 IPv6 network mask",
"examples": [
"ffff:ffff:ffff:ffff::"
]
},
"l3_ipv4_nw": {
"$id": "#/definitions/l3_ipv4_nw",
"type": "string",
"pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",
"title": "L3 IPv4 network address",
"examples": [
"0.0.0.0"
]
},
"l3_ipv6_nw": {
"$id": "#/definitions/l3_ipv6_nw",
"type": "string",
"pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7})|(::))$",
"title": "L3 IPv6 network address",
"examples": [
"8000::"
]
},
"l3_ipv4_gateway": {
"$id": "#/definitions/l3_ipv4_gateway",
"type": "string",
"pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$",
"title": "L3 IPv4 gateway address",
"examples": [
"192.168.200.1"
]
},
"l3_ipv6_gateway": {
"$id": "#/definitions/l3_ipv6_gateway",
"type": "string",
"pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$",
"title": "L3 IPv6 gateway address",
"examples": [
"2001:db8:3:4::192.168.81.99"
]
},
"l3_ipv4_network_route": {
"$id": "#/definitions/l3_ipv4_network_route",
"type": "object",
"title": "L3 IPv4 routing configuration item",
"required": [
"gateway",
"netmask",
"network"
],
"properties": {
"network": {
"$ref": "#/definitions/l3_ipv4_nw"
},
"netmask": {
"$ref": "#/definitions/l3_ipv4_netmask"
},
"gateway": {
"$ref": "#/definitions/l3_ipv4_gateway"
},
"services": {
"$ref": "#/definitions/ipv4_services"
}
}
},
"l3_ipv6_network_route": {
"$id": "#/definitions/l3_ipv6_network_route",
"type": "object",
"title": "L3 IPv6 routing configuration item",
"required": [
"gateway",
"netmask",
"network"
],
"properties": {
"network": {
"$ref": "#/definitions/l3_ipv6_nw"
},
"netmask": {
"$ref": "#/definitions/l3_ipv6_netmask"
},
"gateway": {
"$ref": "#/definitions/l3_ipv6_gateway"
},
"services": {
"$ref": "#/definitions/ipv6_services"
}
}
},
"l3_ipv4_network": {
"$id": "#/definitions/l3_ipv4_network",
"type": "object",
"title": "L3 IPv4 network configuration",
"required": [
"id",
"link",
"network_id",
"type"
],
"properties": {
"id": {
"$ref": "#/definitions/l3_id"
},
"link": {
"$ref": "#/definitions/l3_link"
},
"network_id": {
"$ref": "#/definitions/l3_network_id"
},
"type": {
"$ref": "#/definitions/l3_ipv4_type"
},
"ip_address": {
"$ref": "#/definitions/l3_ipv4_host"
},
"netmask": {
"$ref": "#/definitions/l3_ipv4_netmask"
},
"routes": {
"$id": "#/definitions/l3_ipv4_network/routes",
"type": "array",
"title": "L3 IPv4 network routes",
"items": {
"$ref": "#/definitions/l3_ipv4_network_route"
}
}
}
},
"l3_ipv6_network": {
"$id": "#/definitions/l3_ipv6_network",
"type": "object",
"title": "L3 IPv6 network configuration",
"required": [
"id",
"link",
"network_id",
"type"
],
"properties": {
"id": {
"$ref": "#/definitions/l3_id"
},
"link": {
"$ref": "#/definitions/l3_link"
},
"network_id": {
"$ref": "#/definitions/l3_network_id"
},
"type": {
"$ref": "#/definitions/l3_ipv6_type"
},
"ip_address": {
"$ref": "#/definitions/l3_ipv6_host"
},
"netmask": {
"$ref": "#/definitions/l3_ipv6_netmask"
},
"routes": {
"$id": "#/definitions/properties/l3_ipv6_network/routes",
"type": "array",
"title": "L3 IPv6 network routes",
"items": {
"$ref": "#/definitions/l3_ipv6_network_route"
}
}
}
},
"ipv4_service": {
"$id": "#/definitions/ipv4_service",
"type": "object",
"title": "Service on a IPv4 network",
"required": [
"address",
"type"
],
"properties": {
"address": {
"$ref": "#/definitions/l3_ipv4_host"
},
"type": {
"$id": "#/definitions/ipv4_service/properties/type",
"type": "string",
"enum": [
"dns"
],
"title": "Service type",
"examples": [
"dns"
]
}
}
},
"ipv6_service": {
"$id": "#/definitions/ipv6_service",
"type": "object",
"title": "Service on a IPv6 network",
"required": [
"address",
"type"
],
"properties": {
"address": {
"$ref": "#/definitions/l3_ipv6_host"
},
"type": {
"$id": "#/definitions/ipv4_service/properties/type",
"type": "string",
"enum": [
"dns"
],
"title": "Service type",
"examples": [
"dns"
]
}
}
},
"ipv4_services": {
"$id": "#/definitions/ipv4_services",
"type": "array",
"title": "Network services on IPv4 network",
"items": {
"$id": "#/definitions/ipv4_services/items",
"$ref": "#/definitions/ipv4_service"
}
},
"ipv6_services": {
"$id": "#/definitions/ipv6_services",
"type": "array",
"title": "Network services on IPv6 network",
"items": {
"$id": "#/definitions/ipv6_services/items",
"$ref": "#/definitions/ipv6_service"
}
},
"services": {
"$id": "#/definitions/services",
"type": "array",
"title": "Network services",
"items": {
"$id": "#/definitions/services/items",
"anyOf": [
{
"$ref": "#/definitions/ipv4_service"
},
{
"$ref": "#/definitions/ipv6_service"
}
]
}
}
}
}