From 0ac922ece14c9466976c59416417ba2dcab55aa1 Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Tue, 7 Jun 2016 19:07:45 +0900 Subject: [PATCH] WADL to RST migration This patch brings the Networking API Reference to a repository under the neutron stadium. It is a part of the effort described here [1]: As we discussed in the stadium evolution [2], we plan to have the API stuff in neutron-lib, so the API reference is hosted on neutron-lib as well. The goal of this patch is to import converted RST API references. Cleanup is planned once this patch is merged. [1] https://wiki.openstack.org/wiki/Documentation/Migrate#API_Reference_Plan [2] https://review.openstack.org/312199 Change-Id: I6f2c4d476c31b252bfb181138505673f397639fc --- .gitignore | 1 + api-ref/source/conf.py | 222 + api-ref/source/index.rst | 9 + .../extensions/extension-show-response.json | 9 + .../extensions/extensions-list-response.json | 123 + .../firewalls/firewall-create-request.json | 6 + .../firewalls/firewall-create-response.json | 14 + .../firewall-policies-list-response.json | 15 + .../firewall-policy-create-request.json | 8 + .../firewall-policy-create-response.json | 13 + .../firewall-policy-insert-rule-request.json | 5 + .../firewall-policy-insert-rule-response.json | 14 + .../firewall-policy-remove-rule-request.json | 3 + .../firewall-policy-remove-rule-response.json | 13 + .../firewall-policy-show-response.json | 13 + .../firewall-policy-update-request.json | 8 + .../firewall-policy-update-response.json | 14 + .../firewall-rule-create-request.json | 9 + .../firewall-rule-create-response.json | 19 + .../firewall-rule-show-response.json | 19 + .../firewall-rule-update-request.json | 5 + .../firewall-rule-update-response.json | 19 + .../firewall-rules-list-response.json | 21 + .../firewalls/firewall-show-response.json | 14 + .../firewalls/firewall-update-request.json | 5 + .../firewalls/firewall-update-response.json | 14 + .../firewalls/firewalls-list-response.json | 16 + .../flavors/flavor-associate-request.json | 5 + .../flavors/flavor-associate-response.json | 5 + .../flavors/flavor-create-request.json | 8 + .../flavors/flavor-create-response.json | 10 + .../samples/flavors/flavor-show-response.json | 10 + .../flavors/flavor-update-request.json | 7 + .../flavors/flavor-update-response.json | 10 + .../flavors/flavors-list-response.json | 12 + .../service-profile-create-request.json | 8 + .../service-profile-create-response.json | 9 + .../service-profile-show-response.json | 9 + .../service-profile-update-request.json | 8 + .../service-profile-update-response.json | 9 + .../service-profiles-list-response.json | 18 + .../healthmonitor-associate-request.json | 5 + .../healthmonitor-associate-response.json | 3 + .../lbaas/healthmonitor-create-request.json | 12 + .../lbaas/healthmonitor-create-response.json | 15 + .../lbaas/healthmonitor-show-response.json | 21 + .../lbaas/healthmonitor-update-request.json | 11 + .../lbaas/healthmonitor-update-response.json | 21 + .../lbaas/healthmonitors-list-response.json | 23 + .../lbaas/listener-create-request.json | 16 + .../lbaas/listener-create-response.json | 23 + .../samples/lbaas/listener-show-response.json | 23 + .../lbaas/listener-update-request.json | 13 + .../lbaas/listener-update-response.json | 23 + .../lbaas/listeners-list-response.json | 25 + .../lbaas/loadbalancer-create-request.json | 11 + .../lbaas/loadbalancer-create-response.json | 16 + .../lbaas/loadbalancer-delete-response.json | 8 + .../lbaas/loadbalancer-show-response.json | 14 + .../lbaas/loadbalancer-status-tree.json | 47 + .../lbaas/loadbalancer-update-request.json | 7 + .../lbaas/loadbalancer-update-response.json | 14 + .../lbaas/loadbalancer-update-response.txt | 4 + .../lbaas/loadbalancers-list-response.json | 16 + .../samples/lbaas/member-create-request.json | 9 + .../samples/lbaas/member-create-response.json | 13 + .../samples/lbaas/member-show-response.json | 13 + .../samples/lbaas/member-update-request.json | 5 + .../samples/lbaas/member-update-response.json | 13 + .../samples/lbaas/members-list-response.json | 15 + .../samples/lbaas/pool-create-request.json | 10 + .../samples/lbaas/pool-create-response.json | 19 + .../source/samples/lbaas/pool-list-resp.json | 20 + .../lbaas/pool-members-list-response.json | 13 + .../samples/lbaas/pool-show-response.json | 29 + .../samples/lbaas/pool-update-request.json | 5 + .../samples/lbaas/pool-update-response.json | 29 + .../samples/lbaas/pools-list-response.json | 31 + .../samples/lbaas/pools-list-response2.json | 20 + .../samples/lbaas/vip-create-request.json | 10 + .../samples/lbaas/vip-create-response.json | 19 + .../samples/lbaas/vip-show-response.json | 19 + .../samples/lbaas/vip-update-request.json | 5 + .../samples/lbaas/vip-update-response.json | 19 + .../samples/lbaas/vips-list-response.json | 21 + .../metering-label-create-request.json | 6 + .../metering-label-create-response.json | 9 + ...etering-label-delete-request-json-http.txt | 6 + ...tering-label-delete-response-json-http.txt | 1 + .../metering-label-rule-create-request.json | 7 + .../metering-label-rule-create-response.json | 9 + ...ng-label-rule-delete-request-json-http.txt | 6 + ...g-label-rule-delete-response-json-http.txt | 1 + ...ring-label-rule-show-request-json-http.txt | 6 + .../metering-label-rule-show-response.json | 9 + ...ing-label-rules-list-request-json-http.txt | 6 + .../metering-label-rules-list-response.json | 18 + .../metering-label-show-request-json-http.txt | 6 + .../metering-label-show-response.json | 9 + ...metering-labels-list-request-json-http.txt | 6 + .../metering-labels-list-response.json | 18 + .../network-ip-availability-list.json | 54 + .../network-ip-availability-show.json | 27 + .../networks/network-create-request.json | 6 + .../networks/network-create-response.json | 14 + .../network-multi-create-request.json | 17 + .../network-multi-create-response.json | 24 + .../network-provider-create-response.json | 17 + .../network-provider-show-response.json | 23 + .../network-provider-update-response.json | 21 + .../networks/network-show-response.json | 19 + .../networks/network-update-request.json | 5 + .../networks/network-update-response.json | 18 + ...twork-vlan-transparent-create-request.json | 7 + ...work-vlan-transparent-create-response.json | 13 + ...etwork-vlan-transparent-show-response.json | 13 + .../networks-bulk-create-request.json | 12 + .../networks-bulk-create-response.json | 30 + .../networks/networks-list-response.json | 38 + .../networks-multi-list-response.json | 43 + .../networks-multi-show-response.json | 25 + .../networks-provider-list-response.json | 44 + ...tworks-vlan-transparent-list-response.json | 28 + .../networks/version-show-response.json | 34 + .../networks/versions-list-response.json | 14 + .../port-bind-create-update-response.json | 28 + .../ports/port-bind-show-response.json | 31 + .../samples/ports/port-create-request.json | 7 + .../samples/ports/port-create-response.json | 23 + .../samples/ports/port-show-response.json | 24 + .../samples/ports/port-update-request.json | 8 + .../samples/ports/port-update-response.json | 29 + .../ports/ports-bind-show-response.json | 62 + .../ports/ports-bulk-create-request.json | 14 + .../ports/ports-bulk-create-response.json | 46 + .../samples/ports/ports-list-response.json | 44 + .../bandwidth_limit_rule-create-request.json | 5 + .../bandwidth_limit_rule-create-response.json | 8 + .../bandwidth_limit_rule-show-response.json | 8 + .../bandwidth_limit_rule-update-request.json | 5 + .../bandwidth_limit_rule-update-response.json | 8 + .../bandwidth_limit_rules-list-response.json | 10 + .../qos/dscp_marking_rule-create-request.json | 5 + .../dscp_marking_rule-create-response.json | 7 + .../qos/dscp_marking_rule-show-response.json | 7 + .../qos/dscp_marking_rule-update-request.json | 5 + .../dscp_marking_rule-update-response.json | 7 + .../qos/dscp_marking_rules-list-response.json | 9 + .../samples/qos/policies-list-response.json | 26 + .../samples/qos/policy-create-request.json | 7 + .../samples/qos/policy-create-response.json | 9 + .../samples/qos/policy-show-response.json | 24 + .../samples/qos/policy-update-request.json | 7 + .../samples/qos/policy-update-response.json | 9 + .../samples/qos/rule_types-list-response.json | 10 + .../quotas-list-for-tenant-response.json | 13 + .../samples/quotas/quotas-list-response.json | 16 + .../samples/quotas/quotas-update-request.json | 13 + .../quotas/quotas-update-response.json | 13 + .../routers/floating-ips-list-response.json | 24 + .../routers/floatingip-create-request.json | 6 + .../routers/floatingip-create-response.json | 12 + .../floatingip-disassociate-request.json | 5 + .../floatingip-disassociate-response.json | 12 + .../routers/floatingip-show-response.json | 12 + .../routers/floatingip-update-request.json | 5 + .../routers/floatingip-update-response.json | 12 + .../routers/router-add-interface-request.json | 3 + .../router-add-interface-response.json | 9 + .../routers/router-create-request.json | 16 + .../routers/router-create-response.json | 22 + .../router-remove-interface-request.json | 3 + .../router-remove-interface-response.json | 6 + .../samples/routers/router-show-response.json | 20 + .../routers/router-update-request.json | 14 + .../routers/router-update-response.json | 22 + .../routers/routers-list-response.json | 31 + .../security-group-create-request.json | 6 + .../security-group-create-response.json | 34 + ...ecurity-group-delete-request-json-http.txt | 3 + ...curity-group-delete-response-json-http.txt | 1 + .../security-group-rule-create-request.json | 11 + .../security-group-rule-create-response.json | 14 + ...ty-group-rule-delete-request-json-http.txt | 3 + ...y-group-rule-delete-response-json-http.txt | 1 + ...rity-group-rule-show-request-json-http.txt | 2 + .../security-group-rule-show-response.json | 14 + ...ity-group-rules-list-request-json-http.txt | 2 + .../security-group-rules-list-response.json | 52 + .../security-group-show-request-json-http.txt | 2 + .../security-group-show-response.json | 58 + .../security-group-update-request.json | 6 + .../security-group-update-response.json | 9 + ...security-groups-list-request-json-http.txt | 2 + .../security-groups-list-response.json | 60 + .../source/samples/service-type-response.json | 9 + .../subnets/subnet-create-request.json | 7 + .../subnets/subnet-create-response.json | 20 + .../samples/subnets/subnet-show-response.json | 22 + .../subnets/subnet-update-request.json | 5 + .../subnets/subnet-update-response.json | 20 + .../subnets/subnetpool-create-request.json | 13 + .../subnets/subnetpool-create-response.json | 19 + .../subnets/subnetpool-show-response.json | 21 + .../subnets/subnetpool-update-request.json | 13 + .../subnets/subnetpool-update-response.json | 19 + .../subnets/subnetpools-list-response.json | 38 + .../subnets/subnets-create-bulk-request.json | 14 + .../subnets/subnets-create-bulk-response.json | 40 + .../subnets/subnets-list-response.json | 40 + .../samples/tag/tag-update-request.json | 6 + .../samples/tag/tag-update-response.json | 6 + .../vpn/ikepolicies-list-response.json | 19 + .../samples/vpn/ikepolicy-create-request.json | 14 + .../vpn/ikepolicy-create-response.json | 17 + .../samples/vpn/ikepolicy-show-response.json | 17 + .../samples/vpn/ikepolicy-update-request.json | 5 + .../vpn/ikepolicy-update-response.json | 17 + .../ipsec-site-connection-create-request.json | 16 + ...ipsec-site-connection-create-response.json | 28 + .../ipsec-site-connection-show-response.json | 28 + .../ipsec-site-connection-update-request.json | 5 + ...ipsec-site-connection-update-response.json | 28 + .../ipsec-site-connections-list-response.json | 30 + .../vpn/ipsecpolicies-list-response.json | 19 + .../vpn/ipsecpolicy-create-request.json | 14 + .../vpn/ipsecpolicy-create-response.json | 17 + .../vpn/ipsecpolicy-show-response.json | 17 + .../vpn/ipsecpolicy-update-request.json | 5 + .../vpn/ipsecpolicy-update-response.json | 17 + .../vpn-endpoint-group-create-request.json | 10 + .../vpn-endpoint-group-create-response.json | 13 + .../vpn/vpn-endpoint-group-show-response.json | 13 + .../vpn-endpoint-group-update-request.json | 5 + .../vpn-endpoint-group-update-response.json | 13 + .../vpn-endpoint-groups-list-response.json | 25 + .../vpn/vpnservice-create-request.json | 8 + .../vpn/vpnservice-create-response.json | 14 + .../samples/vpn/vpnservice-show-response.json | 14 + .../vpn/vpnservice-update-request.json | 5 + .../vpn/vpnservice-update-response.json | 12 + .../vpn/vpnservices-list-response.json | 16 + api-ref/source/v2-ext/extensions.inc | 81 + api-ref/source/v2-ext/extraroute.inc | 78 + .../source/v2-ext/flavors-framework-v2.0.inc | 480 ++ api-ref/source/v2-ext/fwaas-v2.0.inc | 730 ++++ api-ref/source/v2-ext/index.rst | 25 + api-ref/source/v2-ext/layer3-ext.inc | 727 ++++ api-ref/source/v2-ext/lbaas.inc | 2302 ++++++++++ api-ref/source/v2-ext/metering-labels-ext.inc | 240 + api-ref/source/v2-ext/network-provider.inc | 233 + .../v2-ext/networking-ip-availability-ext.inc | 86 + .../v2-ext/networks-multi-provider-ext.inc | 167 + .../v2-ext/networks-vlan-transparency-ext.inc | 147 + api-ref/source/v2-ext/parameters.yaml | 3857 +++++++++++++++++ api-ref/source/v2-ext/port-binding.inc | 113 + api-ref/source/v2-ext/qos-ext.inc | 538 +++ api-ref/source/v2-ext/quotas.inc | 156 + api-ref/source/v2-ext/security-groups.inc | 212 + .../source/v2-ext/security_group_rules.inc | 144 + api-ref/source/v2-ext/subnetpools-ext.inc | 224 + api-ref/source/v2-ext/tag-ext.inc | 118 + api-ref/source/v2-ext/vpnaas.inc | 1104 +++++ api-ref/source/v2/index.rst | 11 + api-ref/source/v2/networks.inc | 272 ++ api-ref/source/v2/parameters.yaml | 434 ++ api-ref/source/v2/ports.inc | 350 ++ api-ref/source/v2/service-type.inc | 36 + api-ref/source/v2/subnets.inc | 181 + api-ref/source/v2/versions-networks-v2.inc | 56 + test-requirements.txt | 1 + tox.ini | 12 + 272 files changed, 17085 insertions(+) create mode 100644 api-ref/source/conf.py create mode 100644 api-ref/source/index.rst create mode 100644 api-ref/source/samples/extensions/extension-show-response.json create mode 100644 api-ref/source/samples/extensions/extensions-list-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-create-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-create-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policies-list-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-create-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-create-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-insert-rule-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-insert-rule-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-remove-rule-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-remove-rule-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-show-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-update-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-policy-update-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-rule-create-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-rule-create-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-rule-show-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-rule-update-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-rule-update-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-rules-list-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-show-response.json create mode 100644 api-ref/source/samples/firewalls/firewall-update-request.json create mode 100644 api-ref/source/samples/firewalls/firewall-update-response.json create mode 100644 api-ref/source/samples/firewalls/firewalls-list-response.json create mode 100644 api-ref/source/samples/flavors/flavor-associate-request.json create mode 100644 api-ref/source/samples/flavors/flavor-associate-response.json create mode 100644 api-ref/source/samples/flavors/flavor-create-request.json create mode 100644 api-ref/source/samples/flavors/flavor-create-response.json create mode 100644 api-ref/source/samples/flavors/flavor-show-response.json create mode 100644 api-ref/source/samples/flavors/flavor-update-request.json create mode 100644 api-ref/source/samples/flavors/flavor-update-response.json create mode 100644 api-ref/source/samples/flavors/flavors-list-response.json create mode 100644 api-ref/source/samples/flavors/service-profile-create-request.json create mode 100644 api-ref/source/samples/flavors/service-profile-create-response.json create mode 100644 api-ref/source/samples/flavors/service-profile-show-response.json create mode 100644 api-ref/source/samples/flavors/service-profile-update-request.json create mode 100644 api-ref/source/samples/flavors/service-profile-update-response.json create mode 100644 api-ref/source/samples/flavors/service-profiles-list-response.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-associate-request.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-associate-response.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-create-request.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-create-response.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-show-response.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-update-request.json create mode 100644 api-ref/source/samples/lbaas/healthmonitor-update-response.json create mode 100644 api-ref/source/samples/lbaas/healthmonitors-list-response.json create mode 100644 api-ref/source/samples/lbaas/listener-create-request.json create mode 100644 api-ref/source/samples/lbaas/listener-create-response.json create mode 100644 api-ref/source/samples/lbaas/listener-show-response.json create mode 100644 api-ref/source/samples/lbaas/listener-update-request.json create mode 100644 api-ref/source/samples/lbaas/listener-update-response.json create mode 100644 api-ref/source/samples/lbaas/listeners-list-response.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-create-request.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-create-response.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-delete-response.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-show-response.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-status-tree.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-update-request.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-update-response.json create mode 100644 api-ref/source/samples/lbaas/loadbalancer-update-response.txt create mode 100644 api-ref/source/samples/lbaas/loadbalancers-list-response.json create mode 100644 api-ref/source/samples/lbaas/member-create-request.json create mode 100644 api-ref/source/samples/lbaas/member-create-response.json create mode 100644 api-ref/source/samples/lbaas/member-show-response.json create mode 100644 api-ref/source/samples/lbaas/member-update-request.json create mode 100644 api-ref/source/samples/lbaas/member-update-response.json create mode 100644 api-ref/source/samples/lbaas/members-list-response.json create mode 100644 api-ref/source/samples/lbaas/pool-create-request.json create mode 100644 api-ref/source/samples/lbaas/pool-create-response.json create mode 100644 api-ref/source/samples/lbaas/pool-list-resp.json create mode 100644 api-ref/source/samples/lbaas/pool-members-list-response.json create mode 100644 api-ref/source/samples/lbaas/pool-show-response.json create mode 100644 api-ref/source/samples/lbaas/pool-update-request.json create mode 100644 api-ref/source/samples/lbaas/pool-update-response.json create mode 100644 api-ref/source/samples/lbaas/pools-list-response.json create mode 100644 api-ref/source/samples/lbaas/pools-list-response2.json create mode 100644 api-ref/source/samples/lbaas/vip-create-request.json create mode 100644 api-ref/source/samples/lbaas/vip-create-response.json create mode 100644 api-ref/source/samples/lbaas/vip-show-response.json create mode 100644 api-ref/source/samples/lbaas/vip-update-request.json create mode 100644 api-ref/source/samples/lbaas/vip-update-response.json create mode 100644 api-ref/source/samples/lbaas/vips-list-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-create-request.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-create-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-delete-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-delete-response-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-create-request.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-create-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-delete-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-delete-response-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-show-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-rule-show-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-rules-list-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-rules-list-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-label-show-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-label-show-response.json create mode 100644 api-ref/source/samples/metering-labels/metering-labels-list-request-json-http.txt create mode 100644 api-ref/source/samples/metering-labels/metering-labels-list-response.json create mode 100644 api-ref/source/samples/network-ip-availability/network-ip-availability-list.json create mode 100644 api-ref/source/samples/network-ip-availability/network-ip-availability-show.json create mode 100644 api-ref/source/samples/networks/network-create-request.json create mode 100644 api-ref/source/samples/networks/network-create-response.json create mode 100644 api-ref/source/samples/networks/network-multi-create-request.json create mode 100644 api-ref/source/samples/networks/network-multi-create-response.json create mode 100644 api-ref/source/samples/networks/network-provider-create-response.json create mode 100644 api-ref/source/samples/networks/network-provider-show-response.json create mode 100644 api-ref/source/samples/networks/network-provider-update-response.json create mode 100644 api-ref/source/samples/networks/network-show-response.json create mode 100644 api-ref/source/samples/networks/network-update-request.json create mode 100644 api-ref/source/samples/networks/network-update-response.json create mode 100644 api-ref/source/samples/networks/network-vlan-transparent-create-request.json create mode 100644 api-ref/source/samples/networks/network-vlan-transparent-create-response.json create mode 100644 api-ref/source/samples/networks/network-vlan-transparent-show-response.json create mode 100644 api-ref/source/samples/networks/networks-bulk-create-request.json create mode 100644 api-ref/source/samples/networks/networks-bulk-create-response.json create mode 100644 api-ref/source/samples/networks/networks-list-response.json create mode 100644 api-ref/source/samples/networks/networks-multi-list-response.json create mode 100644 api-ref/source/samples/networks/networks-multi-show-response.json create mode 100644 api-ref/source/samples/networks/networks-provider-list-response.json create mode 100644 api-ref/source/samples/networks/networks-vlan-transparent-list-response.json create mode 100644 api-ref/source/samples/networks/version-show-response.json create mode 100644 api-ref/source/samples/networks/versions-list-response.json create mode 100644 api-ref/source/samples/ports/port-bind-create-update-response.json create mode 100644 api-ref/source/samples/ports/port-bind-show-response.json create mode 100644 api-ref/source/samples/ports/port-create-request.json create mode 100644 api-ref/source/samples/ports/port-create-response.json create mode 100644 api-ref/source/samples/ports/port-show-response.json create mode 100644 api-ref/source/samples/ports/port-update-request.json create mode 100644 api-ref/source/samples/ports/port-update-response.json create mode 100644 api-ref/source/samples/ports/ports-bind-show-response.json create mode 100644 api-ref/source/samples/ports/ports-bulk-create-request.json create mode 100644 api-ref/source/samples/ports/ports-bulk-create-response.json create mode 100644 api-ref/source/samples/ports/ports-list-response.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rule-create-request.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rule-create-response.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rule-show-response.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rule-update-request.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rule-update-response.json create mode 100644 api-ref/source/samples/qos/bandwidth_limit_rules-list-response.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rule-create-request.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rule-create-response.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rule-show-response.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rule-update-request.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rule-update-response.json create mode 100644 api-ref/source/samples/qos/dscp_marking_rules-list-response.json create mode 100644 api-ref/source/samples/qos/policies-list-response.json create mode 100644 api-ref/source/samples/qos/policy-create-request.json create mode 100644 api-ref/source/samples/qos/policy-create-response.json create mode 100644 api-ref/source/samples/qos/policy-show-response.json create mode 100644 api-ref/source/samples/qos/policy-update-request.json create mode 100644 api-ref/source/samples/qos/policy-update-response.json create mode 100644 api-ref/source/samples/qos/rule_types-list-response.json create mode 100644 api-ref/source/samples/quotas/quotas-list-for-tenant-response.json create mode 100644 api-ref/source/samples/quotas/quotas-list-response.json create mode 100644 api-ref/source/samples/quotas/quotas-update-request.json create mode 100644 api-ref/source/samples/quotas/quotas-update-response.json create mode 100644 api-ref/source/samples/routers/floating-ips-list-response.json create mode 100644 api-ref/source/samples/routers/floatingip-create-request.json create mode 100644 api-ref/source/samples/routers/floatingip-create-response.json create mode 100644 api-ref/source/samples/routers/floatingip-disassociate-request.json create mode 100644 api-ref/source/samples/routers/floatingip-disassociate-response.json create mode 100644 api-ref/source/samples/routers/floatingip-show-response.json create mode 100644 api-ref/source/samples/routers/floatingip-update-request.json create mode 100644 api-ref/source/samples/routers/floatingip-update-response.json create mode 100644 api-ref/source/samples/routers/router-add-interface-request.json create mode 100644 api-ref/source/samples/routers/router-add-interface-response.json create mode 100644 api-ref/source/samples/routers/router-create-request.json create mode 100644 api-ref/source/samples/routers/router-create-response.json create mode 100644 api-ref/source/samples/routers/router-remove-interface-request.json create mode 100644 api-ref/source/samples/routers/router-remove-interface-response.json create mode 100644 api-ref/source/samples/routers/router-show-response.json create mode 100644 api-ref/source/samples/routers/router-update-request.json create mode 100644 api-ref/source/samples/routers/router-update-response.json create mode 100644 api-ref/source/samples/routers/routers-list-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-create-request.json create mode 100644 api-ref/source/samples/security-groups/security-group-create-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-delete-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-delete-response-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-rule-create-request.json create mode 100644 api-ref/source/samples/security-groups/security-group-rule-create-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-rule-delete-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-rule-delete-response-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-rule-show-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-rule-show-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-rules-list-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-rules-list-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-show-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-group-show-response.json create mode 100644 api-ref/source/samples/security-groups/security-group-update-request.json create mode 100644 api-ref/source/samples/security-groups/security-group-update-response.json create mode 100644 api-ref/source/samples/security-groups/security-groups-list-request-json-http.txt create mode 100644 api-ref/source/samples/security-groups/security-groups-list-response.json create mode 100644 api-ref/source/samples/service-type-response.json create mode 100644 api-ref/source/samples/subnets/subnet-create-request.json create mode 100644 api-ref/source/samples/subnets/subnet-create-response.json create mode 100644 api-ref/source/samples/subnets/subnet-show-response.json create mode 100644 api-ref/source/samples/subnets/subnet-update-request.json create mode 100644 api-ref/source/samples/subnets/subnet-update-response.json create mode 100644 api-ref/source/samples/subnets/subnetpool-create-request.json create mode 100644 api-ref/source/samples/subnets/subnetpool-create-response.json create mode 100644 api-ref/source/samples/subnets/subnetpool-show-response.json create mode 100644 api-ref/source/samples/subnets/subnetpool-update-request.json create mode 100644 api-ref/source/samples/subnets/subnetpool-update-response.json create mode 100644 api-ref/source/samples/subnets/subnetpools-list-response.json create mode 100644 api-ref/source/samples/subnets/subnets-create-bulk-request.json create mode 100644 api-ref/source/samples/subnets/subnets-create-bulk-response.json create mode 100644 api-ref/source/samples/subnets/subnets-list-response.json create mode 100644 api-ref/source/samples/tag/tag-update-request.json create mode 100644 api-ref/source/samples/tag/tag-update-response.json create mode 100644 api-ref/source/samples/vpn/ikepolicies-list-response.json create mode 100644 api-ref/source/samples/vpn/ikepolicy-create-request.json create mode 100644 api-ref/source/samples/vpn/ikepolicy-create-response.json create mode 100644 api-ref/source/samples/vpn/ikepolicy-show-response.json create mode 100644 api-ref/source/samples/vpn/ikepolicy-update-request.json create mode 100644 api-ref/source/samples/vpn/ikepolicy-update-response.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connection-create-request.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connection-create-response.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connection-show-response.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connection-update-request.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connection-update-response.json create mode 100644 api-ref/source/samples/vpn/ipsec-site-connections-list-response.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicies-list-response.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicy-create-request.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicy-create-response.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicy-show-response.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicy-update-request.json create mode 100644 api-ref/source/samples/vpn/ipsecpolicy-update-response.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-group-create-request.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-group-create-response.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-group-show-response.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-group-update-request.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-group-update-response.json create mode 100644 api-ref/source/samples/vpn/vpn-endpoint-groups-list-response.json create mode 100644 api-ref/source/samples/vpn/vpnservice-create-request.json create mode 100644 api-ref/source/samples/vpn/vpnservice-create-response.json create mode 100644 api-ref/source/samples/vpn/vpnservice-show-response.json create mode 100644 api-ref/source/samples/vpn/vpnservice-update-request.json create mode 100644 api-ref/source/samples/vpn/vpnservice-update-response.json create mode 100644 api-ref/source/samples/vpn/vpnservices-list-response.json create mode 100644 api-ref/source/v2-ext/extensions.inc create mode 100644 api-ref/source/v2-ext/extraroute.inc create mode 100644 api-ref/source/v2-ext/flavors-framework-v2.0.inc create mode 100644 api-ref/source/v2-ext/fwaas-v2.0.inc create mode 100644 api-ref/source/v2-ext/index.rst create mode 100644 api-ref/source/v2-ext/layer3-ext.inc create mode 100644 api-ref/source/v2-ext/lbaas.inc create mode 100644 api-ref/source/v2-ext/metering-labels-ext.inc create mode 100644 api-ref/source/v2-ext/network-provider.inc create mode 100644 api-ref/source/v2-ext/networking-ip-availability-ext.inc create mode 100644 api-ref/source/v2-ext/networks-multi-provider-ext.inc create mode 100644 api-ref/source/v2-ext/networks-vlan-transparency-ext.inc create mode 100644 api-ref/source/v2-ext/parameters.yaml create mode 100644 api-ref/source/v2-ext/port-binding.inc create mode 100644 api-ref/source/v2-ext/qos-ext.inc create mode 100644 api-ref/source/v2-ext/quotas.inc create mode 100644 api-ref/source/v2-ext/security-groups.inc create mode 100644 api-ref/source/v2-ext/security_group_rules.inc create mode 100644 api-ref/source/v2-ext/subnetpools-ext.inc create mode 100644 api-ref/source/v2-ext/tag-ext.inc create mode 100644 api-ref/source/v2-ext/vpnaas.inc create mode 100644 api-ref/source/v2/index.rst create mode 100644 api-ref/source/v2/networks.inc create mode 100644 api-ref/source/v2/parameters.yaml create mode 100644 api-ref/source/v2/ports.inc create mode 100644 api-ref/source/v2/service-type.inc create mode 100644 api-ref/source/v2/subnets.inc create mode 100644 api-ref/source/v2/versions-networks-v2.inc diff --git a/.gitignore b/.gitignore index 8d810bb8a..ed941088c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ AUTHORS build/* build-stamp ChangeLog +api-ref/build/ cover/ covhtml/ dist/ diff --git a/api-ref/source/conf.py b/api-ref/source/conf.py new file mode 100644 index 000000000..9c0bfdcd0 --- /dev/null +++ b/api-ref/source/conf.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# neutron documentation build configuration file, created by +# sphinx-quickstart on Sat May 1 15:17:47 2010. +# +# This file is execfile()d with the current directory set to +# its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import os +import subprocess +import sys +import warnings + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../../')) +sys.path.insert(0, os.path.abspath('../')) +sys.path.insert(0, os.path.abspath('./')) + +# -- General configuration ---------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. + +extensions = [ + 'os_api_ref', + 'oslosphinx', +] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +# +# source_encoding = 'utf-8' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Compute API Reference' +copyright = u'2010-present, OpenStack Foundation' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +from neutron_lib.version import version_info +# The full version, including alpha/beta/rc tags. +release = version_info.release_string() +# The short X.Y version. +version = version_info.version_string() + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' + +# The reST default role (used for this markup: `text`) to use +# for all documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = False + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# -- Options for man page output ---------------------------------------------- + +# Grouping the document tree for man pages. +# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual' + + +# -- Options for HTML output -------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. Major themes that come with +# Sphinx are currently 'default' and 'sphinxdoc'. +# html_theme_path = ["."] +# html_theme = '_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' +git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", + "-n1"] +try: + html_last_updated_fmt = subprocess.Popen( + git_cmd, stdout=subprocess.PIPE).communicate()[0] +except Exception: + warnings.warn('Cannot get last updated time from git repository. ' + 'Not setting "html_last_updated_fmt".') + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_use_modindex = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'neutrondoc' + + +# -- Options for LaTeX output ------------------------------------------------- + +# The paper size ('letter' or 'a4'). +# latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +# latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass +# [howto/manual]). +latex_documents = [ + ('index', 'Neutron.tex', u'OpenStack Networking API Documentation', + u'OpenStack Foundation', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +# latex_preamble = '' + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_use_modindex = True diff --git a/api-ref/source/index.rst b/api-ref/source/index.rst new file mode 100644 index 000000000..a59dc7eb0 --- /dev/null +++ b/api-ref/source/index.rst @@ -0,0 +1,9 @@ +======================= +Networking Service APIs +======================= + +.. toctree:: + :maxdepth: 1 + + v2/index + v2-ext/index diff --git a/api-ref/source/samples/extensions/extension-show-response.json b/api-ref/source/samples/extensions/extension-show-response.json new file mode 100644 index 000000000..800365e5d --- /dev/null +++ b/api-ref/source/samples/extensions/extension-show-response.json @@ -0,0 +1,9 @@ +{ + "extension": { + "updated": "2013-02-03T10:00:00-00:00", + "name": "agent", + "links": [], + "alias": "agent", + "description": "The agent management extension." + } +} diff --git a/api-ref/source/samples/extensions/extensions-list-response.json b/api-ref/source/samples/extensions/extensions-list-response.json new file mode 100644 index 000000000..ee41ae6c9 --- /dev/null +++ b/api-ref/source/samples/extensions/extensions-list-response.json @@ -0,0 +1,123 @@ +{ + "extensions": [ + { + "updated": "2013-01-20T00:00:00-00:00", + "name": "Neutron Service Type Management", + "links": [], + "alias": "service-type", + "description": "API for retrieving service providers for Neutron advanced services" + }, + { + "updated": "2012-10-05T10:00:00-00:00", + "name": "security-group", + "links": [], + "alias": "security-group", + "description": "The security groups extension." + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "L3 Agent Scheduler", + "links": [], + "alias": "l3_agent_scheduler", + "description": "Schedule routers among l3 agents" + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "Loadbalancer Agent Scheduler", + "links": [], + "alias": "lbaas_agent_scheduler", + "description": "Schedule pools among lbaas agents" + }, + { + "updated": "2013-03-28T10:00:00-00:00", + "name": "Neutron L3 Configurable external gateway mode", + "links": [], + "alias": "ext-gw-mode", + "description": "Extension of the router abstraction for specifying whether SNAT should occur on the external gateway" + }, + { + "updated": "2014-02-03T10:00:00-00:00", + "name": "Port Binding", + "links": [], + "alias": "binding", + "description": "Expose port bindings of a virtual port to external application" + }, + { + "updated": "2012-09-07T10:00:00-00:00", + "name": "Provider Network", + "links": [], + "alias": "provider", + "description": "Expose mapping of virtual networks to physical networks" + }, + { + "updated": "2013-02-03T10:00:00-00:00", + "name": "agent", + "links": [], + "alias": "agent", + "description": "The agent management extension." + }, + { + "updated": "2012-07-29T10:00:00-00:00", + "name": "Quota management support", + "links": [], + "alias": "quotas", + "description": "Expose functions for quotas management per tenant" + }, + { + "updated": "2013-02-07T10:00:00-00:00", + "name": "DHCP Agent Scheduler", + "links": [], + "alias": "dhcp_agent_scheduler", + "description": "Schedule networks among dhcp agents" + }, + { + "updated": "2013-06-27T10:00:00-00:00", + "name": "Multi Provider Network", + "links": [], + "alias": "multi-provider", + "description": "Expose mapping of virtual networks to multiple physical networks" + }, + { + "updated": "2013-01-14T10:00:00-00:00", + "name": "Neutron external network", + "links": [], + "alias": "external-net", + "description": "Adds external network attribute to network resource." + }, + { + "updated": "2012-07-20T10:00:00-00:00", + "name": "Neutron L3 Router", + "links": [], + "alias": "router", + "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway." + }, + { + "updated": "2013-07-23T10:00:00-00:00", + "name": "Allowed Address Pairs", + "links": [], + "alias": "allowed-address-pairs", + "description": "Provides allowed address pairs" + }, + { + "updated": "2013-03-17T12:00:00-00:00", + "name": "Neutron Extra DHCP opts", + "links": [], + "alias": "extra_dhcp_opt", + "description": "Extra options configuration for DHCP. For example PXE boot options to DHCP clients can be specified (e.g. tftp-server, server-ip-address, bootfile-name)" + }, + { + "updated": "2012-10-07T10:00:00-00:00", + "name": "LoadBalancing service", + "links": [], + "alias": "lbaas", + "description": "Extension for LoadBalancing service" + }, + { + "updated": "2013-02-01T10:00:00-00:00", + "name": "Neutron Extra Route", + "links": [], + "alias": "extraroute", + "description": "Extra routes configuration for L3 router" + } + ] +} diff --git a/api-ref/source/samples/firewalls/firewall-create-request.json b/api-ref/source/samples/firewalls/firewall-create-request.json new file mode 100644 index 000000000..65589932b --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-create-request.json @@ -0,0 +1,6 @@ +{ + "firewall": { + "admin_state_up": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-create-response.json b/api-ref/source/samples/firewalls/firewall-create-response.json new file mode 100644 index 000000000..c3c8d689c --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-create-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "PENDING_CREATE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-policies-list-response.json b/api-ref/source/samples/firewalls/firewall-policies-list-response.json new file mode 100644 index 000000000..bcec01fe7 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policies-list-response.json @@ -0,0 +1,15 @@ +{ + "firewall_policies": [ + { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-create-request.json b/api-ref/source/samples/firewalls/firewall-policy-create-request.json new file mode 100644 index 000000000..7811e9549 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-create-request.json @@ -0,0 +1,8 @@ +{ + "firewall_policy": { + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "name": "test-policy" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-create-response.json b/api-ref/source/samples/firewalls/firewall-policy-create-response.json new file mode 100644 index 000000000..6c68f5bc2 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-create-response.json @@ -0,0 +1,13 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-insert-rule-request.json b/api-ref/source/samples/firewalls/firewall-policy-insert-rule-request.json new file mode 100644 index 000000000..94d9b8ec8 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-insert-rule-request.json @@ -0,0 +1,5 @@ +{ + "firewall_rule_id": "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692", + "insert_after": "a08ef905-0ff6-4784-8374-175fffe7dade", + "insert_before": "" +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-insert-rule-response.json b/api-ref/source/samples/firewalls/firewall-policy-insert-rule-response.json new file mode 100644 index 000000000..6a42dd6c3 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-insert-rule-response.json @@ -0,0 +1,14 @@ +{ + "audited": false, + "description": "", + "firewall_list": [], + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-remove-rule-request.json b/api-ref/source/samples/firewalls/firewall-policy-remove-rule-request.json new file mode 100644 index 000000000..7576442bf --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-remove-rule-request.json @@ -0,0 +1,3 @@ +{ + "firewall_rule_id": "7bc34b8c-8d3b-4ada-a9c8-1f4c11c65692" +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-remove-rule-response.json b/api-ref/source/samples/firewalls/firewall-policy-remove-rule-response.json new file mode 100644 index 000000000..c8d976ac8 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-remove-rule-response.json @@ -0,0 +1,13 @@ +{ + "audited": false, + "description": "", + "firewall_list": [], + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-show-response.json b/api-ref/source/samples/firewalls/firewall-policy-show-response.json new file mode 100644 index 000000000..6c68f5bc2 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-show-response.json @@ -0,0 +1,13 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-update-request.json b/api-ref/source/samples/firewalls/firewall-policy-update-request.json new file mode 100644 index 000000000..7d0a7b53c --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-update-request.json @@ -0,0 +1,8 @@ +{ + "firewall_policy": { + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ] + } +} diff --git a/api-ref/source/samples/firewalls/firewall-policy-update-response.json b/api-ref/source/samples/firewalls/firewall-policy-update-response.json new file mode 100644 index 000000000..4f15965cf --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-policy-update-response.json @@ -0,0 +1,14 @@ +{ + "firewall_policy": { + "audited": false, + "description": "", + "firewall_rules": [ + "a08ef905-0ff6-4784-8374-175fffe7dade", + "8722e0e0-9cc9-4490-9660-8c9a5732fbb0" + ], + "id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "name": "test-policy", + "shared": false, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rule-create-request.json b/api-ref/source/samples/firewalls/firewall-rule-create-request.json new file mode 100644 index 000000000..9a972d607 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rule-create-request.json @@ -0,0 +1,9 @@ +{ + "firewall_rule": { + "action": "allow", + "destination_port": "80", + "enabled": true, + "name": "ALLOW_HTTP", + "protocol": "tcp" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rule-create-response.json b/api-ref/source/samples/firewalls/firewall-rule-create-response.json new file mode 100644 index 000000000..8121977fb --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rule-create-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": null, + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": null, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rule-show-response.json b/api-ref/source/samples/firewalls/firewall-rule-show-response.json new file mode 100644 index 000000000..8121977fb --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rule-show-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": null, + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": null, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rule-update-request.json b/api-ref/source/samples/firewalls/firewall-rule-update-request.json new file mode 100644 index 000000000..fbff43f86 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rule-update-request.json @@ -0,0 +1,5 @@ +{ + "firewall_rule": { + "shared": "true" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rule-update-response.json b/api-ref/source/samples/firewalls/firewall-rule-update-response.json new file mode 100644 index 000000000..5bdeac938 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rule-update-response.json @@ -0,0 +1,19 @@ +{ + "firewall_rule": { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": 1, + "protocol": "tcp", + "shared": true, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-rules-list-response.json b/api-ref/source/samples/firewalls/firewall-rules-list-response.json new file mode 100644 index 000000000..20065cbee --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-rules-list-response.json @@ -0,0 +1,21 @@ +{ + "firewall_rules": [ + { + "action": "allow", + "description": "", + "destination_ip_address": null, + "destination_port": "80", + "enabled": true, + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "8722e0e0-9cc9-4490-9660-8c9a5732fbb0", + "ip_version": 4, + "name": "ALLOW_HTTP", + "position": 1, + "protocol": "tcp", + "shared": false, + "source_ip_address": null, + "source_port": null, + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/samples/firewalls/firewall-show-response.json b/api-ref/source/samples/firewalls/firewall-show-response.json new file mode 100644 index 000000000..eae14315b --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-show-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "ACTIVE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-update-request.json b/api-ref/source/samples/firewalls/firewall-update-request.json new file mode 100644 index 000000000..2458f52c7 --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-update-request.json @@ -0,0 +1,5 @@ +{ + "firewall": { + "admin_state_up": "false" + } +} diff --git a/api-ref/source/samples/firewalls/firewall-update-response.json b/api-ref/source/samples/firewalls/firewall-update-response.json new file mode 100644 index 000000000..248ea1bfb --- /dev/null +++ b/api-ref/source/samples/firewalls/firewall-update-response.json @@ -0,0 +1,14 @@ +{ + "firewall": { + "admin_state_up": false, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "PENDING_UPDATE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } +} diff --git a/api-ref/source/samples/firewalls/firewalls-list-response.json b/api-ref/source/samples/firewalls/firewalls-list-response.json new file mode 100644 index 000000000..72e6e9f7f --- /dev/null +++ b/api-ref/source/samples/firewalls/firewalls-list-response.json @@ -0,0 +1,16 @@ +{ + "firewalls": [ + { + "admin_state_up": true, + "description": "", + "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c", + "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977", + "name": "", + "status": "ACTIVE", + "router_ids": [ + "650bfd2f-7766-4a0d-839f-218f33e16998" + ], + "tenant_id": "45977fa2dbd7482098dd68d0d8970117" + } + ] +} diff --git a/api-ref/source/samples/flavors/flavor-associate-request.json b/api-ref/source/samples/flavors/flavor-associate-request.json new file mode 100644 index 000000000..f2e491ab4 --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-associate-request.json @@ -0,0 +1,5 @@ +{ + "service_profile": { + "id": "4e5b9191-ffbe-4f7a-b112-2db98232fd32" + } +} diff --git a/api-ref/source/samples/flavors/flavor-associate-response.json b/api-ref/source/samples/flavors/flavor-associate-response.json new file mode 100644 index 000000000..29685d7a9 --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-associate-response.json @@ -0,0 +1,5 @@ +{ + "service_profile": { + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c" + } +} diff --git a/api-ref/source/samples/flavors/flavor-create-request.json b/api-ref/source/samples/flavors/flavor-create-request.json new file mode 100644 index 000000000..859c94526 --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-create-request.json @@ -0,0 +1,8 @@ +{ + "flavor": { + "service_type": "LOADBALANCERV2", + "enabled": true, + "name": "dummy", + "description": "Dummy flavor" + } +} diff --git a/api-ref/source/samples/flavors/flavor-create-response.json b/api-ref/source/samples/flavors/flavor-create-response.json new file mode 100644 index 000000000..dac6fcc0b --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-create-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c", + "name": "dummy", + "service_type": "LOADBALANCERV2", + "description": "Dummy flavor", + "enabled": true, + "service_profiles": [] + } +} diff --git a/api-ref/source/samples/flavors/flavor-show-response.json b/api-ref/source/samples/flavors/flavor-show-response.json new file mode 100644 index 000000000..176bc7824 --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-show-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "description": "", + "enabled": true, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "f7b14d9a-b0dc-4fbe-bb14-a0f4970a69e0", + "name": "dummy" + } +} diff --git a/api-ref/source/samples/flavors/flavor-update-request.json b/api-ref/source/samples/flavors/flavor-update-request.json new file mode 100644 index 000000000..76b56e74d --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-update-request.json @@ -0,0 +1,7 @@ +{ + "flavor": { + "enabled": false, + "name": "newname", + "description": "New description" + } +} diff --git a/api-ref/source/samples/flavors/flavor-update-response.json b/api-ref/source/samples/flavors/flavor-update-response.json new file mode 100644 index 000000000..52f7814aa --- /dev/null +++ b/api-ref/source/samples/flavors/flavor-update-response.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "description": "New description", + "enabled": false, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "7fc0581b-4509-49e1-90eb-c953c877fa4c", + "name": "newname" + } +} diff --git a/api-ref/source/samples/flavors/flavors-list-response.json b/api-ref/source/samples/flavors/flavors-list-response.json new file mode 100644 index 000000000..3b2474d2f --- /dev/null +++ b/api-ref/source/samples/flavors/flavors-list-response.json @@ -0,0 +1,12 @@ +{ + "flavors": [ + { + "description": "", + "enabled": true, + "service_profiles": [], + "service_type": "LOADBALANCERV2", + "id": "f7b14d9a-b0dc-4fbe-bb14-a0f4970a69e0", + "name": "dummy" + } + ] +} diff --git a/api-ref/source/samples/flavors/service-profile-create-request.json b/api-ref/source/samples/flavors/service-profile-create-request.json new file mode 100644 index 000000000..aba70f34a --- /dev/null +++ b/api-ref/source/samples/flavors/service-profile-create-request.json @@ -0,0 +1,8 @@ +{ + "service_profile": { + "enabled": "true", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "Dummy profile", + "metainfo": "{'foo': 'bar'}" + } +} diff --git a/api-ref/source/samples/flavors/service-profile-create-response.json b/api-ref/source/samples/flavors/service-profile-create-response.json new file mode 100644 index 000000000..1556d72fa --- /dev/null +++ b/api-ref/source/samples/flavors/service-profile-create-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": true, + "metainfo": "{'foo': 'bar'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "Dummy profile" + } +} diff --git a/api-ref/source/samples/flavors/service-profile-show-response.json b/api-ref/source/samples/flavors/service-profile-show-response.json new file mode 100644 index 000000000..1556d72fa --- /dev/null +++ b/api-ref/source/samples/flavors/service-profile-show-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": true, + "metainfo": "{'foo': 'bar'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "Dummy profile" + } +} diff --git a/api-ref/source/samples/flavors/service-profile-update-request.json b/api-ref/source/samples/flavors/service-profile-update-request.json new file mode 100644 index 000000000..f41101f43 --- /dev/null +++ b/api-ref/source/samples/flavors/service-profile-update-request.json @@ -0,0 +1,8 @@ +{ + "service_profile": { + "enabled": false, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "New description", + "metainfo": "{'new': 'info'}" + } +} diff --git a/api-ref/source/samples/flavors/service-profile-update-response.json b/api-ref/source/samples/flavors/service-profile-update-response.json new file mode 100644 index 000000000..3090089c9 --- /dev/null +++ b/api-ref/source/samples/flavors/service-profile-update-response.json @@ -0,0 +1,9 @@ +{ + "service_profile": { + "enabled": false, + "metainfo": "{'new': 'info'}", + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "id": "7c793e5f-9b64-44e0-8b1f-902e59c85a01", + "description": "New description" + } +} diff --git a/api-ref/source/samples/flavors/service-profiles-list-response.json b/api-ref/source/samples/flavors/service-profiles-list-response.json new file mode 100644 index 000000000..e05cfbe1f --- /dev/null +++ b/api-ref/source/samples/flavors/service-profiles-list-response.json @@ -0,0 +1,18 @@ +{ + "service_profiles": [ + { + "id": "4e5b9191-ffbe-4f7a-b112-2db98232fd32", + "enabled": true, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "", + "metainfo": "" + }, + { + "id": "684322c5-703a-48a2-8138-34b99942a7ef", + "enabled": true, + "driver": "neutron_lbaas.drivers.octavia.driver.OctaviaDriver", + "description": "", + "metainfo": "" + } + ] +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-associate-request.json b/api-ref/source/samples/lbaas/healthmonitor-associate-request.json new file mode 100644 index 000000000..9fe528a80 --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-associate-request.json @@ -0,0 +1,5 @@ +{ + "health_monitor": { + "id": "b624decf-d5d3-4c66-9a3d-f047e7786181" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-associate-response.json b/api-ref/source/samples/lbaas/healthmonitor-associate-response.json new file mode 100644 index 000000000..b70e51138 --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-associate-response.json @@ -0,0 +1,3 @@ +{ + "health_monitor": {} +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-create-request.json b/api-ref/source/samples/lbaas/healthmonitor-create-request.json new file mode 100644 index 000000000..859efa2da --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-create-request.json @@ -0,0 +1,12 @@ +{ + "health_monitor": { + "admin_state_up": true, + "delay": "1", + "expected_codes": "200,201,202", + "http_method": "GET", + "max_retries": 5, + "timeout": 1, + "type": "HTTP", + "url_path": "/index.html" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-create-response.json b/api-ref/source/samples/lbaas/healthmonitor-create-response.json new file mode 100644 index 000000000..a9a50eb79 --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-create-response.json @@ -0,0 +1,15 @@ +{ + "health_monitor": { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-show-response.json b/api-ref/source/samples/lbaas/healthmonitor-show-response.json new file mode 100644 index 000000000..f9acfa051 --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-show-response.json @@ -0,0 +1,21 @@ +{ + "health_monitor": { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-update-request.json b/api-ref/source/samples/lbaas/healthmonitor-update-request.json new file mode 100644 index 000000000..5cfb5363d --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-update-request.json @@ -0,0 +1,11 @@ +{ + "health_monitor": { + "admin_state_up": false, + "delay": "2", + "expected_codes": "200", + "http_method": "POST", + "max_retries": 2, + "timeout": 2, + "url_path": "/page.html" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitor-update-response.json b/api-ref/source/samples/lbaas/healthmonitor-update-response.json new file mode 100644 index 000000000..bbc4ac17d --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitor-update-response.json @@ -0,0 +1,21 @@ +{ + "health_monitor": { + "admin_state_up": false, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 2, + "expected_codes": "200", + "max_retries": 2, + "http_method": "POST", + "timeout": 2, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/page.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } +} diff --git a/api-ref/source/samples/lbaas/healthmonitors-list-response.json b/api-ref/source/samples/lbaas/healthmonitors-list-response.json new file mode 100644 index 000000000..94ce2f9ff --- /dev/null +++ b/api-ref/source/samples/lbaas/healthmonitors-list-response.json @@ -0,0 +1,23 @@ +{ + "health_monitors": [ + { + "admin_state_up": true, + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "delay": 1, + "expected_codes": "200,201,202", + "max_retries": 5, + "http_method": "GET", + "timeout": 1, + "pools": [ + { + "status": "ACTIVE", + "status_description": null, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ], + "url_path": "/index.html", + "type": "HTTP", + "id": "b7633ade-24dc-4d72-8475-06aa22be5412" + } + ] +} diff --git a/api-ref/source/samples/lbaas/listener-create-request.json b/api-ref/source/samples/lbaas/listener-create-request.json new file mode 100644 index 000000000..bcfe9922e --- /dev/null +++ b/api-ref/source/samples/lbaas/listener-create-request.json @@ -0,0 +1,16 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "description": "listener one", + "loadbalancer_id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "name": "listener1", + "protocol": "HTTP", + "protocol_port": "80", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/samples/lbaas/listener-create-response.json b/api-ref/source/samples/lbaas/listener-create-response.json new file mode 100644 index 000000000..3da577d31 --- /dev/null +++ b/api-ref/source/samples/lbaas/listener-create-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "listener one", + "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829", + "loadbalancers": [ + { + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c" + } + ], + "name": "listener1", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/samples/lbaas/listener-show-response.json b/api-ref/source/samples/lbaas/listener-show-response.json new file mode 100644 index 000000000..5866d69b8 --- /dev/null +++ b/api-ref/source/samples/lbaas/listener-show-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "", + "id": "35cb8516-1173-4035-8dae-0dae3453f37f", + "loadbalancers": [ + { + "id": "a9729389-6147-41a3-ab22-a24aed8692b2" + } + ], + "name": "", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "3e4d8bec50a845fcb09e03a4375c691d", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/samples/lbaas/listener-update-request.json b/api-ref/source/samples/lbaas/listener-update-request.json new file mode 100644 index 000000000..aeb8120ce --- /dev/null +++ b/api-ref/source/samples/lbaas/listener-update-request.json @@ -0,0 +1,13 @@ +{ + "listener": { + "admin_state_up": false, + "connection_limit": 200, + "description": "listener two", + "name": "listener2", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/samples/lbaas/listener-update-response.json b/api-ref/source/samples/lbaas/listener-update-response.json new file mode 100644 index 000000000..a73fa28e0 --- /dev/null +++ b/api-ref/source/samples/lbaas/listener-update-response.json @@ -0,0 +1,23 @@ +{ + "listener": { + "admin_state_up": false, + "connection_limit": 200, + "default_pool_id": null, + "description": "listener two", + "id": "39de4d56-d663-46e5-85a1-5b9d5fa17829", + "loadbalancers": [ + { + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c" + } + ], + "name": "listener2", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } +} diff --git a/api-ref/source/samples/lbaas/listeners-list-response.json b/api-ref/source/samples/lbaas/listeners-list-response.json new file mode 100644 index 000000000..dbbe49f4a --- /dev/null +++ b/api-ref/source/samples/lbaas/listeners-list-response.json @@ -0,0 +1,25 @@ +{ + "listeners": [ + { + "admin_state_up": true, + "connection_limit": 100, + "default_pool_id": null, + "description": "", + "id": "35cb8516-1173-4035-8dae-0dae3453f37f", + "loadbalancers": [ + { + "id": "a9729389-6147-41a3-ab22-a24aed8692b2" + } + ], + "name": "", + "protocol": "HTTP", + "protocol_port": 80, + "tenant_id": "3e4d8bec50a845fcb09e03a4375c691d", + "default_tls_container_ref": "https://barbican.endpoint/containers/a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "sni_container_refs": [ + "https://barbican.endpoint/containers/b36c20d0-18e9-42ce-88fd-82a35977ee8d", + "https://barbican.endpoint/containers/c36c20d0-18e9-42ce-88fd-82a35977ee8e" + ] + } + ] +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-create-request.json b/api-ref/source/samples/lbaas/loadbalancer-create-request.json new file mode 100644 index 000000000..1f776e450 --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-create-request.json @@ -0,0 +1,11 @@ +{ + "loadbalancer": { + "name": "loadbalancer1", + "description": "simple lb", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "vip_address": "10.0.0.4", + "admin_state_up": true, + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04" + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-create-response.json b/api-ref/source/samples/lbaas/loadbalancer-create-response.json new file mode 100644 index 000000000..a7497cbd3 --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-create-response.json @@ -0,0 +1,16 @@ +{ + "loadbalancer": { + "admin_state_up": true, + "description": "simple lb", + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "listeners": [], + "name": "loadbalancer1", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_address": "10.0.0.4", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "flavor": "a7ae5d5a-d855-4f9a-b187-af66b53f4d04", + "provider": "sample_provider" + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-delete-response.json b/api-ref/source/samples/lbaas/loadbalancer-delete-response.json new file mode 100644 index 000000000..9f8f3439c --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-delete-response.json @@ -0,0 +1,8 @@ +{ + "loadbalancer": { + "active_connections": 0, + "total_connections": 0, + "bytes_in": 0, + "bytes_out": 0 + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-show-response.json b/api-ref/source/samples/lbaas/loadbalancer-show-response.json new file mode 100644 index 000000000..584f94899 --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-show-response.json @@ -0,0 +1,14 @@ +{ + "loadbalancer": { + "description": "simple lb", + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "provisioning_status": "ACTIVE", + "listeners": [], + "vip_address": "10.0.0.2", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "id": "a9729389-6147-41a3-ab22-a24aed8692b2", + "operating_status": "ONLINE", + "name": "loadbalancer1" + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-status-tree.json b/api-ref/source/samples/lbaas/loadbalancer-status-tree.json new file mode 100644 index 000000000..19535ab69 --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-status-tree.json @@ -0,0 +1,47 @@ +{ + "statuses": { + "loadbalancer": { + "name": "lb1", + "listeners": [ + { + "pools": [ + { + "name": "pool1", + "provisioning_status": "ACTIVE", + "health_monitor": { + "type": "HTTP", + "id": "90f7c765-0bc9-47c4-8513-4cc0c264c8f8", + "provisioning_status": "ACTIVE" + }, + "members": [ + { + "address": "10.0.0.4", + "protocol_port": 80, + "id": "32723bee-2484-4de3-b6fc-c0b98d35fc84", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + }, + { + "address": "10.0.0.3", + "protocol_port": 80, + "id": "173b8164-0c9a-43ec-ab33-4ae0e7a8f863", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "ae6f93b8-a3f6-46cd-bb18-c2ab0308abf7", + "operating_status": "ONLINE" + } + ], + "name": "listener1", + "id": "c2a41fbe-b70a-4645-bb11-4d3c28f23a25", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + ], + "id": "a4c19566-6f81-4c96-ac11-33954a9825a2", + "operating_status": "ONLINE", + "provisioning_status": "ACTIVE" + } + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-update-request.json b/api-ref/source/samples/lbaas/loadbalancer-update-request.json new file mode 100644 index 000000000..a927251eb --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-update-request.json @@ -0,0 +1,7 @@ +{ + "loadbalancer": { + "admin_state_up": false, + "description": "simple lb2", + "name": "loadbalancer2" + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-update-response.json b/api-ref/source/samples/lbaas/loadbalancer-update-response.json new file mode 100644 index 000000000..ae01146be --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-update-response.json @@ -0,0 +1,14 @@ +{ + "loadbalancer": { + "admin_state_up": false, + "description": "simple lb2", + "id": "a36c20d0-18e9-42ce-88fd-82a35977ee8c", + "listeners": [], + "name": "loadbalancer2", + "operating_status": "ONLINE", + "provisioning_status": "PENDING_UPDATE", + "tenant_id": "b7c1a69e88bf4b21a8148f787aef2081", + "vip_address": "10.0.0.4", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2" + } +} diff --git a/api-ref/source/samples/lbaas/loadbalancer-update-response.txt b/api-ref/source/samples/lbaas/loadbalancer-update-response.txt new file mode 100644 index 000000000..314e15b36 --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancer-update-response.txt @@ -0,0 +1,4 @@ +#!wiki caution +Note + +A Load Balancer that is does not have a provisioning_status of ACTIVE cannot be updated. diff --git a/api-ref/source/samples/lbaas/loadbalancers-list-response.json b/api-ref/source/samples/lbaas/loadbalancers-list-response.json new file mode 100644 index 000000000..d96cfd8be --- /dev/null +++ b/api-ref/source/samples/lbaas/loadbalancers-list-response.json @@ -0,0 +1,16 @@ +{ + "loadbalancers": [ + { + "description": "simple lb", + "admin_state_up": true, + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "provisioning_status": "ACTIVE", + "listeners": [], + "vip_address": "10.0.0.2", + "vip_subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "id": "a9729389-6147-41a3-ab22-a24aed8692b2", + "operating_status": "ONLINE", + "name": "loadbalancer1" + } + ] +} diff --git a/api-ref/source/samples/lbaas/member-create-request.json b/api-ref/source/samples/lbaas/member-create-request.json new file mode 100644 index 000000000..c04504910 --- /dev/null +++ b/api-ref/source/samples/lbaas/member-create-request.json @@ -0,0 +1,9 @@ +{ + "member": { + "address": "10.0.0.22", + "admin_state_up": true, + "protocol_port": "90", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "weight": "1" + } +} diff --git a/api-ref/source/samples/lbaas/member-create-response.json b/api-ref/source/samples/lbaas/member-create-response.json new file mode 100644 index 000000000..f26b4dcd3 --- /dev/null +++ b/api-ref/source/samples/lbaas/member-create-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "PENDING_CREATE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/samples/lbaas/member-show-response.json b/api-ref/source/samples/lbaas/member-show-response.json new file mode 100644 index 000000000..1ec3afee9 --- /dev/null +++ b/api-ref/source/samples/lbaas/member-show-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "ACTIVE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/samples/lbaas/member-update-request.json b/api-ref/source/samples/lbaas/member-update-request.json new file mode 100644 index 000000000..b5bf2c877 --- /dev/null +++ b/api-ref/source/samples/lbaas/member-update-request.json @@ -0,0 +1,5 @@ +{ + "member": { + "weight": 5 + } +} diff --git a/api-ref/source/samples/lbaas/member-update-response.json b/api-ref/source/samples/lbaas/member-update-response.json new file mode 100644 index 000000000..2dced7241 --- /dev/null +++ b/api-ref/source/samples/lbaas/member-update-response.json @@ -0,0 +1,13 @@ +{ + "member": { + "admin_state_up": true, + "status": "PENDING_UPDATE", + "status_description": null, + "weight": 5, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } +} diff --git a/api-ref/source/samples/lbaas/members-list-response.json b/api-ref/source/samples/lbaas/members-list-response.json new file mode 100644 index 000000000..62484c8c1 --- /dev/null +++ b/api-ref/source/samples/lbaas/members-list-response.json @@ -0,0 +1,15 @@ +{ + "members": [ + { + "admin_state_up": true, + "status": "ACTIVE", + "status_description": null, + "weight": 1, + "address": "10.0.1.22", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "protocol_port": 90, + "id": "cf024846-7516-4e3a-b0fb-6590322c836f", + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332" + } + ] +} diff --git a/api-ref/source/samples/lbaas/pool-create-request.json b/api-ref/source/samples/lbaas/pool-create-request.json new file mode 100644 index 000000000..7797cd1b6 --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-create-request.json @@ -0,0 +1,10 @@ +{ + "pool": { + "admin_state_up": true, + "description": "simple pool", + "lb_algorithm": "ROUND_ROBIN", + "name": "my-pool", + "protocol": "HTTP", + "subnet_id": "e301aed0-d9e7-498a-977c-1bbfaf14ed5d" + } +} diff --git a/api-ref/source/samples/lbaas/pool-create-response.json b/api-ref/source/samples/lbaas/pool-create-response.json new file mode 100644 index 000000000..722657dfd --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-create-response.json @@ -0,0 +1,19 @@ +{ + "pool": { + "status": "PENDING_CREATE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "simple pool", + "health_monitors": [], + "members": [], + "status_description": null, + "id": "af95e0ce-8a26-4f29-9524-db41e7769c73", + "vip_id": null, + "name": "my-pool", + "admin_state_up": true, + "subnet_id": "e301aed0-d9e7-498a-977c-1bbfaf14ed5d", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [], + "provider": "haproxy" + } +} diff --git a/api-ref/source/samples/lbaas/pool-list-resp.json b/api-ref/source/samples/lbaas/pool-list-resp.json new file mode 100644 index 000000000..b8bf9d00a --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-list-resp.json @@ -0,0 +1,20 @@ +{ + "pools": [ + { + "admin_state_up": true, + "description": "simple pool", + "healthmonitor_id": null, + "id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5", + "lb_algorithm": "ROUND_ROBIN", + "listeners": [ + { + "id": "35cb8516-1173-4035-8dae-0dae3453f37f" + } + ], + "members": [], + "name": "pool1", + "protocol": "HTTP", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c" + } + ] +} diff --git a/api-ref/source/samples/lbaas/pool-members-list-response.json b/api-ref/source/samples/lbaas/pool-members-list-response.json new file mode 100644 index 000000000..3e97d9d00 --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-members-list-response.json @@ -0,0 +1,13 @@ +{ + "members": [ + { + "address": "10.0.0.8", + "admin_state_up": true, + "id": "9a7aff27-fd41-4ec1-ba4c-3eb92c629313", + "protocol_port": 80, + "subnet_id": "013d3059-87a4-45a5-91e9-d721068ae0b2", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c", + "weight": 1 + } + ] +} diff --git a/api-ref/source/samples/lbaas/pool-show-response.json b/api-ref/source/samples/lbaas/pool-show-response.json new file mode 100644 index 000000000..2756ff2a4 --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-show-response.json @@ -0,0 +1,29 @@ +{ + "pool": { + "status": "ACTIVE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "pool1", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } +} diff --git a/api-ref/source/samples/lbaas/pool-update-request.json b/api-ref/source/samples/lbaas/pool-update-request.json new file mode 100644 index 000000000..d523eeabb --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-update-request.json @@ -0,0 +1,5 @@ +{ + "pool": { + "name": "SuperPool" + } +} diff --git a/api-ref/source/samples/lbaas/pool-update-response.json b/api-ref/source/samples/lbaas/pool-update-response.json new file mode 100644 index 000000000..0ba4ae477 --- /dev/null +++ b/api-ref/source/samples/lbaas/pool-update-response.json @@ -0,0 +1,29 @@ +{ + "pool": { + "status": "PENDING_UPDATE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "SuperPool", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } +} diff --git a/api-ref/source/samples/lbaas/pools-list-response.json b/api-ref/source/samples/lbaas/pools-list-response.json new file mode 100644 index 000000000..bdd36ce3e --- /dev/null +++ b/api-ref/source/samples/lbaas/pools-list-response.json @@ -0,0 +1,31 @@ +{ + "pools": [ + { + "status": "ACTIVE", + "lb_algorithm": "ROUND_ROBIN", + "protocol": "HTTP", + "description": "", + "health_monitors": [ + "b7633ade-24dc-4d72-8475-06aa22be5412" + ], + "members": [ + "cf024846-7516-4e3a-b0fb-6590322c836f" + ], + "status_description": null, + "id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "vip_id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "name": "pool1", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "health_monitors_status": [ + { + "monitor_id": "b7633ade-24dc-4d72-8475-06aa22be5412", + "status": "ACTIVE", + "status_description": null + } + ], + "provider": "haproxy" + } + ] +} diff --git a/api-ref/source/samples/lbaas/pools-list-response2.json b/api-ref/source/samples/lbaas/pools-list-response2.json new file mode 100644 index 000000000..b8bf9d00a --- /dev/null +++ b/api-ref/source/samples/lbaas/pools-list-response2.json @@ -0,0 +1,20 @@ +{ + "pools": [ + { + "admin_state_up": true, + "description": "simple pool", + "healthmonitor_id": null, + "id": "4c0a0a5f-cf8f-44b7-b912-957daa8ce5e5", + "lb_algorithm": "ROUND_ROBIN", + "listeners": [ + { + "id": "35cb8516-1173-4035-8dae-0dae3453f37f" + } + ], + "members": [], + "name": "pool1", + "protocol": "HTTP", + "tenant_id": "1a3e005cf9ce40308c900bcb08e5320c" + } + ] +} diff --git a/api-ref/source/samples/lbaas/vip-create-request.json b/api-ref/source/samples/lbaas/vip-create-request.json new file mode 100644 index 000000000..2dc444c0f --- /dev/null +++ b/api-ref/source/samples/lbaas/vip-create-request.json @@ -0,0 +1,10 @@ +{ + "vip": { + "protocol": "HTTP", + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "protocol_port": "80" + } +} diff --git a/api-ref/source/samples/lbaas/vip-create-response.json b/api-ref/source/samples/lbaas/vip-create-response.json new file mode 100644 index 000000000..1e8c2e305 --- /dev/null +++ b/api-ref/source/samples/lbaas/vip-create-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "PENDING_CREATE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "0ba4cd9c-edb4-4594-bac4-b68b49d5f04c", + "id": "fa0373e0-9dd4-4ff7-98fc-8cceca9bdb4e", + "status_description": null, + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "tenant_id": "e68c3e65e1f34ee9b2357d0fe418a78b", + "connection_limit": -1, + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "session_persistence": null + } +} diff --git a/api-ref/source/samples/lbaas/vip-show-response.json b/api-ref/source/samples/lbaas/vip-show-response.json new file mode 100644 index 000000000..57a49918c --- /dev/null +++ b/api-ref/source/samples/lbaas/vip-show-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "ACTIVE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "5328aeea-2988-41c0-b5fe-0fd0660979d3", + "id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "status_description": null, + "name": "my-Vip", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "connection_limit": -1, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "session_persistence": null + } +} diff --git a/api-ref/source/samples/lbaas/vip-update-request.json b/api-ref/source/samples/lbaas/vip-update-request.json new file mode 100644 index 000000000..a29693659 --- /dev/null +++ b/api-ref/source/samples/lbaas/vip-update-request.json @@ -0,0 +1,5 @@ +{ + "vip": { + "connection_limit": "1000" + } +} diff --git a/api-ref/source/samples/lbaas/vip-update-response.json b/api-ref/source/samples/lbaas/vip-update-response.json new file mode 100644 index 000000000..5bcd8397d --- /dev/null +++ b/api-ref/source/samples/lbaas/vip-update-response.json @@ -0,0 +1,19 @@ +{ + "vip": { + "status": "PENDING_UPDATE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "0ba4cd9c-edb4-4594-bac4-b68b49d5f04c", + "id": "fa0373e0-9dd4-4ff7-98fc-8cceca9bdb4e", + "status_description": null, + "name": "NewVip", + "admin_state_up": true, + "subnet_id": "0ba2ef27-0054-4b28-a8fa-f215e8079272", + "tenant_id": "e68c3e65e1f34ee9b2357d0fe418a78b", + "connection_limit": 1000, + "pool_id": "105320c3-8416-4997-9c1c-4098b95fdaca", + "session_persistence": null + } +} diff --git a/api-ref/source/samples/lbaas/vips-list-response.json b/api-ref/source/samples/lbaas/vips-list-response.json new file mode 100644 index 000000000..f98456045 --- /dev/null +++ b/api-ref/source/samples/lbaas/vips-list-response.json @@ -0,0 +1,21 @@ +{ + "vips": [ + { + "status": "ACTIVE", + "protocol": "HTTP", + "description": "", + "address": "10.0.0.4", + "protocol_port": 80, + "port_id": "5328aeea-2988-41c0-b5fe-0fd0660979d3", + "id": "388c739a-6a57-4e74-bc7b-a5cd60248bba", + "status_description": null, + "name": "my-Vip", + "admin_state_up": true, + "subnet_id": "aa547115-d710-4d6d-bb2c-b038d9c2704b", + "tenant_id": "eabfefa3fd1740a88a47ad98e132d238", + "connection_limit": -1, + "pool_id": "5a9a3e9e-d1aa-448e-af37-a70171f2a332", + "session_persistence": null + } + ] +} diff --git a/api-ref/source/samples/metering-labels/metering-label-create-request.json b/api-ref/source/samples/metering-labels/metering-label-create-request.json new file mode 100644 index 000000000..5bf6500fd --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-create-request.json @@ -0,0 +1,6 @@ +{ + "metering_label": { + "name": "label1", + "description": "description of label1" + } +} diff --git a/api-ref/source/samples/metering-labels/metering-label-create-response.json b/api-ref/source/samples/metering-labels/metering-label-create-response.json new file mode 100644 index 000000000..3a602338c --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-create-response.json @@ -0,0 +1,9 @@ +{ + "metering_label": { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "description of label1", + "name": "label1", + "id": "bc91b832-8465-40a7-a5d8-ba87de442266", + "shared": false + } +} diff --git a/api-ref/source/samples/metering-labels/metering-label-delete-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-delete-request-json-http.txt new file mode 100644 index 000000000..48f76474d --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-delete-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v2.0/metering/metering-labels/a6700594-5b7a-4105-8bfe-723b346ce866 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-label-delete-response-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-delete-response-json-http.txt new file mode 100644 index 000000000..bfbfad6ed --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-create-request.json b/api-ref/source/samples/metering-labels/metering-label-rule-create-request.json new file mode 100644 index 000000000..cac374496 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-create-request.json @@ -0,0 +1,7 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "10.0.1.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812" + } +} diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-create-response.json b/api-ref/source/samples/metering-labels/metering-label-rule-create-response.json new file mode 100644 index 000000000..364d102a0 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-create-response.json @@ -0,0 +1,9 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "10.0.1.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "00e13b58-b4f2-4579-9c9c-7ac94615f9ae", + "excluded": false + } +} diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-delete-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-rule-delete-request-json-http.txt new file mode 100644 index 000000000..3b74b68d8 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-delete-request-json-http.txt @@ -0,0 +1,6 @@ +DELETE /v2.0/metering/metering-labels/37b31179-71ee-4f0a-b130-0eeb28e7ede7 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-delete-response-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-rule-delete-response-json-http.txt new file mode 100644 index 000000000..bfbfad6ed --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-show-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-rule-show-request-json-http.txt new file mode 100644 index 000000000..0e3c1644f --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-show-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-label-rules/9536641a-7d14-4dc5-afaf-93a973ce0eb8 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-label-rule-show-response.json b/api-ref/source/samples/metering-labels/metering-label-rule-show-response.json new file mode 100644 index 000000000..4b0c3bccc --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rule-show-response.json @@ -0,0 +1,9 @@ +{ + "metering_label_rule": { + "remote_ip_prefix": "20.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "9536641a-7d14-4dc5-afaf-93a973ce0eb8", + "excluded": false + } +} diff --git a/api-ref/source/samples/metering-labels/metering-label-rules-list-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-rules-list-request-json-http.txt new file mode 100644 index 000000000..354d8a561 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rules-list-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-label-rules HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-label-rules-list-response.json b/api-ref/source/samples/metering-labels/metering-label-rules-list-response.json new file mode 100644 index 000000000..7144cfaaa --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-rules-list-response.json @@ -0,0 +1,18 @@ +{ + "metering_label_rules": [ + { + "remote_ip_prefix": "20.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "9536641a-7d14-4dc5-afaf-93a973ce0eb8", + "excluded": false + }, + { + "remote_ip_prefix": "10.0.0.0/24", + "direction": "ingress", + "metering_label_id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "id": "ffc6fd15-40de-4e7d-b617-34d3f7a93aec", + "excluded": false + } + ] +} diff --git a/api-ref/source/samples/metering-labels/metering-label-show-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-label-show-request-json-http.txt new file mode 100644 index 000000000..7387aeb94 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-show-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-labels/a6700594-5b7a-4105-8bfe-723b346ce866 HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-label-show-response.json b/api-ref/source/samples/metering-labels/metering-label-show-response.json new file mode 100644 index 000000000..e17da9a00 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-label-show-response.json @@ -0,0 +1,9 @@ +{ + "metering_label": { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label1 description", + "name": "label1", + "id": "a6700594-5b7a-4105-8bfe-723b346ce866", + "shared": false + } +} diff --git a/api-ref/source/samples/metering-labels/metering-labels-list-request-json-http.txt b/api-ref/source/samples/metering-labels/metering-labels-list-request-json-http.txt new file mode 100644 index 000000000..e1df3f2bf --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-labels-list-request-json-http.txt @@ -0,0 +1,6 @@ +GET /v2.0/metering/metering-labels HTTP/1.1 +Host: controlnode:9696 +User-Agent: python-neutronclient +Content-Type: application/json +Accept: application/json +X-Auth-Token: c52a1b304fec4ca0ac85dc1741eec6e2 diff --git a/api-ref/source/samples/metering-labels/metering-labels-list-response.json b/api-ref/source/samples/metering-labels/metering-labels-list-response.json new file mode 100644 index 000000000..da3e2bab3 --- /dev/null +++ b/api-ref/source/samples/metering-labels/metering-labels-list-response.json @@ -0,0 +1,18 @@ +{ + "metering_labels": [ + { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label1 description", + "name": "label1", + "id": "a6700594-5b7a-4105-8bfe-723b346ce866", + "shared": false + }, + { + "tenant_id": "45345b0ee1ea477fac0f541b2cb79cd4", + "description": "label2 description", + "name": "label2", + "id": "e131d186-b02d-4c0b-83d5-0c0725c4f812", + "shared": false + } + ] +} diff --git a/api-ref/source/samples/network-ip-availability/network-ip-availability-list.json b/api-ref/source/samples/network-ip-availability/network-ip-availability-list.json new file mode 100644 index 000000000..21f356ffe --- /dev/null +++ b/api-ref/source/samples/network-ip-availability/network-ip-availability-list.json @@ -0,0 +1,54 @@ +{ + "network_ip_availabilities": [ + { + "network_id": "4cf895c9-c3d1-489e-b02e-59b5c8976809", + "network_name": "public", + "subnet_ip_availability": [ + { + "cidr": "2001:db8::/64", + "ip_version": 6, + "subnet_id": "ca3f46c4-c6ff-4272-9be4-0466f84c6077", + "subnet_name": "ipv6-public-subnet", + "total_ips": 18446744073709552000, + "used_ips": 1 + }, + { + "cidr": "172.24.4.0/24", + "ip_version": 4, + "subnet_id": "cc02efc1-9d47-46bd-bab6-760919c836b5", + "subnet_name": "public-subnet", + "total_ips": 253, + "used_ips": 1 + } + ], + "tenant_id": "1a02cc95f1734fcc9d3c753818f03002", + "total_ips": 253, + "used_ips": 2 + }, + { + "network_id": "6801d9c8-20e6-4b27-945d-62499f00002e", + "network_name": "private", + "subnet_ip_availability": [ + { + "cidr": "10.0.0.0/24", + "ip_version": 4, + "subnet_id": "44e70d00-80a2-4fb1-ab59-6190595ceb61", + "subnet_name": "private-subnet", + "total_ips": 253, + "used_ips": 2 + }, + { + "ip_version": 6, + "cidr": "fdbf:ac66:9be8::/64", + "subnet_id": "a90623df-00e1-4902-a675-40674385d74c", + "subnet_name": "ipv6-private-subnet", + "total_ips": 18446744073709552000, + "used_ips": 2 + } + ], + "tenant_id": "d56d3b8dd6894a508cf41b96b522328c", + "total_ips": 18446744073709552000, + "used_ips": 4 + } + ] +} diff --git a/api-ref/source/samples/network-ip-availability/network-ip-availability-show.json b/api-ref/source/samples/network-ip-availability/network-ip-availability-show.json new file mode 100644 index 000000000..ffc3c0cfe --- /dev/null +++ b/api-ref/source/samples/network-ip-availability/network-ip-availability-show.json @@ -0,0 +1,27 @@ +{ + "network_ip_availability": { + "used_ips": 4, + "subnet_ip_availability": [ + { + "used_ips": 2, + "subnet_id": "44e70d00-80a2-4fb1-ab59-6190595ceb61", + "subnet_name": "private-subnet", + "ip_version": 4, + "cidr": "10.0.0.0/24", + "total_ips": 253 + }, + { + "used_ips": 2, + "subnet_id": "a90623df-00e1-4902-a675-40674385d74c", + "subnet_name": "ipv6-private-subnet", + "ip_version": 6, + "cidr": "fdbf:ac66:9be8::/64", + "total_ips": 18446744073709552000 + } + ], + "network_id": "6801d9c8-20e6-4b27-945d-62499f00002e", + "tenant_id": "d56d3b8dd6894a508cf41b96b522328c", + "total_ips": 18446744073709552000, + "network_name": "private" + } +} diff --git a/api-ref/source/samples/networks/network-create-request.json b/api-ref/source/samples/networks/network-create-request.json new file mode 100644 index 000000000..d5391744c --- /dev/null +++ b/api-ref/source/samples/networks/network-create-request.json @@ -0,0 +1,6 @@ +{ + "network": { + "name": "sample_network", + "admin_state_up": true + } +} diff --git a/api-ref/source/samples/networks/network-create-response.json b/api-ref/source/samples/networks/network-create-response.json new file mode 100644 index 000000000..007c5d41a --- /dev/null +++ b/api-ref/source/samples/networks/network-create-response.json @@ -0,0 +1,14 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "router:external": false, + "mtu": 0, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/samples/networks/network-multi-create-request.json b/api-ref/source/samples/networks/network-multi-create-request.json new file mode 100644 index 000000000..8a0b624c7 --- /dev/null +++ b/api-ref/source/samples/networks/network-multi-create-request.json @@ -0,0 +1,17 @@ +{ + "network": { + "segments": [ + { + "provider:segmentation_id": "2", + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "name": "net1", + "admin_state_up": true + } +} diff --git a/api-ref/source/samples/networks/network-multi-create-response.json b/api-ref/source/samples/networks/network-multi-create-response.json new file mode 100644 index 000000000..33f6b268b --- /dev/null +++ b/api-ref/source/samples/networks/network-multi-create-response.json @@ -0,0 +1,24 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": null, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/samples/networks/network-provider-create-response.json b/api-ref/source/samples/networks/network-provider-create-response.json new file mode 100644 index 000000000..f66f41f56 --- /dev/null +++ b/api-ref/source/samples/networks/network-provider-create-response.json @@ -0,0 +1,17 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "availability_zone_hints": [], + "name": "net1", + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "router:external": false, + "provider:network_type": "vlan", + "mtu": 0, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c", + "provider:segmentation_id": 2 + } +} diff --git a/api-ref/source/samples/networks/network-provider-show-response.json b/api-ref/source/samples/networks/network-provider-show-response.json new file mode 100644 index 000000000..54f834980 --- /dev/null +++ b/api-ref/source/samples/networks/network-provider-show-response.json @@ -0,0 +1,23 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private-network", + "provider:physical_network": null, + "router:external": false, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "mtu": 0, + "shared": true, + "port_security_enabled": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/samples/networks/network-provider-update-response.json b/api-ref/source/samples/networks/network-provider-update-response.json new file mode 100644 index 000000000..3395c3a60 --- /dev/null +++ b/api-ref/source/samples/networks/network-provider-update-response.json @@ -0,0 +1,21 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "sample_network_5_updated", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "router:external": false, + "mtu": 0, + "shared": false, + "port_security_enabled": true, + "id": "1f370095-98f6-4079-be64-6d3d4a6adcc6", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/samples/networks/network-show-response.json b/api-ref/source/samples/networks/network-show-response.json new file mode 100644 index 000000000..78acfb951 --- /dev/null +++ b/api-ref/source/samples/networks/network-show-response.json @@ -0,0 +1,19 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "name": "private-network", + "router:external": false, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "created_at": "2016-03-08T20:19:41", + "mtu": 0, + "shared": true, + "port_security_enabled": true, + "updated_at": "2016-03-08T20:19:41", + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22" + } +} diff --git a/api-ref/source/samples/networks/network-update-request.json b/api-ref/source/samples/networks/network-update-request.json new file mode 100644 index 000000000..1bec12c9d --- /dev/null +++ b/api-ref/source/samples/networks/network-update-request.json @@ -0,0 +1,5 @@ +{ + "network": { + "name": "sample_network_5_updated" + } +} diff --git a/api-ref/source/samples/networks/network-update-response.json b/api-ref/source/samples/networks/network-update-response.json new file mode 100644 index 000000000..81db42ad1 --- /dev/null +++ b/api-ref/source/samples/networks/network-update-response.json @@ -0,0 +1,18 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network_5_updated", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "provider:network_type": "local", + "router:external": false, + "mtu": 0, + "shared": false, + "port_security_enabled": true, + "id": "1f370095-98f6-4079-be64-6d3d4a6adcc6", + "provider:segmentation_id": null + } +} diff --git a/api-ref/source/samples/networks/network-vlan-transparent-create-request.json b/api-ref/source/samples/networks/network-vlan-transparent-create-request.json new file mode 100644 index 000000000..3e727836f --- /dev/null +++ b/api-ref/source/samples/networks/network-vlan-transparent-create-request.json @@ -0,0 +1,7 @@ +{ + "network": { + "name": "net1", + "admin_state_up": true, + "vlan_transparent": true + } +} diff --git a/api-ref/source/samples/networks/network-vlan-transparent-create-response.json b/api-ref/source/samples/networks/network-vlan-transparent-create-response.json new file mode 100644 index 000000000..0af87ca8c --- /dev/null +++ b/api-ref/source/samples/networks/network-vlan-transparent-create-response.json @@ -0,0 +1,13 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "vlan_transparent": true, + "tenant_id": "5831268f-1f52-49a7-88d5-bc0d7a74d523", + "router:external": false, + "shared": false, + "id": "3114f6e9-f9bc-4570-a941-7329b3b9759f" + } +} diff --git a/api-ref/source/samples/networks/network-vlan-transparent-show-response.json b/api-ref/source/samples/networks/network-vlan-transparent-show-response.json new file mode 100644 index 000000000..79e1c8db6 --- /dev/null +++ b/api-ref/source/samples/networks/network-vlan-transparent-show-response.json @@ -0,0 +1,13 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "e926fd5a-e9f6-4dc8-8043-a352d974ceaf", + "router:external": false, + "vlan_transparent": true, + "shared": false, + "id": "20403fe9-6c9c-48e5-9edb-c3426a955068" + } +} diff --git a/api-ref/source/samples/networks/networks-bulk-create-request.json b/api-ref/source/samples/networks/networks-bulk-create-request.json new file mode 100644 index 000000000..e927b58ec --- /dev/null +++ b/api-ref/source/samples/networks/networks-bulk-create-request.json @@ -0,0 +1,12 @@ +{ + "networks": [ + { + "name": "sample_network3", + "admin_state_up": true + }, + { + "name": "sample_network4", + "admin_state_up": true + } + ] +} diff --git a/api-ref/source/samples/networks/networks-bulk-create-response.json b/api-ref/source/samples/networks/networks-bulk-create-response.json new file mode 100644 index 000000000..f81f216b1 --- /dev/null +++ b/api-ref/source/samples/networks/networks-bulk-create-response.json @@ -0,0 +1,30 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network3", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "mtu": 0, + "shared": false, + "id": "bc1a76cb-8767-4c3a-bb95-018b822f2130", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [], + "name": "sample_network4", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "mtu": 0, + "shared": false, + "id": "af374017-c9ae-4a1d-b799-ab73111476e2", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/samples/networks/networks-list-response.json b/api-ref/source/samples/networks/networks-list-response.json new file mode 100644 index 000000000..ce0173780 --- /dev/null +++ b/api-ref/source/samples/networks/networks-list-response.json @@ -0,0 +1,38 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "name": "private-network", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "provider:network_type": "local", + "router:external": true, + "mtu": 0, + "shared": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "name": "private", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "qos_policy_id": "bfdb6c39f71e4d44b1dfbda245c50819", + "provider:network_type": "local", + "router:external": true, + "mtu": 0, + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/samples/networks/networks-multi-list-response.json b/api-ref/source/samples/networks/networks-multi-list-response.json new file mode 100644 index 000000000..a94fb58ae --- /dev/null +++ b/api-ref/source/samples/networks/networks-multi-list-response.json @@ -0,0 +1,43 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": 0, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "router:external": false, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "name": "private", + "provider:physical_network": null, + "router:external": true, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "qos_policy_id": "bfdb6c39f71e4d44b1dfbda245c50819", + "provider:network_type": "local", + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/samples/networks/networks-multi-show-response.json b/api-ref/source/samples/networks/networks-multi-show-response.json new file mode 100644 index 000000000..03d96dc9b --- /dev/null +++ b/api-ref/source/samples/networks/networks-multi-show-response.json @@ -0,0 +1,25 @@ +{ + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "9bacb3c5d39d41a79512987f338cf177", + "qos_policy_id": "6a8454ade84346f59e8d40665f878b2e", + "segments": [ + { + "provider:segmentation_id": 2, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "vlan" + }, + { + "provider:segmentation_id": 0, + "provider:physical_network": "8bab8453-1bc9-45af-8c70-f83aa9b50453", + "provider:network_type": "stt" + } + ], + "router:external": false, + "shared": false, + "id": "4e8e5957-649f-477b-9e5b-f1f75b21c03c" + } +} diff --git a/api-ref/source/samples/networks/networks-provider-list-response.json b/api-ref/source/samples/networks/networks-provider-list-response.json new file mode 100644 index 000000000..2186274ae --- /dev/null +++ b/api-ref/source/samples/networks/networks-provider-list-response.json @@ -0,0 +1,44 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [ + "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private-network", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "provider:network_type": "local", + "mtu": 0, + "router:external": true, + "shared": true, + "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "provider:segmentation_id": null + }, + { + "status": "ACTIVE", + "subnets": [ + "08eae331-0402-425a-923c-34f7cfe39c1b" + ], + "availability_zone_hints": [], + "availability_zones": [ + "nova" + ], + "name": "private", + "provider:physical_network": null, + "admin_state_up": true, + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "provider:network_type": "local", + "mtu": 0, + "router:external": true, + "shared": true, + "id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "provider:segmentation_id": null + } + ] +} diff --git a/api-ref/source/samples/networks/networks-vlan-transparent-list-response.json b/api-ref/source/samples/networks/networks-vlan-transparent-list-response.json new file mode 100644 index 000000000..7f03116eb --- /dev/null +++ b/api-ref/source/samples/networks/networks-vlan-transparent-list-response.json @@ -0,0 +1,28 @@ +{ + "networks": [ + { + "status": "ACTIVE", + "subnets": [], + "name": "net1", + "admin_state_up": true, + "tenant_id": "e252a863-92ee-480f-8bd8-71be77089499", + "shared": false, + "router:external": false, + "vlan_transparent": true, + "id": "f5e6d63c-04a4-4b2c-8b27-a9854412d5a7" + }, + { + "status": "ACTIVE", + "subnets": [ + "3daba37a-bced-4153-a4bb-d83dcc0552d9" + ], + "name": "private", + "admin_state_up": true, + "tenant_id": "109e5fae-d976-4791-84c7-6ae0bb3896c3", + "shared": true, + "router:external": false, + "vlan_transparent": false, + "id": "37e11503-3244-49f1-b92a-9f21bab017d9" + } + ] +} diff --git a/api-ref/source/samples/networks/version-show-response.json b/api-ref/source/samples/networks/version-show-response.json new file mode 100644 index 000000000..ad6369afc --- /dev/null +++ b/api-ref/source/samples/networks/version-show-response.json @@ -0,0 +1,34 @@ +{ + "resources": [ + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/subnets", + "rel": "self" + } + ], + "name": "subnet", + "collection": "subnets" + }, + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/networks", + "rel": "self" + } + ], + "name": "network", + "collection": "networks" + }, + { + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0/ports", + "rel": "self" + } + ], + "name": "port", + "collection": "ports" + } + ] +} diff --git a/api-ref/source/samples/networks/versions-list-response.json b/api-ref/source/samples/networks/versions-list-response.json new file mode 100644 index 000000000..a20ed98c2 --- /dev/null +++ b/api-ref/source/samples/networks/versions-list-response.json @@ -0,0 +1,14 @@ +{ + "versions": [ + { + "status": "CURRENT", + "id": "v2.0", + "links": [ + { + "href": "http://23.253.228.211:9696/v2.0", + "rel": "self" + } + ] + } + ] +} diff --git a/api-ref/source/samples/ports/port-bind-create-update-response.json b/api-ref/source/samples/ports/port-bind-create-update-response.json new file mode 100644 index 000000000..fbb6e2789 --- /dev/null +++ b/api-ref/source/samples/ports/port-bind-create-update-response.json @@ -0,0 +1,28 @@ +{ + "port": { + "status": "DOWN", + "binding:host_id": "", + "name": "private-port", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "binding:vif_details": {}, + "binding:vnic_type": "normal", + "binding:vif_type": "unbound", + "device_owner": "", + "mac_address": "fa:16:3e:c9:cb:f0", + "binding:profile": {}, + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.2" + } + ], + "id": "65c0ee9f-d634-4522-8954-51021b570b0d", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } +} diff --git a/api-ref/source/samples/ports/port-bind-show-response.json b/api-ref/source/samples/ports/port-bind-show-response.json new file mode 100644 index 000000000..636e221cb --- /dev/null +++ b/api-ref/source/samples/ports/port-bind-show-response.json @@ -0,0 +1,31 @@ +{ + "port": { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "7e02058126cc4950b75f9970368ba177", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_interface", + "port_security_enabled": false, + "mac_address": "fa:16:3e:23:fd:d7", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.1" + } + ], + "id": "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2", + "security_groups": [], + "device_id": "5e3898d7-11be-483e-9732-b2f5eccd2b2e" + } +} diff --git a/api-ref/source/samples/ports/port-create-request.json b/api-ref/source/samples/ports/port-create-request.json new file mode 100644 index 000000000..2aabb12d0 --- /dev/null +++ b/api-ref/source/samples/ports/port-create-request.json @@ -0,0 +1,7 @@ +{ + "port": { + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "name": "private-port", + "admin_state_up": true + } +} diff --git a/api-ref/source/samples/ports/port-create-response.json b/api-ref/source/samples/ports/port-create-response.json new file mode 100644 index 000000000..736c5ac9f --- /dev/null +++ b/api-ref/source/samples/ports/port-create-response.json @@ -0,0 +1,23 @@ +{ + "port": { + "status": "DOWN", + "name": "private-port", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:c9:cb:f0", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.2" + } + ], + "id": "65c0ee9f-d634-4522-8954-51021b570b0d", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } +} diff --git a/api-ref/source/samples/ports/port-show-response.json b/api-ref/source/samples/ports/port-show-response.json new file mode 100644 index 000000000..d8d542de0 --- /dev/null +++ b/api-ref/source/samples/ports/port-show-response.json @@ -0,0 +1,24 @@ +{ + "port": { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "7e02058126cc4950b75f9970368ba177", + "created_at": "2016-03-08T20:19:41", + "extra_dhcp_opts": [], + "device_owner": "network:router_interface", + "mac_address": "fa:16:3e:23:fd:d7", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.1" + } + ], + "id": "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2", + "updated_at": "2016-03-08T20:19:41", + "security_groups": [], + "device_id": "5e3898d7-11be-483e-9732-b2f5eccd2b2e" + } +} diff --git a/api-ref/source/samples/ports/port-update-request.json b/api-ref/source/samples/ports/port-update-request.json new file mode 100644 index 000000000..f4397ae03 --- /dev/null +++ b/api-ref/source/samples/ports/port-update-request.json @@ -0,0 +1,8 @@ +{ + "port": { + "name": "test-for-port-update", + "admin_state_up": true, + "device_owner": "compute:nova", + "binding:host_id": "test_for_port_update_host" + } +} diff --git a/api-ref/source/samples/ports/port-update-response.json b/api-ref/source/samples/ports/port-update-response.json new file mode 100644 index 000000000..db2f9f70f --- /dev/null +++ b/api-ref/source/samples/ports/port-update-response.json @@ -0,0 +1,29 @@ +{ + "port": { + "status": "DOWN", + "binding:host_id": "test_for_port_update_host", + "allowed_address_pairs": [], + "extra_dhcp_opts": [], + "device_owner": "compute:nova", + "binding:profile": {}, + "fixed_ips": [ + { + "subnet_id": "898dec4a-74df-4193-985f-c76721bcc746", + "ip_address": "20.20.0.4" + } + ], + "id": "43c831e0-19ce-4a76-9a49-57b57e69428b", + "security_groups": [ + "ce0179d6-8a94-4f7c-91c2-f3038e2acbd0" + ], + "device_id": "", + "name": "test-for-port-update", + "admin_state_up": true, + "network_id": "883fc383-5ea1-4c8b-8916-e1ddb0a9f365", + "tenant_id": "522eda8d23124b25bf03fe44f1986b74", + "binding:vif_details": {}, + "binding:vnic_type": "normal", + "binding:vif_type": "binding_failed", + "mac_address": "fa:16:3e:11:11:5e" + } +} diff --git a/api-ref/source/samples/ports/ports-bind-show-response.json b/api-ref/source/samples/ports/ports-bind-show-response.json new file mode 100644 index 000000000..1737373ee --- /dev/null +++ b/api-ref/source/samples/ports/ports-bind-show-response.json @@ -0,0 +1,62 @@ +{ + "ports": [ + { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "70c1db1f-b701-45bd-96e0-a313ee3430b3", + "tenant_id": "", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_gateway", + "port_security_enabled": true, + "mac_address": "fa:16:3e:58:42:ed", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "008ba151-0b8c-4a67-98b5-0d2b87666062", + "ip_address": "172.24.4.2" + } + ], + "id": "d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + }, + { + "status": "ACTIVE", + "binding:host_id": "devstack", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "f27aa545-cbdd-4907-b0c6-c9e8b039dcc2", + "tenant_id": "d397de8a63f341818f198abb0966f6f3", + "extra_dhcp_opts": [], + "binding:vif_details": { + "port_filter": true, + "ovs_hybrid_plug": true + }, + "binding:vif_type": "ovs", + "device_owner": "network:router_interface", + "port_security_enabled": true, + "mac_address": "fa:16:3e:bb:3c:e4", + "binding:profile": {}, + "binding:vnic_type": "normal", + "fixed_ips": [ + { + "subnet_id": "288bf4a1-51ba-43b6-9d0a-520e9005db17", + "ip_address": "10.0.0.1" + } + ], + "id": "f71a6703-d6de-4be1-a91a-a570ede1d159", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + } + ] +} diff --git a/api-ref/source/samples/ports/ports-bulk-create-request.json b/api-ref/source/samples/ports/ports-bulk-create-request.json new file mode 100644 index 000000000..1ded596cd --- /dev/null +++ b/api-ref/source/samples/ports/ports-bulk-create-request.json @@ -0,0 +1,14 @@ +{ + "ports": [ + { + "name": "sample_port_1", + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7" + }, + { + "name": "sample_port_2", + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7" + } + ] +} diff --git a/api-ref/source/samples/ports/ports-bulk-create-response.json b/api-ref/source/samples/ports/ports-bulk-create-response.json new file mode 100644 index 000000000..82df3e635 --- /dev/null +++ b/api-ref/source/samples/ports/ports-bulk-create-response.json @@ -0,0 +1,46 @@ +{ + "ports": [ + { + "status": "DOWN", + "name": "sample_port_1", + "allowed_address_pairs": [], + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:48:b8:9f", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.5" + } + ], + "id": "94225baa-9d3f-4b93-bf12-b41e7ce49cdb", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + }, + { + "status": "DOWN", + "name": "sample_port_2", + "allowed_address_pairs": [], + "admin_state_up": false, + "network_id": "a87cc70a-3e15-4acf-8205-9b711a3531b7", + "tenant_id": "d6700c0c9ffa4f1cb322cd4a1f3906fa", + "device_owner": "", + "mac_address": "fa:16:3e:f4:73:df", + "fixed_ips": [ + { + "subnet_id": "a0304c3a-4f08-4c43-88af-d796509c97d2", + "ip_address": "10.0.0.6" + } + ], + "id": "235b09e0-63c4-47f1-b221-66ba54c21760", + "security_groups": [ + "f0ac4394-7e4a-4409-9701-ba8be283dbc3" + ], + "device_id": "" + } + ] +} diff --git a/api-ref/source/samples/ports/ports-list-response.json b/api-ref/source/samples/ports/ports-list-response.json new file mode 100644 index 000000000..81e2db1ef --- /dev/null +++ b/api-ref/source/samples/ports/ports-list-response.json @@ -0,0 +1,44 @@ +{ + "ports": [ + { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "70c1db1f-b701-45bd-96e0-a313ee3430b3", + "tenant_id": "", + "extra_dhcp_opts": [], + "device_owner": "network:router_gateway", + "mac_address": "fa:16:3e:58:42:ed", + "fixed_ips": [ + { + "subnet_id": "008ba151-0b8c-4a67-98b5-0d2b87666062", + "ip_address": "172.24.4.2" + } + ], + "id": "d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + }, + { + "status": "ACTIVE", + "name": "", + "allowed_address_pairs": [], + "admin_state_up": true, + "network_id": "f27aa545-cbdd-4907-b0c6-c9e8b039dcc2", + "tenant_id": "d397de8a63f341818f198abb0966f6f3", + "extra_dhcp_opts": [], + "device_owner": "network:router_interface", + "mac_address": "fa:16:3e:bb:3c:e4", + "fixed_ips": [ + { + "subnet_id": "288bf4a1-51ba-43b6-9d0a-520e9005db17", + "ip_address": "10.0.0.1" + } + ], + "id": "f71a6703-d6de-4be1-a91a-a570ede1d159", + "security_groups": [], + "device_id": "9ae135f4-b6e0-4dad-9e91-3c223e385824" + } + ] +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rule-create-request.json b/api-ref/source/samples/qos/bandwidth_limit_rule-create-request.json new file mode 100644 index 000000000..8234acf10 --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rule-create-request.json @@ -0,0 +1,5 @@ +{ + "bandwidth_limit_rule": { + "max_kbps": "10000" + } +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rule-create-response.json b/api-ref/source/samples/qos/bandwidth_limit_rule-create-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rule-create-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rule-show-response.json b/api-ref/source/samples/qos/bandwidth_limit_rule-show-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rule-show-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rule-update-request.json b/api-ref/source/samples/qos/bandwidth_limit_rule-update-request.json new file mode 100644 index 000000000..8234acf10 --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rule-update-request.json @@ -0,0 +1,5 @@ +{ + "bandwidth_limit_rule": { + "max_kbps": "10000" + } +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rule-update-response.json b/api-ref/source/samples/qos/bandwidth_limit_rule-update-response.json new file mode 100644 index 000000000..3ac737e93 --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rule-update-response.json @@ -0,0 +1,8 @@ +{ + "bandwidth_limit_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } +} diff --git a/api-ref/source/samples/qos/bandwidth_limit_rules-list-response.json b/api-ref/source/samples/qos/bandwidth_limit_rules-list-response.json new file mode 100644 index 000000000..f4cd1200b --- /dev/null +++ b/api-ref/source/samples/qos/bandwidth_limit_rules-list-response.json @@ -0,0 +1,10 @@ +{ + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ] +} diff --git a/api-ref/source/samples/qos/dscp_marking_rule-create-request.json b/api-ref/source/samples/qos/dscp_marking_rule-create-request.json new file mode 100644 index 000000000..f33c4df8a --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rule-create-request.json @@ -0,0 +1,5 @@ +{ + "dscp_marking_rule": { + "dscp_mark": "26" + } +} diff --git a/api-ref/source/samples/qos/dscp_marking_rule-create-response.json b/api-ref/source/samples/qos/dscp_marking_rule-create-response.json new file mode 100644 index 000000000..8dbd95de9 --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rule-create-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } +} diff --git a/api-ref/source/samples/qos/dscp_marking_rule-show-response.json b/api-ref/source/samples/qos/dscp_marking_rule-show-response.json new file mode 100644 index 000000000..8dbd95de9 --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rule-show-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } +} diff --git a/api-ref/source/samples/qos/dscp_marking_rule-update-request.json b/api-ref/source/samples/qos/dscp_marking_rule-update-request.json new file mode 100644 index 000000000..8d56a5d38 --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rule-update-request.json @@ -0,0 +1,5 @@ +{ + "dscp_marking_rule": { + "dscp_mark": "16" + } +} diff --git a/api-ref/source/samples/qos/dscp_marking_rule-update-response.json b/api-ref/source/samples/qos/dscp_marking_rule-update-response.json new file mode 100644 index 000000000..ed16a0031 --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rule-update-response.json @@ -0,0 +1,7 @@ +{ + "dscp_marking_rule": { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "16" + } +} diff --git a/api-ref/source/samples/qos/dscp_marking_rules-list-response.json b/api-ref/source/samples/qos/dscp_marking_rules-list-response.json new file mode 100644 index 000000000..22c0707bc --- /dev/null +++ b/api-ref/source/samples/qos/dscp_marking_rules-list-response.json @@ -0,0 +1,9 @@ +{ + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] +} diff --git a/api-ref/source/samples/qos/policies-list-response.json b/api-ref/source/samples/qos/policies-list-response.json new file mode 100644 index 000000000..365f082ba --- /dev/null +++ b/api-ref/source/samples/qos/policies-list-response.json @@ -0,0 +1,26 @@ +{ + "policies": [ + { + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false, + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ], + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] + } + ] +} diff --git a/api-ref/source/samples/qos/policy-create-request.json b/api-ref/source/samples/qos/policy-create-request.json new file mode 100644 index 000000000..da99be2aa --- /dev/null +++ b/api-ref/source/samples/qos/policy-create-request.json @@ -0,0 +1,7 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false + } +} diff --git a/api-ref/source/samples/qos/policy-create-response.json b/api-ref/source/samples/qos/policy-create-response.json new file mode 100644 index 000000000..88e08b305 --- /dev/null +++ b/api-ref/source/samples/qos/policy-create-response.json @@ -0,0 +1,9 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "shared": false + } +} diff --git a/api-ref/source/samples/qos/policy-show-response.json b/api-ref/source/samples/qos/policy-show-response.json new file mode 100644 index 000000000..593001d45 --- /dev/null +++ b/api-ref/source/samples/qos/policy-show-response.json @@ -0,0 +1,24 @@ +{ + "policy": { + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false, + "bandwidth_limit_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c793", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "max_kbps": "10000", + "max_burst_kbps": "0" + } + ], + "dscp_marking_rules": [ + { + "id": "5f126d84-551a-4dcf-bb01-0e9c0df0c794", + "policy_id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "dscp_mark": "26" + } + ] + } +} diff --git a/api-ref/source/samples/qos/policy-update-request.json b/api-ref/source/samples/qos/policy-update-request.json new file mode 100644 index 000000000..da99be2aa --- /dev/null +++ b/api-ref/source/samples/qos/policy-update-request.json @@ -0,0 +1,7 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "shared": false + } +} diff --git a/api-ref/source/samples/qos/policy-update-response.json b/api-ref/source/samples/qos/policy-update-response.json new file mode 100644 index 000000000..88e08b305 --- /dev/null +++ b/api-ref/source/samples/qos/policy-update-response.json @@ -0,0 +1,9 @@ +{ + "policy": { + "name": "10Mbit", + "description": "This policy limits the ports to 10Mbit max.", + "id": "46ebaec0-0570-43ac-82f6-60d2b03168c4", + "tenant_id": "8d4c70a21fed4aeba121a1a429ba0d04", + "shared": false + } +} diff --git a/api-ref/source/samples/qos/rule_types-list-response.json b/api-ref/source/samples/qos/rule_types-list-response.json new file mode 100644 index 000000000..c2983a010 --- /dev/null +++ b/api-ref/source/samples/qos/rule_types-list-response.json @@ -0,0 +1,10 @@ +{ + "rule_types": [ + { + "type": "bandwidth_limit" + }, + { + "type": "dscp_marking" + } + ] +} diff --git a/api-ref/source/samples/quotas/quotas-list-for-tenant-response.json b/api-ref/source/samples/quotas/quotas-list-for-tenant-response.json new file mode 100644 index 000000000..f20326338 --- /dev/null +++ b/api-ref/source/samples/quotas/quotas-list-for-tenant-response.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 10, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/samples/quotas/quotas-list-response.json b/api-ref/source/samples/quotas/quotas-list-response.json new file mode 100644 index 000000000..e41e78c28 --- /dev/null +++ b/api-ref/source/samples/quotas/quotas-list-response.json @@ -0,0 +1,16 @@ +{ + "quotas": [ + { + "subnet": 10, + "network": 15, + "floatingip": 50, + "tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978", + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } + ] +} diff --git a/api-ref/source/samples/quotas/quotas-update-request.json b/api-ref/source/samples/quotas/quotas-update-request.json new file mode 100644 index 000000000..f20326338 --- /dev/null +++ b/api-ref/source/samples/quotas/quotas-update-request.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 10, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/samples/quotas/quotas-update-response.json b/api-ref/source/samples/quotas/quotas-update-response.json new file mode 100644 index 000000000..90892c626 --- /dev/null +++ b/api-ref/source/samples/quotas/quotas-update-response.json @@ -0,0 +1,13 @@ +{ + "quota": { + "subnet": 10, + "network": 15, + "floatingip": 50, + "subnetpool": -1, + "security_group_rule": 100, + "security_group": 10, + "router": 10, + "rbac_policy": -1, + "port": 50 + } +} diff --git a/api-ref/source/samples/routers/floating-ips-list-response.json b/api-ref/source/samples/routers/floating-ips-list-response.json new file mode 100644 index 000000000..808ec95d7 --- /dev/null +++ b/api-ref/source/samples/routers/floating-ips-list-response.json @@ -0,0 +1,24 @@ +{ + "floatingips": [ + { + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "status": "ACTIVE" + }, + { + "router_id": null, + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "fixed_ip_address": null, + "floating_ip_address": "172.24.4.227", + "port_id": null, + "id": "61cea855-49cb-4846-997d-801b70c71bdd", + "status": "DOWN" + } + ] +} diff --git a/api-ref/source/samples/routers/floatingip-create-request.json b/api-ref/source/samples/routers/floatingip-create-request.json new file mode 100644 index 000000000..72ed72fc2 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-create-request.json @@ -0,0 +1,6 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab" + } +} diff --git a/api-ref/source/samples/routers/floatingip-create-response.json b/api-ref/source/samples/routers/floatingip-create-response.json new file mode 100644 index 000000000..290eefee5 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-create-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "status": "ACTIVE", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de" + } +} diff --git a/api-ref/source/samples/routers/floatingip-disassociate-request.json b/api-ref/source/samples/routers/floatingip-disassociate-request.json new file mode 100644 index 000000000..1800d3276 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-disassociate-request.json @@ -0,0 +1,5 @@ +{ + "floatingip": { + "port_id": null + } +} diff --git a/api-ref/source/samples/routers/floatingip-disassociate-response.json b/api-ref/source/samples/routers/floatingip-disassociate-response.json new file mode 100644 index 000000000..6f97f9e4a --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-disassociate-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": null, + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": null, + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/samples/routers/floatingip-show-response.json b/api-ref/source/samples/routers/floatingip-show-response.json new file mode 100644 index 000000000..35c599bd8 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-show-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": "10.0.0.3", + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/samples/routers/floatingip-update-request.json b/api-ref/source/samples/routers/floatingip-update-request.json new file mode 100644 index 000000000..2772b5ad6 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-update-request.json @@ -0,0 +1,5 @@ +{ + "floatingip": { + "port_id": "fc861431-0e6c-4842-a0ed-e2363f9bc3a8" + } +} diff --git a/api-ref/source/samples/routers/floatingip-update-response.json b/api-ref/source/samples/routers/floatingip-update-response.json new file mode 100644 index 000000000..0ee097253 --- /dev/null +++ b/api-ref/source/samples/routers/floatingip-update-response.json @@ -0,0 +1,12 @@ +{ + "floatingip": { + "floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57", + "router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f", + "fixed_ip_address": "10.0.0.4", + "floating_ip_address": "172.24.4.228", + "tenant_id": "4969c491a3c74ee4af974e6d800c62de", + "status": "ACTIVE", + "port_id": "fc861431-0e6c-4842-a0ed-e2363f9bc3a8", + "id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7" + } +} diff --git a/api-ref/source/samples/routers/router-add-interface-request.json b/api-ref/source/samples/routers/router-add-interface-request.json new file mode 100644 index 000000000..107e6e4cc --- /dev/null +++ b/api-ref/source/samples/routers/router-add-interface-request.json @@ -0,0 +1,3 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/samples/routers/router-add-interface-response.json b/api-ref/source/samples/routers/router-add-interface-response.json new file mode 100644 index 000000000..7d235eff2 --- /dev/null +++ b/api-ref/source/samples/routers/router-add-interface-response.json @@ -0,0 +1,9 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1", + "tenant_id": "6ba032e4730d42e2ad928f430f5da33e", + "subnet_ids": [ + "a2f1f29d-571b-4533-907f-5803ab96ead1" + ], + "port_id": "3a44f4e5-1694-493a-a1fb-393881c673a4", + "id": "b0294d7e-7da4-4202-9882-2ab1de9dabc0" +} diff --git a/api-ref/source/samples/routers/router-create-request.json b/api-ref/source/samples/routers/router-create-request.json new file mode 100644 index 000000000..296bdb36c --- /dev/null +++ b/api-ref/source/samples/routers/router-create-request.json @@ -0,0 +1,16 @@ +{ + "router": { + "name": "another_router", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.1" + } + ] + }, + "admin_state_up": true + } +} diff --git a/api-ref/source/samples/routers/router-create-response.json b/api-ref/source/samples/routers/router-create-response.json new file mode 100644 index 000000000..69b398769 --- /dev/null +++ b/api-ref/source/samples/routers/router-create-response.json @@ -0,0 +1,22 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "another_router", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "distributed": false, + "routes": [], + "ha": false, + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e" + } +} diff --git a/api-ref/source/samples/routers/router-remove-interface-request.json b/api-ref/source/samples/routers/router-remove-interface-request.json new file mode 100644 index 000000000..107e6e4cc --- /dev/null +++ b/api-ref/source/samples/routers/router-remove-interface-request.json @@ -0,0 +1,3 @@ +{ + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/samples/routers/router-remove-interface-response.json b/api-ref/source/samples/routers/router-remove-interface-response.json new file mode 100644 index 000000000..572ff22d4 --- /dev/null +++ b/api-ref/source/samples/routers/router-remove-interface-response.json @@ -0,0 +1,6 @@ +{ + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e", + "tenant_id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7", + "port_id": "3a44f4e5-1694-493a-a1fb-393881c673a4", + "subnet_id": "a2f1f29d-571b-4533-907f-5803ab96ead1" +} diff --git a/api-ref/source/samples/routers/router-show-response.json b/api-ref/source/samples/routers/router-show-response.json new file mode 100644 index 000000000..f113fb764 --- /dev/null +++ b/api-ref/source/samples/routers/router-show-response.json @@ -0,0 +1,20 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "85d76829-6415-48ff-9c63-5c5ca8c61ac6", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "router1", + "admin_state_up": true, + "tenant_id": "d6554fe62e2f41efbb6e026fad5c1542", + "routes": [], + "id": "a07eea83-7710-4860-931b-5fe220fae533" + } +} diff --git a/api-ref/source/samples/routers/router-update-request.json b/api-ref/source/samples/routers/router-update-request.json new file mode 100644 index 000000000..b6c842232 --- /dev/null +++ b/api-ref/source/samples/routers/router-update-request.json @@ -0,0 +1,14 @@ +{ + "router": { + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.1" + } + ] + } + } +} diff --git a/api-ref/source/samples/routers/router-update-response.json b/api-ref/source/samples/routers/router-update-response.json new file mode 100644 index 000000000..69b398769 --- /dev/null +++ b/api-ref/source/samples/routers/router-update-response.json @@ -0,0 +1,22 @@ +{ + "router": { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "another_router", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "distributed": false, + "routes": [], + "ha": false, + "id": "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e" + } +} diff --git a/api-ref/source/samples/routers/routers-list-response.json b/api-ref/source/samples/routers/routers-list-response.json new file mode 100644 index 000000000..7e473fff2 --- /dev/null +++ b/api-ref/source/samples/routers/routers-list-response.json @@ -0,0 +1,31 @@ +{ + "routers": [ + { + "status": "ACTIVE", + "external_gateway_info": null, + "name": "second_routers", + "admin_state_up": true, + "tenant_id": "6b96ff0cb17a4b859e1e575d221683d3", + "routes": [], + "id": "7177abc4-5ae9-4bb7-b0d4-89e94a4abf3b" + }, + { + "status": "ACTIVE", + "external_gateway_info": { + "network_id": "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8", + "enable_snat": true, + "external_fixed_ips": [ + { + "subnet_id": "255.255.255.0", + "ip": "192.168.10.2" + } + ] + }, + "name": "router1", + "admin_state_up": true, + "tenant_id": "33a40233088643acb66ff6eb0ebea679", + "routes": [], + "id": "a9254bdb-2613-4a13-ac4c-adc581fba50d" + } + ] +} diff --git a/api-ref/source/samples/security-groups/security-group-create-request.json b/api-ref/source/samples/security-groups/security-group-create-request.json new file mode 100644 index 000000000..8a93ef934 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-create-request.json @@ -0,0 +1,6 @@ +{ + "security_group": { + "name": "new-webservers", + "description": "security group for webservers" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-create-response.json b/api-ref/source/samples/security-groups/security-group-create-response.json new file mode 100644 index 000000000..1ded3275c --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-create-response.json @@ -0,0 +1,34 @@ +{ + "security_group": { + "description": "security group for webservers", + "id": "2076db17-a522-4506-91de-c6dd8e837028", + "name": "new-webservers", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv4", + "id": "38ce2d8e-e8f1-48bd-83c2-d33cb9f50c3d", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "2076db17-a522-4506-91de-c6dd8e837028", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv6", + "id": "565b9502-12de-4ffd-91e9-68885cff6ae1", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "2076db17-a522-4506-91de-c6dd8e837028", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-delete-request-json-http.txt b/api-ref/source/samples/security-groups/security-group-delete-request-json-http.txt new file mode 100644 index 000000000..fa1441007 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-delete-request-json-http.txt @@ -0,0 +1,3 @@ +DELETE /v2.0/security-groups/e470bdfc-4869-459b-a561-cb3377efae59 +Content-Type: application/json +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-delete-response-json-http.txt b/api-ref/source/samples/security-groups/security-group-delete-response-json-http.txt new file mode 100644 index 000000000..f81fef7d2 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-rule-create-request.json b/api-ref/source/samples/security-groups/security-group-rule-create-request.json new file mode 100644 index 000000000..959be0fb8 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-create-request.json @@ -0,0 +1,11 @@ +{ + "security_group_rule": { + "direction": "ingress", + "port_range_min": "80", + "ethertype": "IPv4", + "port_range_max": "80", + "protocol": "tcp", + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "security_group_id": "a7734e61-b545-452d-a3cd-0189cbd9747a" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-rule-create-response.json b/api-ref/source/samples/security-groups/security-group-rule-create-response.json new file mode 100644 index 000000000..500d06eee --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-create-response.json @@ -0,0 +1,14 @@ +{ + "security_group_rule": { + "direction": "ingress", + "ethertype": "IPv4", + "id": "2bc0accf-312e-429a-956e-e4407625eb62", + "port_range_max": 80, + "port_range_min": 80, + "protocol": "tcp", + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "a7734e61-b545-452d-a3cd-0189cbd9747a", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-rule-delete-request-json-http.txt b/api-ref/source/samples/security-groups/security-group-rule-delete-request-json-http.txt new file mode 100644 index 000000000..920073aa7 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-delete-request-json-http.txt @@ -0,0 +1,3 @@ +DELETE /v2.0/security-group-rules/fc3c327a-b5b5-4cd3-9577-52893289ce08 +Content-Type: application/json +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-rule-delete-response-json-http.txt b/api-ref/source/samples/security-groups/security-group-rule-delete-response-json-http.txt new file mode 100644 index 000000000..f81fef7d2 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-delete-response-json-http.txt @@ -0,0 +1 @@ +status: 204 \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-rule-show-request-json-http.txt b/api-ref/source/samples/security-groups/security-group-rule-show-request-json-http.txt new file mode 100644 index 000000000..fb321ba32 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-show-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-group-rules/ 3c0e45ff-adaf-4124-b083-bf390e5482ff +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-rule-show-response.json b/api-ref/source/samples/security-groups/security-group-rule-show-response.json new file mode 100644 index 000000000..7225101fb --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rule-show-response.json @@ -0,0 +1,14 @@ +{ + "security_group_rule": { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-rules-list-request-json-http.txt b/api-ref/source/samples/security-groups/security-group-rules-list-request-json-http.txt new file mode 100644 index 000000000..a0a7038a9 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rules-list-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-group-rules/ +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-rules-list-response.json b/api-ref/source/samples/security-groups/security-group-rules-list-response.json new file mode 100644 index 000000000..fbdeddf05 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-rules-list-response.json @@ -0,0 +1,52 @@ +{ + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ] +} diff --git a/api-ref/source/samples/security-groups/security-group-show-request-json-http.txt b/api-ref/source/samples/security-groups/security-group-show-request-json-http.txt new file mode 100644 index 000000000..56592f327 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-show-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-groups/85cc3048-abc3-43cc-89b3-377341426ac5 +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-group-show-response.json b/api-ref/source/samples/security-groups/security-group-show-response.json new file mode 100644 index 000000000..126b5d20c --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-show-response.json @@ -0,0 +1,58 @@ +{ + "security_group": { + "description": "default", + "id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "name": "default", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-update-request.json b/api-ref/source/samples/security-groups/security-group-update-request.json new file mode 100644 index 000000000..67bfda27c --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-update-request.json @@ -0,0 +1,6 @@ +{ + "security_group": { + "name": "mysecgroup", + "description": "my security group" + } +} diff --git a/api-ref/source/samples/security-groups/security-group-update-response.json b/api-ref/source/samples/security-groups/security-group-update-response.json new file mode 100644 index 000000000..8062d2373 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-group-update-response.json @@ -0,0 +1,9 @@ +{ + "security_group": { + "rules": [], + "tenant_id": "a52cdb9cc7854a39a23d3af73a40899e", + "id": "01fbade5-b664-42f6-83ae-4e214f4263fa", + "name": "mysecgroup", + "description": "my security group" + } +} diff --git a/api-ref/source/samples/security-groups/security-groups-list-request-json-http.txt b/api-ref/source/samples/security-groups/security-groups-list-request-json-http.txt new file mode 100644 index 000000000..aa8497822 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-groups-list-request-json-http.txt @@ -0,0 +1,2 @@ +GET /v2.0/security-groups +Accept: application/json \ No newline at end of file diff --git a/api-ref/source/samples/security-groups/security-groups-list-response.json b/api-ref/source/samples/security-groups/security-groups-list-response.json new file mode 100644 index 000000000..331792e60 --- /dev/null +++ b/api-ref/source/samples/security-groups/security-groups-list-response.json @@ -0,0 +1,60 @@ +{ + "security_groups": [ + { + "description": "default", + "id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "name": "default", + "security_group_rules": [ + { + "direction": "egress", + "ethertype": "IPv6", + "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "egress", + "ethertype": "IPv4", + "id": "93aa42e5-80db-4581-9391-3a608bd0e448", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": null, + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv6", + "id": "c0b09f00-1d49-4e64-a0a7-8a186d928138", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + }, + { + "direction": "ingress", + "ethertype": "IPv4", + "id": "f7d45c89-008e-4bab-88ad-d6811724c51c", + "port_range_max": null, + "port_range_min": null, + "protocol": null, + "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "remote_ip_prefix": null, + "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ], + "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550" + } + ] +} diff --git a/api-ref/source/samples/service-type-response.json b/api-ref/source/samples/service-type-response.json new file mode 100644 index 000000000..276a82684 --- /dev/null +++ b/api-ref/source/samples/service-type-response.json @@ -0,0 +1,9 @@ +{ + "service_providers": [ + { + "service_type": "LOADBALANCER", + "default": true, + "name": "haproxy" + } + ] +} diff --git a/api-ref/source/samples/subnets/subnet-create-request.json b/api-ref/source/samples/subnets/subnet-create-request.json new file mode 100644 index 000000000..d12c6ddb6 --- /dev/null +++ b/api-ref/source/samples/subnets/subnet-create-request.json @@ -0,0 +1,7 @@ +{ + "subnet": { + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "ip_version": 4, + "cidr": "10.0.0.1" + } +} diff --git a/api-ref/source/samples/subnets/subnet-create-response.json b/api-ref/source/samples/subnets/subnet-create-response.json new file mode 100644 index 000000000..a01f8be91 --- /dev/null +++ b/api-ref/source/samples/subnets/subnet-create-response.json @@ -0,0 +1,20 @@ +{ + "subnet": { + "name": "", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.168.199.2", + "end": "192.168.199.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.168.199.1", + "cidr": "192.168.199.0/24", + "id": "3b80198d-4f7b-4f77-9ef5-774d54e17126" + } +} diff --git a/api-ref/source/samples/subnets/subnet-show-response.json b/api-ref/source/samples/subnets/subnet-show-response.json new file mode 100644 index 000000000..482beb09a --- /dev/null +++ b/api-ref/source/samples/subnets/subnet-show-response.json @@ -0,0 +1,22 @@ +{ + "subnet": { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "created_at": "2016-03-08T20:19:41", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.0.0.2", + "end": "192.255.255.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.0.0.1", + "cidr": "192.0.0.0/8", + "updated_at": "2016-03-08T20:19:41", + "id": "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + } +} diff --git a/api-ref/source/samples/subnets/subnet-update-request.json b/api-ref/source/samples/subnets/subnet-update-request.json new file mode 100644 index 000000000..0481b471b --- /dev/null +++ b/api-ref/source/samples/subnets/subnet-update-request.json @@ -0,0 +1,5 @@ +{ + "subnet": { + "name": "my_subnet" + } +} diff --git a/api-ref/source/samples/subnets/subnet-update-response.json b/api-ref/source/samples/subnets/subnet-update-response.json new file mode 100644 index 000000000..0364c5219 --- /dev/null +++ b/api-ref/source/samples/subnets/subnet-update-response.json @@ -0,0 +1,20 @@ +{ + "subnet": { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "10.0.0.2", + "end": "10.0.0.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "10.0.0.1", + "cidr": "10.0.0.0/24", + "id": "08eae331-0402-425a-923c-34f7cfe39c1b" + } +} diff --git a/api-ref/source/samples/subnets/subnetpool-create-request.json b/api-ref/source/samples/subnets/subnetpool-create-request.json new file mode 100644 index 000000000..4058fea94 --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpool-create-request.json @@ -0,0 +1,13 @@ +{ + "subnetpool": { + "name": "my-subnet-pool", + "prefixes": [ + "192.168.0.0/16", + "10.10.0.0/21" + ], + "default_prefixlen": 25, + "min_prefixlen": 24, + "max_prefixlen": 30, + "shared": "false" + } +} diff --git a/api-ref/source/samples/subnets/subnetpool-create-response.json b/api-ref/source/samples/subnets/subnetpool-create-response.json new file mode 100644 index 000000000..3053b35ad --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpool-create-response.json @@ -0,0 +1,19 @@ +{ + "subnetpool": { + "min_prefixlen": "24", + "address_scope_id": null, + "default_prefixlen": "25", + "id": "f49a1319-423a-4ee6-ba54-1d95a4f6cc68", + "max_prefixlen": "30", + "name": "my-subnet-pool", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "10.10.0.0/21", + "192.168.0.0/16" + ], + "ip_version": 4, + "shared": false + } +} diff --git a/api-ref/source/samples/subnets/subnetpool-show-response.json b/api-ref/source/samples/subnets/subnetpool-show-response.json new file mode 100644 index 000000000..df1819254 --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpool-show-response.json @@ -0,0 +1,21 @@ +{ + "subnetpool": { + "min_prefixlen": "64", + "address_scope_id": null, + "default_prefixlen": "64", + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": "64", + "name": "my-subnet-pool", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "created_at": "2016-03-08T20:19:41", + "prefixes": [ + "2001:db8:0:2::/64", + "2001:db8::/63" + ], + "updated_at": "2016-03-08T20:19:41", + "ip_version": 6, + "shared": false + } +} diff --git a/api-ref/source/samples/subnets/subnetpool-update-request.json b/api-ref/source/samples/subnets/subnetpool-update-request.json new file mode 100644 index 000000000..2c9bceffb --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpool-update-request.json @@ -0,0 +1,13 @@ +{ + "subnetpool": { + "name": "my-new-subnetpool-name", + "prefixes": [ + "2001:db8::/64", + "2001:db8:0:1::/64", + "2001:db8:0:2::/64" + ], + "min_prefixlen": 64, + "default_prefixlen": 64, + "max_prefixlen": 64 + } +} diff --git a/api-ref/source/samples/subnets/subnetpool-update-response.json b/api-ref/source/samples/subnets/subnetpool-update-response.json new file mode 100644 index 000000000..f12fd15e1 --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpool-update-response.json @@ -0,0 +1,19 @@ +{ + "subnetpool": { + "name": "my-new-subnetpool-name", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "2001:db8::/63", + "2001:db8:0:2::/64" + ], + "min_prefixlen": 64, + "address_scope_id": null, + "ip_version": 6, + "shared": false, + "default_prefixlen": 64, + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": 64 + } +} diff --git a/api-ref/source/samples/subnets/subnetpools-list-response.json b/api-ref/source/samples/subnets/subnetpools-list-response.json new file mode 100644 index 000000000..d6d5a9eef --- /dev/null +++ b/api-ref/source/samples/subnets/subnetpools-list-response.json @@ -0,0 +1,38 @@ +{ + "subnetpools": [ + { + "min_prefixlen": "64", + "address_scope_id": null, + "default_prefixlen": "64", + "id": "03f761e6-eee0-43fc-a921-8acf64c14988", + "max_prefixlen": "64", + "name": "my-subnet-pool-ipv6", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "2001:db8:0:2::/64", + "2001:db8::/63" + ], + "ip_version": 6, + "shared": false + }, + { + "min_prefixlen": "24", + "address_scope_id": null, + "default_prefixlen": "25", + "id": "f49a1319-423a-4ee6-ba54-1d95a4f6cc68", + "max_prefixlen": "30", + "name": "my-subnet-pool-ipv4", + "default_quota": null, + "is_default": false, + "tenant_id": "9fadcee8aa7c40cdb2114fff7d569c08", + "prefixes": [ + "10.10.0.0/21", + "192.168.0.0/16" + ], + "ip_version": 4, + "shared": false + } + ] +} diff --git a/api-ref/source/samples/subnets/subnets-create-bulk-request.json b/api-ref/source/samples/subnets/subnets-create-bulk-request.json new file mode 100644 index 000000000..0bb8460b6 --- /dev/null +++ b/api-ref/source/samples/subnets/subnets-create-bulk-request.json @@ -0,0 +1,14 @@ +{ + "subnets": [ + { + "cidr": "192.168.199.0/24", + "ip_version": 4, + "network_id": "e6031bc2-901a-4c66-82da-f4c32ed89406" + }, + { + "cidr": "10.56.4.0/22", + "ip_version": 4, + "network_id": "64239a54-dcc4-4b39-920b-b37c2144effa" + } + ] +} diff --git a/api-ref/source/samples/subnets/subnets-create-bulk-response.json b/api-ref/source/samples/subnets/subnets-create-bulk-response.json new file mode 100644 index 000000000..f9f7ea91c --- /dev/null +++ b/api-ref/source/samples/subnets/subnets-create-bulk-response.json @@ -0,0 +1,40 @@ +{ + "subnets": [ + { + "allocation_pools": [ + { + "end": "192.168.199.254", + "start": "192.168.199.2" + } + ], + "cidr": "192.168.199.0/24", + "dns_nameservers": [], + "enable_dhcp": true, + "gateway_ip": "192.168.199.1", + "host_routes": [], + "id": "0468a7a7-290d-4127-aedd-6c9449775a24", + "ip_version": 4, + "name": "", + "network_id": "e6031bc2-901a-4c66-82da-f4c32ed89406", + "tenant_id": "d19231fc08ec4bc4829b668040d34512" + }, + { + "allocation_pools": [ + { + "end": "10.56.7.254", + "start": "10.56.4.2" + } + ], + "cidr": "10.56.4.0/22", + "dns_nameservers": [], + "enable_dhcp": true, + "gateway_ip": "10.56.4.1", + "host_routes": [], + "id": "b0e7435c-1512-45fb-aa9e-9a7c5932fb30", + "ip_version": 4, + "name": "", + "network_id": "64239a54-dcc4-4b39-920b-b37c2144effa", + "tenant_id": "d19231fc08ec4bc4829b668040d34512" + } + ] +} diff --git a/api-ref/source/samples/subnets/subnets-list-response.json b/api-ref/source/samples/subnets/subnets-list-response.json new file mode 100644 index 000000000..2c5ba82ab --- /dev/null +++ b/api-ref/source/samples/subnets/subnets-list-response.json @@ -0,0 +1,40 @@ +{ + "subnets": [ + { + "name": "private-subnet", + "enable_dhcp": true, + "network_id": "db193ab3-96e3-4cb3-8fc5-05f4296d0324", + "tenant_id": "26a7980765d0414dbc1fc1f88cdb7e6e", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "10.0.0.2", + "end": "10.0.0.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "10.0.0.1", + "cidr": "10.0.0.0/24", + "id": "08eae331-0402-425a-923c-34f7cfe39c1b" + }, + { + "name": "my_subnet", + "enable_dhcp": true, + "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22", + "tenant_id": "4fd44f30292945e481c7b8a0c8908869", + "dns_nameservers": [], + "allocation_pools": [ + { + "start": "192.0.0.2", + "end": "192.255.255.254" + } + ], + "host_routes": [], + "ip_version": 4, + "gateway_ip": "192.0.0.1", + "cidr": "192.0.0.0/8", + "id": "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" + } + ] +} diff --git a/api-ref/source/samples/tag/tag-update-request.json b/api-ref/source/samples/tag/tag-update-request.json new file mode 100644 index 000000000..f047e8e6f --- /dev/null +++ b/api-ref/source/samples/tag/tag-update-request.json @@ -0,0 +1,6 @@ +{ + "tags": [ + "red", + "blue" + ] +} diff --git a/api-ref/source/samples/tag/tag-update-response.json b/api-ref/source/samples/tag/tag-update-response.json new file mode 100644 index 000000000..f047e8e6f --- /dev/null +++ b/api-ref/source/samples/tag/tag-update-response.json @@ -0,0 +1,6 @@ +{ + "tags": [ + "red", + "blue" + ] +} diff --git a/api-ref/source/samples/vpn/ikepolicies-list-response.json b/api-ref/source/samples/vpn/ikepolicies-list-response.json new file mode 100644 index 000000000..db649fd2b --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicies-list-response.json @@ -0,0 +1,19 @@ +{ + "ikepolicies": [ + { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } + ] +} diff --git a/api-ref/source/samples/vpn/ikepolicy-create-request.json b/api-ref/source/samples/vpn/ikepolicy-create-request.json new file mode 100644 index 000000000..87cf674a2 --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicy-create-request.json @@ -0,0 +1,14 @@ +{ + "ikepolicy": { + "phase1_negotiation_mode": "main", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "ike_version": "v1", + "name": "ikepolicy1" + } +} diff --git a/api-ref/source/samples/vpn/ikepolicy-create-response.json b/api-ref/source/samples/vpn/ikepolicy-create-response.json new file mode 100644 index 000000000..4e2c98bcd --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicy-create-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ikepolicy-show-response.json b/api-ref/source/samples/vpn/ikepolicy-show-response.json new file mode 100644 index 000000000..a13ee52c4 --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicy-show-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ikepolicy-update-request.json b/api-ref/source/samples/vpn/ikepolicy-update-request.json new file mode 100644 index 000000000..99a74aff9 --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicy-update-request.json @@ -0,0 +1,5 @@ +{ + "ikepolicy": { + "encryption_algorithm": "aes-256" + } +} diff --git a/api-ref/source/samples/vpn/ikepolicy-update-response.json b/api-ref/source/samples/vpn/ikepolicy-update-response.json new file mode 100644 index 000000000..a13ee52c4 --- /dev/null +++ b/api-ref/source/samples/vpn/ikepolicy-update-response.json @@ -0,0 +1,17 @@ +{ + "ikepolicy": { + "name": "ikepolicy1", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "auth_algorithm": "sha1", + "encryption_algorithm": "aes-256", + "pfs": "group5", + "phase1_negotiation_mode": "main", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "ike_version": "v1", + "id": "5522aff7-1b3c-48dd-9c3c-b50f016b73db", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connection-create-request.json b/api-ref/source/samples/vpn/ipsec-site-connection-create-request.json new file mode 100644 index 000000000..584a748cd --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connection-create-request.json @@ -0,0 +1,16 @@ +{ + "ipsec_site_connection": { + "psk": "secret", + "initiator": "bi-directional", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "admin_state_up": true, + "mtu": "1500", + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "name": "vpnconnection1" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connection-create-response.json b/api-ref/source/samples/vpn/ipsec-site-connection-create-response.json new file mode 100644 index 000000000..3bc5b2457 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connection-create-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "PENDING_CREATE", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connection-show-response.json b/api-ref/source/samples/vpn/ipsec-site-connection-show-response.json new file mode 100644 index 000000000..0c0d6baaf --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connection-show-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "DOWN", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.226", + "peer_id": "172.24.4.226", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connection-update-request.json b/api-ref/source/samples/vpn/ipsec-site-connection-update-request.json new file mode 100644 index 000000000..16ef5cef4 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connection-update-request.json @@ -0,0 +1,5 @@ +{ + "ipsec_site_connection": { + "mtu": "2000" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connection-update-response.json b/api-ref/source/samples/vpn/ipsec-site-connection-update-response.json new file mode 100644 index 000000000..a66cf851a --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connection-update-response.json @@ -0,0 +1,28 @@ +{ + "ipsec_site_connection": { + "status": "DOWN", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 2000, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.233", + "peer_id": "172.24.4.233", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "New description" + } +} diff --git a/api-ref/source/samples/vpn/ipsec-site-connections-list-response.json b/api-ref/source/samples/vpn/ipsec-site-connections-list-response.json new file mode 100644 index 000000000..1ae875f72 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsec-site-connections-list-response.json @@ -0,0 +1,30 @@ +{ + "ipsec_site_connections": [ + { + "status": "PENDING CREATE", + "psk": "secret", + "initiator": "bi-directional", + "name": "vpnconnection1", + "admin_state_up": true, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "auth_mode": "psk", + "peer_cidrs": [], + "mtu": 1500, + "peer_ep_group_id": "9ad5a7e0-6dac-41b4-b20d-a7b8645fddf1", + "ikepolicy_id": "9b00d6b0-6c93-4ca5-9747-b8ade7bb514f", + "vpnservice_id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "dpd": { + "action": "hold", + "interval": 30, + "timeout": 120 + }, + "route_mode": "static", + "ipsecpolicy_id": "e6e23d0c-9519-4d52-8ea4-5b1f96d857b1", + "local_ep_group_id": "3e1815dd-e212-43d0-8f13-b494fa553e68", + "peer_address": "172.24.4.226", + "peer_id": "172.24.4.226", + "id": "851f280f-5639-4ea3-81aa-e298525ab74b", + "description": "" + } + ] +} diff --git a/api-ref/source/samples/vpn/ipsecpolicies-list-response.json b/api-ref/source/samples/vpn/ipsecpolicies-list-response.json new file mode 100644 index 000000000..a79ad6ab5 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicies-list-response.json @@ -0,0 +1,19 @@ +{ + "ipsecpolicies": [ + { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } + ] +} diff --git a/api-ref/source/samples/vpn/ipsecpolicy-create-request.json b/api-ref/source/samples/vpn/ipsecpolicy-create-request.json new file mode 100644 index 000000000..0ed0215f4 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicy-create-request.json @@ -0,0 +1,14 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "lifetime": { + "units": "seconds", + "value": 7200 + } + } +} diff --git a/api-ref/source/samples/vpn/ipsecpolicy-create-response.json b/api-ref/source/samples/vpn/ipsecpolicy-create-response.json new file mode 100644 index 000000000..64dcfd7d6 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicy-create-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group5", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 7200 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ipsecpolicy-show-response.json b/api-ref/source/samples/vpn/ipsecpolicy-show-response.json new file mode 100644 index 000000000..6290c7c92 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicy-show-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/ipsecpolicy-update-request.json b/api-ref/source/samples/vpn/ipsecpolicy-update-request.json new file mode 100644 index 000000000..9b2a816b0 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicy-update-request.json @@ -0,0 +1,5 @@ +{ + "ipsecpolicy": { + "pfs": "group14" + } +} diff --git a/api-ref/source/samples/vpn/ipsecpolicy-update-response.json b/api-ref/source/samples/vpn/ipsecpolicy-update-response.json new file mode 100644 index 000000000..6290c7c92 --- /dev/null +++ b/api-ref/source/samples/vpn/ipsecpolicy-update-response.json @@ -0,0 +1,17 @@ +{ + "ipsecpolicy": { + "name": "ipsecpolicy1", + "transform_protocol": "esp", + "auth_algorithm": "sha1", + "encapsulation_mode": "tunnel", + "encryption_algorithm": "aes-128", + "pfs": "group14", + "tenant_id": "ccb81365fe36411a9011e90491fe1330", + "lifetime": { + "units": "seconds", + "value": 3600 + }, + "id": "5291b189-fd84-46e5-84bd-78f40c05d69c", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-group-create-request.json b/api-ref/source/samples/vpn/vpn-endpoint-group-create-request.json new file mode 100644 index 000000000..ea22109c3 --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-group-create-request.json @@ -0,0 +1,10 @@ +{ + "endpoint_group": { + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "name": "peers" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-group-create-response.json b/api-ref/source/samples/vpn/vpn-endpoint-group-create-response.json new file mode 100644 index 000000000..5a447c74b --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-group-create-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-group-show-response.json b/api-ref/source/samples/vpn/vpn-endpoint-group-show-response.json new file mode 100644 index 000000000..5a447c74b --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-group-show-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-group-update-request.json b/api-ref/source/samples/vpn/vpn-endpoint-group-update-request.json new file mode 100644 index 000000000..2b60b9667 --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-group-update-request.json @@ -0,0 +1,5 @@ +{ + "endpoint_group": { + "description": "New description" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-group-update-response.json b/api-ref/source/samples/vpn/vpn-endpoint-group-update-response.json new file mode 100644 index 000000000..179114956 --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-group-update-response.json @@ -0,0 +1,13 @@ +{ + "endpoint_group": { + "description": "New description", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } +} diff --git a/api-ref/source/samples/vpn/vpn-endpoint-groups-list-response.json b/api-ref/source/samples/vpn/vpn-endpoint-groups-list-response.json new file mode 100644 index 000000000..b4170a464 --- /dev/null +++ b/api-ref/source/samples/vpn/vpn-endpoint-groups-list-response.json @@ -0,0 +1,25 @@ +{ + "endpoint_groups": [ + { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "a3da778c-adfb-46db-88b3-d2ce53290a89" + ], + "type": "subnet", + "id": "6bf34c7c-864c-4948-a6d4-db791669f9d4", + "name": "locals" + }, + { + "description": "", + "tenant_id": "4ad57e7ce0b24fca8f12b9834d91079d", + "endpoints": [ + "10.2.0.0/24", + "10.3.0.0/24" + ], + "type": "cidr", + "id": "6ecd9cf3-ca64-46c7-863f-f2eb1b9e838a", + "name": "peers" + } + ] +} diff --git a/api-ref/source/samples/vpn/vpnservice-create-request.json b/api-ref/source/samples/vpn/vpnservice-create-request.json new file mode 100644 index 000000000..01828b80a --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservice-create-request.json @@ -0,0 +1,8 @@ +{ + "vpnservice": { + "subnet_id": null, + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "name": "myservice", + "admin_state_up": true + } +} diff --git a/api-ref/source/samples/vpn/vpnservice-create-response.json b/api-ref/source/samples/vpn/vpnservice-create-response.json new file mode 100644 index 000000000..583c0ccf6 --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservice-create-response.json @@ -0,0 +1,14 @@ +{ + "vpnservice": { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/vpnservice-show-response.json b/api-ref/source/samples/vpn/vpnservice-show-response.json new file mode 100644 index 000000000..583c0ccf6 --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservice-show-response.json @@ -0,0 +1,14 @@ +{ + "vpnservice": { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } +} diff --git a/api-ref/source/samples/vpn/vpnservice-update-request.json b/api-ref/source/samples/vpn/vpnservice-update-request.json new file mode 100644 index 000000000..1e80c517e --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservice-update-request.json @@ -0,0 +1,5 @@ +{ + "vpnservice": { + "description": "Updated description" + } +} diff --git a/api-ref/source/samples/vpn/vpnservice-update-response.json b/api-ref/source/samples/vpn/vpnservice-update-response.json new file mode 100644 index 000000000..cb152c8fb --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservice-update-response.json @@ -0,0 +1,12 @@ +{ + "vpnservice": { + "router_id": "881b7b30-4efb-407e-a162-5630a7af3595", + "status": "ACTIVE", + "name": "myvpn", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "26de9cd6cae94c8cb9f79d660d628e1f", + "id": "41bfef97-af4e-4f6b-a5d3-4678859d2485", + "description": "Updated description" + } +} diff --git a/api-ref/source/samples/vpn/vpnservices-list-response.json b/api-ref/source/samples/vpn/vpnservices-list-response.json new file mode 100644 index 000000000..c30b5007c --- /dev/null +++ b/api-ref/source/samples/vpn/vpnservices-list-response.json @@ -0,0 +1,16 @@ +{ + "vpnservices": [ + { + "router_id": "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", + "status": "PENDING_CREATE", + "name": "myservice", + "external_v6_ip": "2001:db8::1", + "admin_state_up": true, + "subnet_id": null, + "tenant_id": "10039663455a446d8ba2cbb058b0f578", + "external_v4_ip": "172.32.1.11", + "id": "5c561d9d-eaea-45f6-ae3e-08d1a7080828", + "description": "" + } + ] +} diff --git a/api-ref/source/v2-ext/extensions.inc b/api-ref/source/v2-ext/extensions.inc new file mode 100644 index 000000000..268d70e65 --- /dev/null +++ b/api-ref/source/v2-ext/extensions.inc @@ -0,0 +1,81 @@ +.. -*- rst -*- + +========== +Extensions +========== + +Lists available Networking API v2.0 extensions and shows details +for an extension. + +List extensions +=============== + +.. rest_method:: GET /v2.0/extensions + +Lists available extensions. + +Extensions introduce features and vendor-specific functionality to +the API. + +The response shows the extension name and its alias. To show +details for an extension, you specify the alias. + +Normal response codes: 200 +Error response codes:203, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - description: description + - links: links + - alias: alias + - extension: extension + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/extensions/extensions-list-response.json + :language: javascript + +Show extension details +====================== + +.. rest_method:: GET /v2.0/extensions/{alias} + +Shows details for an extension, by alias. + +Normal response codes: 200 +Error response codes:203, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - alias: alias + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - updated: updated + - description: description + - links: links + - alias: alias + - extension: extension + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/extensions/extension-show-response.json + :language: javascript + diff --git a/api-ref/source/v2-ext/extraroute.inc b/api-ref/source/v2-ext/extraroute.inc new file mode 100644 index 000000000..26ed0d7c7 --- /dev/null +++ b/api-ref/source/v2-ext/extraroute.inc @@ -0,0 +1,78 @@ +.. -*- rst -*- + +====================== +Extra routes (routers) +====================== + +Adds extra routes to the ``router`` resource. + +You can update a router to add a set of next hop IPs and +destination CIDRs. + +The next hop IP must be part of a subnet to which the router +interfaces are connected. You can configure the ``routes`` +attribute on only update operations. + +Update extra routes +=================== + +.. rest_method:: PUT /v2.0/routers/{router_id} + +Updates extra routes on a router. + +The next hop IP address must be a part of one of the subnets to +which the router interfaces are connected. Otherwise, the server +responds with the ``Bad Request (400)`` error code. + +When a validation error is detected, such as a format error of IP +address or CIDR, the server responds with the ``Bad Request (400)`` +response code. + +When Networking receives a request to delete the router interface +for subnets that are used by one or more routes, it responds with a +``Conflict (409)`` response code. + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - destination: destination + - nexthop: nexthop + - routes: routes + - router: router + - external_fixed_ips: external_fixed_ips + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - routes: routes + - router: router + - id: id + - external_fixed_ips: external_fixed_ips + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-update-response.json + :language: javascript + diff --git a/api-ref/source/v2-ext/flavors-framework-v2.0.inc b/api-ref/source/v2-ext/flavors-framework-v2.0.inc new file mode 100644 index 000000000..c68f58c84 --- /dev/null +++ b/api-ref/source/v2-ext/flavors-framework-v2.0.inc @@ -0,0 +1,480 @@ +.. -*- rst -*- + +===================================================================== +Networking Flavors Framework v2.0 (CURRENT) (flavor, service_profile) +===================================================================== + +Extension that allows user selection of operator-curated flavors +during resource creation. + +Service ``q-flavors`` must be enabled in the configuration to use +this feature. + +Disassociate a flavor. +====================== + +.. rest_method:: DELETE /v2.0/flavors/{flavor_id}/service_profiles/{profile_id} + +Disassociate a flavor from a service profile. + +Error response codes:404,403,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + - flavor_id: flavor_id + +Show service profile details +============================ + +.. rest_method:: GET /v2.0/service_profiles/{profile_id} + +Shows details for a service profile. + +This operation returns a service profile object by ID. If you are +not an administrative user and the object is not visible to your +tenant account, the service returns the HTTP ``Forbidden (403)`` +response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profile-show-response.json + :language: javascript + +Update service profile +====================== + +.. rest_method:: PUT /v2.0/service_profiles/{profile_id} + +Updates a service profile. + +Normal response codes: 200 +Error response codes:404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - enabled: enabled + - driver: driver + - description: description + - metainfo: metainfo + - profile_id: profile_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/service-profile-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profile-update-response.json + :language: javascript + +Delete service profile +====================== + +.. rest_method:: DELETE /v2.0/service_profiles/{profile_id} + +Deletes a service profile. + +Attempting to delete a service profile that is currently associated +with a flavor will return a ``Conflict 409`` with a response body +containing an in use message. + +Error response codes:409,404,403,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - profile_id: profile_id + +List service profiles +===================== + +.. rest_method:: GET /v2.0/service_profiles + +Lists all service profiles visible for the tenant account. + +The list can be empty. + +Standard query parameters are supported on the URI. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profiles: service_profiles + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/service-profiles-list-response.json + :language: javascript + +Create service profile +====================== + +.. rest_method:: POST /v2.0/service_profiles + +Creates a service profile. + +This operation establishes a new service profile that can be +associated with one or more flavors. + +Either metadata or a driver is required. + +If a driver is specified but does not exist, call will return a +``Not found 404`` error with the response body explaining that the +driver could not be found. + +Creation currently limited to administrators. Other users will +receive a ``Forbidden 403`` response code with a response body +NeutronError message expressing that creation is disallowed by +policy. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Error response codes:201,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - enabled: enabled + - driver: driver + - description: description + - metainfo: metainfo + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/service-profile-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - driver: driver + - enabled: enabled + - metainfo: metainfo + - service_profile: service_profile + - id: id + +List flavors +============ + +.. rest_method:: GET /v2.0/flavors + +Lists all flavors visible for the tenant account. + +The list can be empty. + +Standard query parameters are supported on the URI. For example, +``fields`` can be used to limit the returned response to just name +by appending ``?fields=name``. If Neutron configuration supports +pagination by overriding allow_pagination = false, the ``marker`` +query parameter can set the last element id the client has seen and +``limit`` set the maximum number of items to return. if Neutron +configuration has allow_sorting = true, ``sort_key`` and +``sort_dir`` pairs can be used where sort direction is 'asc' or +'desc'. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - flavors: flavors + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavors-list-response.json + :language: javascript + +Create flavor +============= + +.. rest_method:: POST /v2.0/flavors + +Creates a flavor. + +This operation establishes a new flavor. + +The service_type to which the flavor applies is a required +parameter. The corresponding service plugin must have been +activated as part of the configuration. See `Service providers +`_ for how to see currently loaded service types. Additionally +the service plugin needs to support the use of flavors. For +example, the LOADBALANCERV2 service type using the LBaaSv2 API +currently supports Neutron service flavors. + +Creation currently limited to administrators. Other users will +receive a ``Forbidden 403`` response code with a response body +NeutronError message expressing that creation is disallowed by +policy. + +Until one or more service profiles are associated with the flavor +by the operator, attempts to use the flavor during resource +creations will currently return a ``Not Found 404`` with a response +body that indicates no service profile could be found. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Error response codes:201,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_type: service_type + - flavor: flavor + - enabled: enabled + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + +Associate flavor +================ + +.. rest_method:: POST /v2.0/flavors/{flavor_id}/service_profiles + +Associate a flavor with a service profile. + +A flavor can be associated with more than one profile. + +Will return ``409 Conflict`` if association already exists. + +Error response codes:201,404,403,401,400,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - id: id + - flavor_id: flavor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-associate-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - service_profile: service_profile + - id: id + +Show flavor details +=================== + +.. rest_method:: GET /v2.0/flavors/{flavor_id} + +Shows details for a flavor. + +This operation returns a flavor object by ID. If you are not an +administrative user and the flavor object is not visible to your +tenant account, the service returns the HTTP ``Forbidden (403)`` +response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor_id: flavor_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavor-show-response.json + :language: javascript + +Update flavor +============= + +.. rest_method:: PUT /v2.0/flavors/{flavor_id} + +Updates a flavor. + +The service_type cannot be updated as there may be associated +service profiles and consumers depending on the value. + +Normal response codes: 200 +Error response codes:404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor: flavor + - enabled: enabled + - description: description + - name: name + - flavor_id: flavor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/flavors/flavor-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - enabled: enabled + - service_profiles: service_profiles + - service_type: service_type + - flavor: flavor + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/flavors/flavor-update-response.json + :language: javascript + +Delete flavor +============= + +.. rest_method:: DELETE /v2.0/flavors/{flavor_id} + +Deletes a flavor. + +Error response codes:404,403,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - flavor_id: flavor_id + diff --git a/api-ref/source/v2-ext/fwaas-v2.0.inc b/api-ref/source/v2-ext/fwaas-v2.0.inc new file mode 100644 index 000000000..dc9a0d942 --- /dev/null +++ b/api-ref/source/v2-ext/fwaas-v2.0.inc @@ -0,0 +1,730 @@ +.. -*- rst -*- + +======================================================================= +FWaaS v2.0 (CURRENT) (fw, firewalls, firewall_policies, firewall_rules) +======================================================================= + +Use the Firewall-as-a-Service (FWaaS) v2.0 extension to deploy +firewalls to protect your networks. + +The FWaaS extension enables you to: + +- Apply firewall rules on traffic entering and leaving tenant + networks. + +- Apply TCP, UDP, ICMP, or protocol-agnostic rules. + +- Create and share firewall policies that hold an ordered collection + of the firewall rules. + +- Audit firewall rules and policies. + +This extension introduces these resources: + +- ``firewall``. A logical firewall resource that a tenant can + instantiate and manage. A firewall can have one firewall policy. + +- ``firewall_policy``. An ordered collection of firewall rules. You + can share a firewall policy across tenants. You can include a + firewall policy as part of an audit workflow so that an + authorized relevant entity can audit the firewall policy. This + entity can differ from the tenant who created, or the tenants + that use, the firewall policy. + +- ``firewall_rule``. A collection of attributes, such as ports and + IP addresses. These attributes define match criteria and an + action to take, such as allow or deny, on matched data traffic. + +Insert rule into a firewall policy +================================== + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id}/insert_rule + +Insert firewall rule into a policy. + +A firewall_rule_id is inserted relative to the position of the +firewall_rule_id set in ``insert_before`` or ``insert_after``. If +``insert_before`` is set, ``insert_after`` is ignored. If both +``insert_before`` and ``insert_after`` are not set, the new +firewall_rule_id is inserted at the top of the policy. + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - insert_after: insert_after + - firewall_rule_id: firewall_rule_id + - insert_before: insert_before + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-insert-rule-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - firewall_list: firewall_list + - audited: audited + - shared: shared + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-insert-rule-response.json + :language: javascript + +Show firewall policy details +============================ + +.. rest_method:: GET /v2.0/fw/firewall_policies/{firewall_policy_id} + +Shows details for a firewall policy. + +If the user is not an administrative user and the firewall policy +object does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-show-response.json + :language: javascript + +Update firewall policy +====================== + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id} + +Updates a firewall policy. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-update-response.json + :language: javascript + +Delete firewall policy +====================== + +.. rest_method:: DELETE /v2.0/fw/firewall_policies/{firewall_policy_id} + +Deletes a firewall policy. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy_id: firewall_policy_id + +List firewall policies +====================== + +.. rest_method:: GET /v2.0/fw/firewall_policies + +Lists all firewall policies. + +The list might be empty. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - firewall_policies: firewall_policies + - shared: shared + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policies-list-response.json + :language: javascript + +Create firewall policy +====================== + +.. rest_method:: POST /v2.0/fw/firewall_policies + +Creates a firewall policy. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rules_id: firewall_rules_id + - firewall_policy: firewall_policy + - name: name + - tenant_id: tenant_id + - shared: shared + - audited: audited + - description: description + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_policy: firewall_policy + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - audited: audited + - shared: shared + - id: id + - description: description + +Show firewall rule details +========================== + +.. rest_method:: GET /v2.0/fw/firewall_rules/{firewall_rule_id} + +Shows details for a firewall rule. + +If the user is not an administrative user and the firewall rule +object does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-show-response.json + :language: javascript + +Update firewall rule +==================== + +.. rest_method:: PUT /v2.0/fw/firewall_rules/{firewall_rule_id} + +Updates a firewall rule. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - tenant_id: tenant_id + - enabled: enabled + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - source_port: source_port + - shared: shared + - action: action + - protocol: protocol + - destination_port: destination_port + - name: name + - firewall_rule_id: firewall_rule_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-update-response.json + :language: javascript + +Delete firewall rule +==================== + +.. rest_method:: DELETE /v2.0/fw/firewall_rules/{firewall_rule_id} + +Deletes a firewall rule. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + +Show firewall details +===================== + +.. rest_method:: GET /v2.0/fw/firewalls/{firewall_id} + +Shows details for a firewall. + +If the user is not an administrative user and the firewall object +does not belong to the tenant account, this call returns the +``Forbidden (403)`` response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_id: firewall_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-show-response.json + :language: javascript + +Update firewall +=============== + +.. rest_method:: PUT /v2.0/fw/firewalls/{firewall_id} + +Updates a firewall. + +To update a service, the service status cannot be a ``PENDING_*`` +status. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - firewall_policy_id: firewall_policy_id + - name: name + - firewall_id: firewall_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-update-response.json + :language: javascript + +Delete firewall +=============== + +.. rest_method:: DELETE /v2.0/fw/firewalls/{firewall_id} + +Deletes a firewall. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_id: firewall_id + +List firewall rules +=================== + +.. rest_method:: GET /v2.0/fw/firewall_rules + +Lists all firewall rules. + +The list might be empty. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol: protocol + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - id: id + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - source_port: source_port + - firewalls: firewalls + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-rules-list-response.json + :language: javascript + +Create firewall rule +==================== + +.. rest_method:: POST /v2.0/fw/firewall_rules + +Creates a firewall rule. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - tenant_id: tenant_id + - enabled: enabled + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - source_port: source_port + - shared: shared + - action: action + - protocol: protocol + - destination_port: destination_port + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-rule-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule: firewall_rule + - description: description + - source_ip_address: source_ip_address + - tenant_id: tenant_id + - enabled: enabled + - protocol: protocol + - source_port: source_port + - ip_version: ip_version + - destination_ip_address: destination_ip_address + - firewall_policy_id: firewall_policy_id + - shared: shared + - action: action + - position: position + - destination_port: destination_port + - id: id + - name: name + +List firewalls +============== + +.. rest_method:: GET /v2.0/fw/firewalls + +Lists all firewalls. + +The list might be empty. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - firewalls: firewalls + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewalls-list-response.json + :language: javascript + +Create firewall +=============== + +.. rest_method:: POST /v2.0/fw/firewalls + +Creates a firewall. + +The firewall must be associated with a firewall policy. + +If ``admin_state_up`` is ``false``, the firewall would block all +traffic. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - firewall_policy_id: firewall_policy_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router_ids: router_ids + - description: description + - admin_state_up: admin_state_up + - firewall: firewall + - tenant_id: tenant_id + - firewall_policy_id: firewall_policy_id + - id: id + - name: name + +Remove rule from firewall policy +================================ + +.. rest_method:: PUT /v2.0/fw/firewall_policies/{firewall_policy_id}/remove_rule + +Remove firewall rule from a policy. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - firewall_rule_id: firewall_rule_id + - firewall_policy_id: firewall_policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-remove-rule-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - firewall_rules: firewall_rules + - tenant_id: tenant_id + - firewall_list: firewall_list + - audited: audited + - shared: shared + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/firewalls/firewall-policy-remove-rule-response.json + :language: javascript + diff --git a/api-ref/source/v2-ext/index.rst b/api-ref/source/v2-ext/index.rst new file mode 100644 index 000000000..302344f44 --- /dev/null +++ b/api-ref/source/v2-ext/index.rst @@ -0,0 +1,25 @@ +:tocdepth: 2 + +############################## +Networking API v2.0 extensions +############################## + +.. include:: extensions.inc +.. include:: tag-ext.inc +.. include:: network-provider.inc +.. include:: networking-ip-availability-ext.inc +.. include:: networks-multi-provider-ext.inc +.. include:: networks-vlan-transparency-ext.inc +.. include:: port-binding.inc +.. include:: qos-ext.inc +.. include:: quotas.inc +.. include:: security-groups.inc +.. include:: security_group_rules.inc +.. include:: subnetpools-ext.inc +.. include:: layer3-ext.inc +.. include:: extraroute.inc +.. include:: metering-labels-ext.inc +.. include:: flavors-framework-v2.0.inc +.. include:: lbaas.inc +.. include:: fwaas-v2.0.inc +.. include:: vpnaas.inc diff --git a/api-ref/source/v2-ext/layer3-ext.inc b/api-ref/source/v2-ext/layer3-ext.inc new file mode 100644 index 000000000..77ddbbdde --- /dev/null +++ b/api-ref/source/v2-ext/layer3-ext.inc @@ -0,0 +1,727 @@ +.. -*- rst -*- + +========================================= +Layer-3 networking (routers, floatingips) +========================================= + +Routes packets between subnets, forwards packets from internal +networks to external ones, and accesses instances from external +networks through floating IPs. + +This extension introduces these resources: + +- **router**. A logical entity for forwarding packets across + internal subnets and NATting them on external networks through an + appropriate external gateway. + +- **floatingip**. An external IP address that you map to a port in + an internal network. + +List floating IPs +================= + +.. rest_method:: GET /v2.0/floatingips + +Lists floating IPs that are accessible to the tenant who submits the request. + +Default policy settings return only those floating IPs that are +owned by the tenant who submits the request, unless an admin user +submits the request. + +This example request lists floating IPs in JSON format: + +:: + + GET /v2.0/floatingips + Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. Additionally, you can filter results +by using query string parameters. For information, see `Filtering +and Column Selection `__. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + - floatingips: floatingips + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floating-ips-list-response.json + :language: javascript + +Create floating IP +================== + +.. rest_method:: POST /v2.0/floatingips + +Creates a floating IP, and, if you specify port information, associates the floating IP with an internal port. + +To associate the floating IP with an internal port, specify the +port UUID attribute in the request body. If you do not specify a +port UUID in the request, you can issue a PUT request instead of a +POST request. + +Default policy settings enable only administrative users to set +floating IP addresses and some non-administrative users might +require a floating IP address. If you do not specify a floating IP +address in the request, the operation automatically allocates one. + +By default, this operation associates the floating IP address with +a single fixed IP address that is configured on an OpenStack +Networking port. If a port has multiple IP addresses, you must +specify the ``fixed_ip_address`` attribute in the request body to +associate a fixed IP address with the floating IP address. + +You can create floating IPs on only external networks. When you +create a floating IP, you must specify the UUID of the network on +which you want to create the floating IP. Alternatively, you can +create a floating IP on a subnet in the external network, based on +the costs and quality of that subnet. + +You must configure an IP address with the internal OpenStack +Networking port that is associated with the floating IP address. + +Error codes: + +- ``400`` The operation returns this error code for one of these + reasons: + + - The network is not external, such as ``router:external=False``. + + - The internal OpenStack Networking port is not associated with the + floating IP address. + + - The requested floating IP address does not fall in the subnet + range for the external network. + + - The fixed IP address is not valid. + +- ``401`` The operation is not authorized. + +- ``404`` The port UUID is not valid. + +- ``409`` The operation returns this error code for one of these + reasons: + + - The requested floating IP address is already in use. + + - The internal OpenStack Networking port and fixed IP address are + already associated with another floating IP. + +Error response codes:201,404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/floatingip-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + +Add interface to router +======================= + +.. rest_method:: PUT /v2.0/routers/{router_id}/add_router_interface + +Adds an internal interface to a logical router. + +Attaches a subnet to an internal router interface. + +Specify the UUID of a subnet or port in the request body: + +- Subnet UUID. The gateway IP address for the subnet is used to + create the router interface. + +- Port UUID. The IP address associated with the port is used to + create the router interface. + +When you specify an IPv6 subnet, this operation adds the subnet to +an existing internal port with same network UUID, on the router. If +a port with the same network UUID does not exist, this operation +creates a port on the router for that subnet. + +The limitation of one IPv4 subnet per router port remains, though a +port can contain any number of IPv6 subnets that belong to the same +network UUID. + +When you use the ``port-create`` command to add a port and then +call ``router-interface-add`` with this port UUID, this operation +adds the port to the router if the following conditions are met: + +- The port has no more than one IPv4 subnet. + + The IPv6 subnets, if any, on the port do not have same network + UUID as the network UUID of IPv6 subnets on any other ports. + +If you specify both UUIDs, this operation returns the ``Bad Request +(400)`` response code. + +If the port is already in use, this operation returns the +``Conflict (409)`` response code. + +This operation returns a port UUID that is either: + +- The same UUID that is passed in the request body. + +- The UUID of a port that this operation creates to attach the + subnet to the router. + +After you run this operation, the operation sets: + +- The device UUID of this port to the router UUID. + +- The ``device_owner`` attribute to ``network:router_interface``. + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - port_id: port_id + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-add-interface-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - tenant_id: tenant_id + - port_id: port_id + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-add-interface-response.json + :language: javascript + +Delete interface from router +============================ + +.. rest_method:: PUT /v2.0/routers/{router_id}/remove_router_interface + +Deletes an internal interface from a logical router. + +This operation deletes an internal router interface, which detaches +a subnet from the router. If this subnet UUID is the last subnet on +the port, this operation deletes the port itself. You must specify +either a subnet UUID or port UUID in the request body; the +operation uses this value to identify which router interface to +deletes. + +You can also specify both a subnet UUID and port UUID. If you +specify both UUIDs, the subnet UUID must correspond to the subnet +UUID of the first IP address on the port. Otherwise, this operation +returns the ``Conflict (409)`` response code with information about +the affected router and interface. + +If the router or the subnet and port do not exist or are not +visible to you, this operation returns the ``Not Found (404)`` +response code. As a consequence of this operation, the operation +removes the port connecting the router with the subnet from the +subnet for the network. + +This example deletes an interface from a router: + +:: + + PUT /v2.0/routers/{router_id}/remove_router_interface Accept: application/json + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - port_id: port_id + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-remove-interface-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + - tenant_id: tenant_id + - port_id: port_id + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-remove-interface-response.json + :language: javascript + +Show floating IP details +======================== + +.. rest_method:: GET /v2.0/floatingips/{floatingip_id} + +Shows details for a floating IP. + +Use the ``fields`` query parameter to control which fields are +returned in the response body. For information, see `Filtering and +Column Selection `__. + +This example request shows details for a floating IP in JSON +format. This example also filters the result by the +``fixed_ip_address`` and ``floating_ip_address`` fields. + +:: + + GET /v2.0/floatingips/{floatingip_id}?fields=fixed_ip_address + & + fields=floating_ip_address + Accept: application/json + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip_id: floatingip_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floatingip-show-response.json + :language: javascript + +Update floating IP +================== + +.. rest_method:: PUT /v2.0/floatingips/{floatingip_id} + +Updates a floating IP and its association with an internal port. + +The association process is the same as the process for the create +floating IP operation. + +To disassociate a floating IP from a port, set the ``port_id`` +attribute to null or omit it from the request body. + +This example updates a floating IP: + +:: + + PUT /v2.0/floatingips/{floatingip_id} Accept: application/json + +Depending on the request body that you submit, this request +associates a port with or disassociates a port from a floating IP. + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + - floatingip: floatingip + - floatingip_id: floatingip_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/floatingip-disassociate-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - floatingip: floatingip + - tenant_id: tenant_id + - floating_network_id: floating_network_id + - fixed_ip_address: fixed_ip_address + - floating_ip_address: floating_ip_address + - port_id: port_id + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/floatingip-disassociate-response.json + :language: javascript + +Delete floating IP +================== + +.. rest_method:: DELETE /v2.0/floatingips/{floatingip_id} + +Deletes a floating IP and, if present, its associated port. + +This example deletes a floating IP: + +:: + + DELETE /v2.0/floatingips/{floatingip_id} Accept: application/json + +Error response codes:404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - floatingip_id: floatingip_id + +Show router details +=================== + +.. rest_method:: GET /v2.0/routers/{router_id} + +Shows details for a router. + +This example request shows details for a router in JSON format: + +:: + + GET /v2.0/routers/{router_id} Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. For information, see `Filtering and +Column Selection `__. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-show-response.json + :language: javascript + +Update router +============= + +.. rest_method:: PUT /v2.0/routers/{router_id} + +Updates a logical router. + +You can update the name, administrative state, and the external +gateway. For more information about how to set the external gateway +for a router, see the create router operation. This operation does +not enable the update of router interfaces. To update a router, use +the add router interface and remove router interface operations. + +This example updates the external gateway information for a router: + +:: + + PUT /v2.0/routers/{router_id} Accept: application/json + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - router: router + - external_fixed_ips: external_fixed_ips + - router_id: router_id + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/router-update-response.json + :language: javascript + +Delete router +============= + +.. rest_method:: DELETE /v2.0/routers/{router_id} + +Deletes a logical router and, if present, its external gateway interface. + +This operation fails if the router has attached interfaces. + +Use the remove router interface operation to remove all router +interfaces before you delete the router. + +This example deletes a router: + +:: + + DELETE /v2.0/routers/{router_id} Accept: application/json + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + +List routers +============ + +.. rest_method:: GET /v2.0/routers + +Lists logical routers that the tenant who submits the request can access. + +Default policy settings return only those routers that the tenant +who submits the request owns, unless an administrative user submits +the request. + +This example request lists routers in JSON format: + +:: + + GET /v2.0/routers Accept: application/json + +Use the ``fields`` query parameter to control which fields are +returned in the response body. Additionally, you can filter results +by using query string parameters. For information, see `Filtering +and Column Selection `__. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - routers: routers + - distributed: distributed + - enable_snat: enable_snat + - tenant_id: tenant_id + - routes: routes + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + +Response Example +---------------- + +.. literalinclude:: ../samples/routers/routers-list-response.json + :language: javascript + +Create router +============= + +.. rest_method:: POST /v2.0/routers + +Creates a logical router. + +This operation creates a logical router. The logical router does +not have any internal interface and it is not associated with any +subnet. You can optionally specify an external gateway for a router +at create time. The external gateway for the router must be plugged +into an external network. An external network has its +``router:external`` extended field set to ``true``. To specify an +external gateway, the UUID of the external network must be passed +in the ``external_gateway_info`` attribute in the request body, as +follows: + +.. code-block:: json + + { + "router": { + "external_gateway_info": { + "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b" + } + } + } + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - enable_snat: enable_snat + - name: name + - admin_state_up: admin_state_up + - router: router + - external_fixed_ips: external_fixed_ips + +Request Example +--------------- + +.. literalinclude:: ../samples/routers/router-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - external_gateway_info: external_gateway_info + - status: status + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - distributed: distributed + - enable_snat: enable_snat + - routes: routes + - router: router + - ha: ha + - id: id + - external_fixed_ips: external_fixed_ips + diff --git a/api-ref/source/v2-ext/lbaas.inc b/api-ref/source/v2-ext/lbaas.inc new file mode 100644 index 000000000..2ab5dbc48 --- /dev/null +++ b/api-ref/source/v2-ext/lbaas.inc @@ -0,0 +1,2302 @@ +.. -*- rst -*- + +================================================================== +LBaaS 1.0 (DEPRECATED) (lb, vips, health_monitors, pools, members) +================================================================== + +The Load-Balancer-as-a-Service (LBaaS) v1.0 extension pairs with +the Networking v2.0 API to enable OpenStack tenants to manage load +balancers for their VMs. With this extension, you can load-balance +client traffic from one network to application services, such as +VMs, on the same network. + +Use this extension to create and manage virtual IP addresses +(VIPs), pools, members of a pool, health monitors, and view status +of a resource. + +**Load balancer statuses** + ++----------------+--------------------------------------------------------------------+ +| Status | Description | ++----------------+--------------------------------------------------------------------+ +| ACTIVE | The resource is ready and active. | ++----------------+--------------------------------------------------------------------+ +| PENDING_CREATE | The resource is being created. | ++----------------+--------------------------------------------------------------------+ +| PENDING_UPDATE | The resource is being updated. | ++----------------+--------------------------------------------------------------------+ +| PENDING_DELETE | The resource is pending deletion. | ++----------------+--------------------------------------------------------------------+ +| INACTIVE | The resource is not active. | ++----------------+--------------------------------------------------------------------+ +| ERROR | An object within the service is not working. The ``error_details`` | +| | attribute provides an explanation for the error, its cause, and | +| | possibly a solution. | ++----------------+--------------------------------------------------------------------+ + +List members +============ + +.. rest_method:: GET /v2.0/lb/members + +Lists members. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - members: members + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/members-list-response.json + :language: javascript + +Create a load balancer member +============================= + +.. rest_method:: POST /v2.0/lb/members + +Creates a load balancer member. + +Error response codes:201,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +Show load balancer status tree +============================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers/{loadbalancer_id}/statuses + +Shows the status tree for a load balancer. + +This operation returns a status tree for a load balancer object, by +load balancer ID. If you are not an administrative user and the +load balancer object does not belong to the tenant account, the API +returns the ``Forbidden (403)`` response code. + +If the operation succeeds, the returned element is a status tree +that contains the load balancer and all provisioning and operating +statuses for its children. + +Normal response codes: 200 +Error response codes:403,401,413,503,500, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - provisioning_status: provisioning_status + - listeners: listeners + - healthmonitor: healthmonitor + - members: members + - pools: pools + - id: id + - operating_status: operating_status + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-status-tree.json + :language: javascript + +Show listener details +===================== + +.. rest_method:: GET /v2.0/lbaas/listeners/{listener_id} + +Shows details for a listener. + +This operation returns a listener object, by ID. If you are not an +administrative user and the listener object does not belong to your +account, the API returns the HTTP ``Forbidden (403)`` response +code. + +Example: Show listener details + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listener-show-response.json + :language: javascript + +Update listener +=============== + +.. rest_method:: PUT /v2.0/lbaas/listeners/{listener_id} + +Updates a listener. + +This operation updates the attributes of a listener. Upon +successful validation of the request, the service returns the HTTP +``Accepted (202)`` response code. + +Note: You cannot update the ``listener_id``, ``tenant_id``, +``loadbalancer_id``, ``loadbalancers``, ``default_pool_id``, +``protocol``, and ``protocol_port`` attributes. Attempting to +update an immutable attribute results in the HTTP ``Immutable +(422)`` response code. + +Note: You cannot update a listener if the load balancer to which +the listener is attached does not have an ``ACTIVE`` provisioning +status. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - loadbalancer_id: loadbalancer_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/listener-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listener-update-response.json + :language: javascript + +Remove listener +=============== + +.. rest_method:: DELETE /v2.0/lbaas/listeners/{listener_id} + +Removes a listener. + +This operation removes a listener and its associated configuration +from the tenant account. The API immediately purges any and all +configuration data. You cannot recover it. + +You cannot delete a listener if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + +Example: Delete a listener + +Error response codes:204,400,409,401,413,503,500, + +Request +------- + +Show health monitor details +=========================== + +.. rest_method:: GET /v2.0/lbaas/health_monitors/{health_monitor_id} + +Shows details for a health monitor. + +This operation returns a health monitor object, by health monitor +ID. If you are not an administrative user and the health monitor +object does not belong to your tenant account, the service returns +the HTTP ``Forbidden (403)`` response code. + +Example: Show health monitor details + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-show-response.json + :language: javascript + +Update health monitor +===================== + +.. rest_method:: PUT /v2.0/lbaas/health_monitors/{health_monitor_id} + +Updates a health monitor. + +Upon successful validation of the request, the service returns the +HTTP ``Accepted (202)`` response code. + +Note: The health monitor UUID, ``tenant_id``, ``pool_id``, and type +are immutable attributes and cannot be updated. If you specify an +unsupported attribute, the service returns the HTTP ``Immutable +(422)`` response code. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-response.json + :language: javascript + +Remove health monitor +===================== + +.. rest_method:: DELETE /v2.0/lbaas/health_monitors/{health_monitor_id} + +Removes a health monitor and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +You cannot delete a health monitor if the attached load balancer +does not have an ``ACTIVE`` provisioning status. + +Example: Delete a health monitor + +Error response codes:204,400,409,401,413,503,500, + +Request +------- + +Show member details +=================== + +.. rest_method:: GET /v2.0/lb/members/{member_id} + +Shows details for a member. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member_id: member_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-show-response.json + :language: javascript + +Update member +============= + +.. rest_method:: PUT /v2.0/lb/members/{member_id} + +Updates a load balancer member. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - pool_id: pool_id + - weight: weight + - admin_state_up: admin_state_up + - member_id: member_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-update-response.json + :language: javascript + +Delete member +============= + +.. rest_method:: DELETE /v2.0/lb/members/{member_id} + +Deletes a load balancer member. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member_id: member_id + +Show pool member details +======================== + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Shows details for a pool member. + +This operation returns a member object identified by ``member_id`` +that belongs to a pool object identified by ``pool_id``. If you are +not an administrative user and the pool or member object does not +belong to your tenant account, the service returns the HTTP +``Forbidden (403)`` response code. + +If this operation succeeds, it returns a pool element. + +Example: Show pool member details + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-show-response.json + :language: javascript + +Update pool member +================== + +.. rest_method:: PUT /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Updates attributes for a pool member. + +Upon successful validation of the request, the service returns the +HTTP ``OK (200)`` response code. + +Note: You cannot update the member UUID, ``tenant_id``, +``address``, ``protocol_port``, and ``subnet_id`` attributes. If +you attempt to update any of these attributes, the service returns +the HTTP ``Immutable (422)`` response code. + +Note: You cannot update a member if the attached load balancer does +not have an ``ACTIVE`` provisioning status. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - pool_id: pool_id + - weight: weight + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/member-update-response.json + :language: javascript + +Remove member from pool +======================= + +.. rest_method:: DELETE /v2.0/lbaas/pools/{pool_id}/members/{member_id} + +Removes a member from a pool and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +You cannot delete a member if the attached load balancer does not +have an ``ACTIVE`` provisioning status. + +Example: Remove a member from a pool + +Error response codes:204,400,409,401,413,503,500, + +Request +------- + +Add member to pool +================== + +.. rest_method:: POST /v2.0/lbaas/pools/{pool_id}/members + +Adds a member to a pool. + +This operation provisions a member and adds it to a pool by using +the configuration that you define in the request object. After the +API validates the request and starts the provisioning process, it +returns a response object, which contains a unique ID. + +At a minimum, you must specify these pool attributes: + +- ``tenant_id``. Admin only. Required to create a pool for another + tenant. + +- ``address``. The IP address of the member to receive traffic from + the load balancer. + +- ``protocol_port`` The port on which the member listens for + traffic. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``weight``. Default is ``1``. + +If you omit the ``subnet_id`` parameter, LBaaS uses the +``vip_subnet_id`` parameter value for the subnet UUID. + +If the request fails due to incorrect data, the service returns the +HTTP ``Bad Request (400)`` response code with information about the +failure in the response body. Validation errors require that you +correct the error and submit the request again. + +To configure all documented member features at creation time, +specify additional elements or attributes in the request. + +Administrative users can specify a tenant ID that is different than +their own to create members for other tenants. + +To update a member, the load balancer must have an ``ACTIVE`` +provisioning status. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - member: member + - subnet_id: subnet_id + - protocol_port: protocol_port + - tenant_id: tenant_id + - address: address + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/member-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - weight: weight + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - member: member + - address: address + - protocol_port: protocol_port + - id: id + +List pool members +================= + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id}/members + +Lists members of a pool. + +Lists all members that are associated with a pool that is +associated with your tenant account. The list of members includes +only members that belong to the pool object identified by +``pool_id``. + +The list might be empty. + +Example: List pool members + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - weight: weight + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - pool_id: pool_id + - members: members + - address: address + - protocol_port: protocol_port + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-members-list-response.json + :language: javascript + +Show load balancer details +========================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Shows details for a load balancer. + +This operation returns a load balancer object, by ID. If you are +not an administrative user and the load balancer object does not +belong to your tenant account, the service returns the HTTP +``Forbidden (403)`` response code. + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-show-response.json + :language: javascript + +Update load balancer +==================== + +.. rest_method:: PUT /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Updates a load balancer. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. To confirm the update, check that the load balancer +provisioning status is ``ACTIVE``. If the status is +``PENDING_UPDATE``, use a GET operation to poll the load balancer +object for changes. + +This operation returns the updated load balancer object with the +``ACTIVE``, ``PENDING_UPDATE``, or ``ERROR`` provisioning status. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - description: description + - loadbalancer: loadbalancer + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-update-response.json + :language: javascript + +Remove load balancer +==================== + +.. rest_method:: DELETE /v2.0/lbaas/loadbalancers/{loadbalancer_id} + +Removes a load balancer and its associated configuration from the tenant account. + +The API immediately purges any and all configuration data. You +cannot recover it. + +Example: Delete a load balancer + +Error response codes:204,400,401,413,503,500, + +Request +------- + +Show VIP details +================ + +.. rest_method:: GET /v2.0/lb/vips/{vip_id} + +Shows details for a VIP. + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vip_id: vip_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vip-show-response.json + :language: javascript + +Update VIP +========== + +.. rest_method:: PUT /v2.0/lb/vips/{vip_id} + +Updates a load balancer VIP. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - name: name + - vip_id: vip_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/vip-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vip-update-response.json + :language: javascript + +Delete VIP +========== + +.. rest_method:: DELETE /v2.0/lb/vips/{vip_id} + +Deletes a load balancer VIP. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vip_id: vip_id + +List load balancers +=================== + +.. rest_method:: GET /v2.0/lbaas/loadbalancers + +Lists all load balancers for the tenant account. + +The list might be empty. + +Normal response codes: 200 +Error response codes:404,500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - operating_status: operating_status + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/loadbalancers-list-response.json + :language: javascript + +Create load balancer +==================== + +.. rest_method:: POST /v2.0/lbaas/loadbalancers + +Creates a load balancer. + +This operation provisions a new load balancer by using the +configuration that you define in the request object. After the API +validates the request and starts the provisioning process, the API +returns a response object that contains a unique ID and the status +of provisioning the load balancer. + +In the response, the load balancer provisioning status is +``ACTIVE``, ``PENDING_CREATE``, or ``ERROR``. + +If the status is ``PENDING_CREATE``, issue GET +``/lbaas/loadbalancers/loadbalancer_id`` to view the progress of +the provisioning operation. When the load balancer status changes +to ``ACTIVE``, the load balancer is successfully provisioned and +operational for traffic handling. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the load balancer at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create load balancers for other tenants. + +**Example: Create a load balancer** + +- ``tenant_id``. Admin only. Required to create a load balancer for + another tenant. + +- ``vip_subnet_id``. The network on which to allocate the VIP + address for the load balancer. A tenant can only create load + balancer VIPs on networks that the policy authorizes, such as her + own networks or shared or provider networks. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the load balancer at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create load balancers for other tenants. + +If you own the subnet where you want to create the load balancer +VIP, you can specify a ``vip_address`` attribute. If you omit the +``vip_address`` attribute from the payload, the LBaaS service +allocates a VIP address from the subnet of the load balancer VIP. + +An optional ``flavor`` attribute can be passed to enable dynamic +selection of an appropriate provider if configured by the operator. +The basic selection algorithm chooses the provider in the first +service profile currently associated with flavor. + +You can also specify the ``provider`` attribute when you create a +load balancer. You can set this attribute to any service provider +with a ``LOADBALANCER`` service type. Setting both a flavor and a +provider will result in a conflict error. + +Example: Create a load balancer + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - vip_address: vip_address + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/loadbalancer-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provisioning_status: provisioning_status + - listeners: listeners + - vip_address: vip_address + - operating_status: operating_status + - provider: provider + - vip_subnet_id: vip_subnet_id + - flavor: flavor + - id: id + - loadbalancer: loadbalancer + - name: name + +Associate health monitor with pool +================================== + +.. rest_method:: POST /v2.0/lb/pools/{pool_id}/health_monitors + +Associates a health monitor with a pool. + +Error response codes:201,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - id: id + - health_monitor: health_monitor + - pool_id: pool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-associate-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + +Show pool details +================= + +.. rest_method:: GET /v2.0/lbaas/pools/{pool_id} + +Shows details for a pool. + +This operation shows details for a pool, by ID. If you are not an +administrative user and the pool object does not belong to your +tenant account, the call returns the HTTP ``Forbidden (403)`` +response code. + +If this operation succeeds, it returns a ``pool`` element. + +Example: Show pool details + +Normal response codes: 200 +Error response codes:404,403,500,401,413,503,409, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-show-response.json + :language: javascript + +Update pool +=========== + +.. rest_method:: PUT /v2.0/lbaas/pools/{pool_id} + +Updates a pool. + +This operation updates the attributes of a pool. Upon successful +validation of the request, the service returns the HTTP ``Accepted +(202)`` response code. + +Note: You cannot update the pool UUID, ``tenant_id``, +``listener_id``, ``listeners``, ``health_monitor_id``, +``protocol``, and ``members`` immutable attributes. If you try to +update any of these attributes, the service returns the HTTP +``Immutable (422)`` response code. + +Note: You cannot update a pool if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool: pool + - lb_method: lb_method + - description: description + - name: name + - admin_state_up: admin_state_up + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-update-response.json + :language: javascript + +Remove pool +=========== + +.. rest_method:: DELETE /v2.0/lbaas/pools/{pool_id} + +Removes a pool. + +This operation removes a pool and its associated configuration from +the tenant account. The API immediately purges any and all +configuration data. You cannot recover it. + +You cannot delete a pool if the load balancer to which it is +attached does not have an ``ACTIVE`` provisioning status. + +Error response codes:204,400,409,401,413,503,500, + +Request +------- + +Create health monitor +===================== + +.. rest_method:: POST /v2.0/lbaas/health_monitors + +Creates a health monitor. + +This operation provisions a health monitor by using the +configuration that you define in the request object. After the API +validates the request and start the provisioning process, it +returns a response object. The object contains a unique identifier. + +At a minimum, you must specify these health monitor attributes: + +- ``tenant_id``. Admin only. Required to create a health monitor for + another tenant. + +- ``type``. The type of health monitor. A valid value is ``TCP``, + ``HTTP``, or ``HTTPS``. + +- ``delay``. The interval, in seconds, between health checks. + +- ``timeout``. The time, in seconds, after which a health check + times out. + +- ``max_retries``. Number of failed health checks before marked as + OFFLINE. + +- ``pool_id``. The pool to monitor. + +Some attributes receive default values if you omit them from the +request, and are only useful when you specify a health monitor type +of HTTP(S): + +- ``http_method``. Default is ``GET``. + +- ``url_path``. Default is ``/``. + +- ``expected_codes``. The expected HTTP status codes to get from a + successful health check. Default is ``200``. + +- ``admin_state_up``. Default is ``true``. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, it returns the ``Bad Request (400)`` +response code with information about the nature of the failure in +the response body. Failures in the validation process are non- +recoverable and require that you correct the cause of the failure +and submit the request again. + +You can configure all documented features of the health monitor at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create health monitors for other tenants. + +To update a health monitor, the load balancer to which to attach +must have an ``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - type: type + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +List health monitors +==================== + +.. rest_method:: GET /v2.0/lbaas/health_monitors + +Lists health monitors. + +This operation lists all health monitors that are associated with +your tenant account. + +This operation returns a list, which might be empty. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitors: health_monitors + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitors-list-response.json + :language: javascript + +Create listener +=============== + +.. rest_method:: POST /v2.0/lbaas/listeners + +Creates a listener. + +This operation provisions a new listener by using the configuration +that you define in the request object. After the request is +validated and the provisioning process begins, a response object is +returned. The object contains a unique identifier. + +At a minimum, you must specify these listener attributes: + +- ``tenant_id``. Admin only. Required to create a listener for + another tenant. + +- ``loadbalancer_id``. The load balancer on which to provision this + listener. A tenant can only create listeners on load balancers + that the policy authorizes. For example, her own load balancers. + +- ``description``. The load balancer description. + +- ``protocol``. The protocol for which the front end listens. Must + be ``HTTP``, ``HTTPS``, ``TCP``, or ``TERMINATED_HTTPS``. + +Some attributes receive default values if you omit them from the +request: + +- ``protocol_port``. The port on which the front end listens. Must + be an integer from 1 to 65535. + +- ``default_tls_container_ref``. The reference to a container that + holds TLS secrets. If you also specify ``sni_container_refs``, + this container is the default. This parameter is required for the + ``TERMINATED_HTTPS`` protocol. + +- ``sni_container_refs``. A list of references to containers that + hold TLS secrets for server name indication (SNI). This parameter + is required for the ``TERMINATED_HTTPS`` protocol. + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +- ``connection_limit``. Default is ``-1``, which indicates an + infinite limit. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +You can configure all documented features of the listener at +creation time by specifying the additional elements or attributes +in the request. + +Administrative users can specify a tenant ID that is different than +their own to create listeners for other tenants. + +To update a listener, the load balancer to which to attach must +have an ``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - loadbalancer_id: loadbalancer_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/listener-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listener: listener + - default_pool_id: default_pool_id + - id: id + - name: name + +List listeners +============== + +.. rest_method:: GET /v2.0/lbaas/listeners + +Lists all listeners. + +This operation lists all listeners that are associated with your +tenant account. + +The list might be empty. + +Example: List listeners + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - protocol_port: protocol_port + - protocol: protocol + - description: description + - default_tls_container_ref: default_tls_container_ref + - admin_state_up: admin_state_up + - loadbalancers: loadbalancers + - tenant_id: tenant_id + - sni_container_refs: sni_container_refs + - connection_limit: connection_limit + - listeners: listeners + - default_pool_id: default_pool_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/listeners-list-response.json + :language: javascript + +Create pool +=========== + +.. rest_method:: POST /v2.0/lbaas/pools + +Creates a pool. + +This operation provisions a pool by using the configuration that +you define in the request object. After the API validates the +request and starts the provisioning process, the API returns a +response object, which contains a unique ID. + +At a minimum, you must specify these pool attributes: + +- ``tenant_id``. Admin only. Required to create a pool for another + tenant. + +- ``protocol``. The protocol for which this pool and its members + listen. A valid value is ``TCP``, ``HTTP``, or ``HTTPS``. + +- ``lb_algorithm``. The load-balancer algorithm, such as + ``ROUND_ROBIN``, ``LEAST_CONNECTIONS``, and ``SOURCE_IP``, that + distributes traffic to the pool members. The load-balancer + provider must support this algorithm. + +- ``listener_id``. The UUID of the listener in which this pool + becomes the default pool. Each listener has only one default + pool. + +Some attributes receive default values if you omit them from the +request: + +- ``admin_state_up``. Default is ``true``. + +- ``name``. Default is an empty string. + +- ``description``. Default is an empty string. + +- ``session_persistence``. Default is an empty dictionary. + +If the API cannot fulfill the request due to insufficient data or +data that is not valid, the service returns the HTTP ``Bad Request +(400)`` response code with information about the failure in the +response body. Validation errors require that you correct the error +and submit the request again. + +Users can configure all documented features at creation time by +providing the additional elements or attributes in the request. + +Administrative users can specify a tenant ID that is different than +their own to create pools for other tenants. + +To update a pool, the load balancer to which to attach must have an +``ACTIVE`` provisioning status. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - listener_id: listener_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - vip_id: vip_id + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - session_persistence: session_persistence + - healthmonitor_id: healthmonitor_id + - health_monitors_status: health_monitors_status + - members: members + - id: id + - pool: pool + - name: name + +List pools +========== + +.. rest_method:: GET /v2.0/lbaas/pools + +Lists all pools that are associated with your tenant account. + +The list might be empty. + +Example: List pools + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - lb_method: lb_method + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - members: members + - pools: pools + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pools-list-response.json + :language: javascript + +Disassociate health monitor from pool +===================================== + +.. rest_method:: DELETE /v2.0/lb/pools/{pool_id}/health_monitors/{health_monitor_id} + +Disassociates a health monitor from a pool. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + - pool_id: pool_id + +Show health monitor details +=========================== + +.. rest_method:: GET /v2.0/lb/health_monitors/{health_monitor_id} + +Shows details for a health monitor. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-show-response.json + :language: javascript + +Update health monitor +===================== + +.. rest_method:: PUT /v2.0/lb/health_monitors/{health_monitor_id} + +Updates a load balancer health monitor. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - health_monitor_id: health_monitor_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-update-response.json + :language: javascript + +Delete health monitor +===================== + +.. rest_method:: DELETE /v2.0/lb/health_monitors/{health_monitor_id} + +Deletes a load balancer health monitor. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor_id: health_monitor_id + +List pools +========== + +.. rest_method:: GET /v2.0/lb/pools + +Lists pools. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - pools: pools + - status_description: status_description + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pools-list-response.json + :language: javascript + +Create a load balancer pool +=========================== + +.. rest_method:: POST /v2.0/lb/pools + +Creates a load balancer pool. + +Error response codes:201,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - lb_method: lb_method + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - pool: pool + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + +List health monitors +==================== + +.. rest_method:: GET /v2.0/lb/health_monitors + +Lists health monitors. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitors: health_monitors + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/healthmonitors-list-response.json + :language: javascript + +Create a load balancer health monitor +===================================== + +.. rest_method:: POST /v2.0/lb/health_monitors + +Creates a load balancer health monitor. + +Error response codes:201,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - url_path: url_path + - type: type + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/healthmonitor-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - health_monitor: health_monitor + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - delay: delay + - expected_codes: expected_codes + - max_retries: max_retries + - http_method: http_method + - timeout: timeout + - pools: pools + - url_path: url_path + - type: type + - id: id + +List VIPs +========= + +.. rest_method:: GET /v2.0/lb/vips + +Lists VIPs. + +The list might be empty. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - address: address + - vips: vips + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/vips-list-response.json + :language: javascript + +Create a load balancer VIP +========================== + +.. rest_method:: POST /v2.0/lb/vips + +Creates a load balancer VIP. + +Error response codes:201,400,404,500,401,413,503,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/vip-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - status_description: status_description + - protocol: protocol + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - connection_limit: connection_limit + - pool_id: pool_id + - session_persistence: session_persistence + - vip: vip + - address: address + - protocol_port: protocol_port + - port_id: port_id + - id: id + - name: name + +Show pool details +================= + +.. rest_method:: GET /v2.0/lb/pools/{pool_id} + +Shows details for a pool. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool_id: pool_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-show-response.json + :language: javascript + +Update pool +=========== + +.. rest_method:: PUT /v2.0/lb/pools/{pool_id} + +Updates a load balancer pool. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool: pool + - lb_method: lb_method + - description: description + - name: name + - admin_state_up: admin_state_up + - pool_id: pool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/lbaas/pool-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - lb_algorithm: lb_algorithm + - status: status + - protocol: protocol + - description: description + - health_monitors: health_monitors + - subnet_id: subnet_id + - tenant_id: tenant_id + - admin_state_up: admin_state_up + - vip_id: vip_id + - health_monitors_status: health_monitors_status + - members: members + - provider: provider + - status_description: status_description + - id: id + - pool: pool + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/lbaas/pool-update-response.json + :language: javascript + +Delete pool +=========== + +.. rest_method:: DELETE /v2.0/lb/pools/{pool_id} + +Deletes a load balancer pool. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - pool_id: pool_id + diff --git a/api-ref/source/v2-ext/metering-labels-ext.inc b/api-ref/source/v2-ext/metering-labels-ext.inc new file mode 100644 index 000000000..1af13453c --- /dev/null +++ b/api-ref/source/v2-ext/metering-labels-ext.inc @@ -0,0 +1,240 @@ +.. -*- rst -*- + +================================================================= +Metering labels and rules (metering-labels, metering-label-rules) +================================================================= + +Creates, modifies, and deletes OpenStack Layer3 metering labels and +rules. + +List metering labels +==================== + +.. rest_method:: GET /v2.0/metering/metering-labels + +Lists all L3 metering labels that belong to the tenant. + +The list shows the UUID for each metering label. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_labels: metering_labels + - shared: shared + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-labels-list-response.json + :language: javascript + +Create metering label +===================== + +.. rest_method:: POST /v2.0/metering/metering-labels + +Creates an L3 metering label. + +Error response codes:201,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - shared: shared + - metering_label: metering_label + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_label: metering_label + - shared: shared + - id: id + - name: name + +Show metering label details +=========================== + +.. rest_method:: GET /v2.0/metering/metering-labels/{metering-label-id} + +Shows details for a metering label. + +The response body shows the description, name, and UUID. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - metering_label: metering_label + - shared: shared + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-show-response.json + :language: javascript + +Delete metering label +===================== + +.. rest_method:: DELETE /v2.0/metering/metering-labels/{metering-label-id} + +Deletes an L3 metering label. + +Error response codes:404,204,401, + +Request +------- + +List metering label rules +========================= + +.. rest_method:: GET /v2.0/metering/metering-label-rules + +Lists a summary of all L3 metering label rules that belong to the tenant. + +The list shows the UUID for each metering label rule. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - direction: direction + - remote_ip_prefix: remote_ip_prefix + - metering_label_rules: metering_label_rules + - excluded : excluded + - metering_label_id: metering_label_id + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rules-list-response.json + :language: javascript + +Create metering label rule +========================== + +.. rest_method:: POST /v2.0/metering/metering-label-rules + +Creates an L3 metering label rule. + +Error response codes:201,404,403,401,400,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - remote_ip_prefix: remote_ip_prefix + - direction: direction + - metering_label_id: metering_label_id + - metering_label_rule: metering_label_rule + - excluded: excluded + +Request Example +--------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rule-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - direction: direction + - remote_ip_prefix: remote_ip_prefix + - excluded : excluded + - metering_label_id: metering_label_id + - metering_label_rule: metering_label_rule + - id: id + +Show metering label rule details +================================ + +.. rest_method:: GET /v2.0/metering/metering-label-rules/{metering-label-rule-id} + +Shows details for a metering label rule. + +The response body shows this information for each metering label +rule: + +- ``direction``. Either ingress or egress. + +- ``excluded``. Either ``true`` or ``false``. + +- The UUID for the metering label rule. + +- The remote IP prefix. + +- The metering label ID for the metering label with which the rule + is associated. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +Response Example +---------------- + +.. literalinclude:: ../samples/metering-labels/metering-label-rule-show-response.json + :language: javascript + +Delete metering label rule +========================== + +.. rest_method:: DELETE /v2.0/metering/metering-label-rules/{metering-label-rule-id} + +Deletes an L3 metering label rule. + +Error response codes:404,204,401, + +Request +------- + diff --git a/api-ref/source/v2-ext/network-provider.inc b/api-ref/source/v2-ext/network-provider.inc new file mode 100644 index 000000000..30a99908f --- /dev/null +++ b/api-ref/source/v2-ext/network-provider.inc @@ -0,0 +1,233 @@ +.. -*- rst -*- + +================================================ +Networks provider extended attributes (networks) +================================================ + +Lists, creates, shows information for, updates, and deletes +networks. + +The provider extension decorates network resources with additional +attributes. These attributes are ``provider:network_type``, +``provider:physical_network``, and ``provider:segmentation_id``. +The validation rules for these attributes are the same as for the +`Networks multiple provider extension +`_ . You cannot use both extensions at +the same time. + +Show network details (provider network) +======================================= + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - network: network + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-show-response.json + :language: javascript + +Update network (provider network) +================================= + +.. rest_method:: PUT /v2.0/networks/{network_id} + +Updates a network. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + - network_id: network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-update-response.json + :language: javascript + +Delete network (provider network) +================================= + +.. rest_method:: DELETE /v2.0/networks/{network_id} + +Deletes a network. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +List networks (provider network) +================================ + +.. rest_method:: GET /v2.0/networks + +Lists networks that are accessible to the tenant who submits the request. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - networks: networks + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - provider:segmentation_id: provider:segmentation_id + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-list-response.json + :language: javascript + +Create network (provider network) +================================= + +.. rest_method:: POST /v2.0/networks + +Creates a network. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - subnets: subnets + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + diff --git a/api-ref/source/v2-ext/networking-ip-availability-ext.inc b/api-ref/source/v2-ext/networking-ip-availability-ext.inc new file mode 100644 index 000000000..ecd20d92c --- /dev/null +++ b/api-ref/source/v2-ext/networking-ip-availability-ext.inc @@ -0,0 +1,86 @@ +.. -*- rst -*- + +======================================= +Network IP availability and usage stats +======================================= + +List and show the network IP usage stats of all networks and a +specified network. These operations are available in the Mitaka +release (April 2016). + +Show Network IP Availability +============================ + +.. rest_method:: GET /v2.0/network-ip-availabilities/{network_id} + +Shows network IP availability details for a network. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - used_ips: used_ips + - subnet_ip_availability: subnet_ip_availability + - network_id: network_id + - tenant_id: tenant_id + - total_ips: total_ips + - network_ip_availability: network_ip_availability + - subnet_id: subnet_id + - subnet_name: subnet_name + - ip_version: ip_version + - cidr: cidr + - network_name: network_name + +Response Example +---------------- + +.. literalinclude:: ../samples/network-ip-availability/network-ip-availability-show.json + :language: javascript + +List Network IP Availability +============================ + +.. rest_method:: GET /v2.0/network-ip-availabilities + +Lists network IP availability of all networks. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - used_ips: used_ips + - subnet_ip_availability: subnet_ip_availability + - network_id: network_id + - tenant_id: tenant_id + - total_ips: total_ips + - subnet_id: subnet_id + - subnet_name: subnet_name + - ip_version: ip_version + - cidr: cidr + - network_name: network_name + - network_ip_availabilities: network_ip_availabilities + +Response Example +---------------- + +.. literalinclude:: ../samples/network-ip-availability/network-ip-availability-list.json + :language: javascript + diff --git a/api-ref/source/v2-ext/networks-multi-provider-ext.inc b/api-ref/source/v2-ext/networks-multi-provider-ext.inc new file mode 100644 index 000000000..09dbb11b3 --- /dev/null +++ b/api-ref/source/v2-ext/networks-multi-provider-ext.inc @@ -0,0 +1,167 @@ +.. -*- rst -*- + +=============================================== +Networks multiple provider extension (networks) +=============================================== + +Enables administrative users to define multiple physical bindings +for an OpenStack Networking network and list or show details for +networks with multiple physical bindings. + +You cannot update any ``provider`` attributes. If you try to do so, +an error occurs. + +To delete a network with multiple physical bindings, issue a normal +delete network request. + +To define multiple physical bindings for a network, include a +``segments`` list in the request body of a ``POST /v2.0/networks`` +request. Each element in the ``segments`` list has the same +structure as the provider network attributes. These attributes are +``provider:network_type``, ``provider:physical_network``, and +``provider:segmentation_id``. The validation rules for these +attributes are the same as for the `Networks provider extended +attributes `_ . You cannot use +both extensions at the same time. + +The NSX and ML2 plug-ins support this extension. With the ML2 plug- +in, you can specify multiple VLANs for a network, a VXLAN tunnel +ID, and a VLAN. + +Show details for a network with multiple segments +================================================= + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network with multiple segments. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-multi-show-response.json + :language: javascript + +List networks with multiple segment mappings +============================================ + +.. rest_method:: GET /v2.0/networks + +Lists networks that are accessible to the tenant who submits the request. Networks with multiple segments include the ``segments`` list in the response. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - mtu: mtu + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - networks: networks + - provider:segmentation_id: provider:segmentation_id + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-multi-list-response.json + :language: javascript + +Create network with multiple segment mappings +============================================= + +.. rest_method:: POST /v2.0/networks + +Creates a network with multiple segment mappings. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - segments: segments + - provider:network_type: provider:network_type + - shared: shared + - port_security_enabled: port_security_enabled + - provider:segmentation_id: provider:segmentation_id + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-multi-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - provider:physical_network: provider:physical_network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - provider:segmentation_id: provider:segmentation_id + - mtu: mtu + - shared: shared + - port_security_enabled: port_security_enabled + - provider:network_type: provider:network_type + - id: id + - name: name + diff --git a/api-ref/source/v2-ext/networks-vlan-transparency-ext.inc b/api-ref/source/v2-ext/networks-vlan-transparency-ext.inc new file mode 100644 index 000000000..7b310ebce --- /dev/null +++ b/api-ref/source/v2-ext/networks-vlan-transparency-ext.inc @@ -0,0 +1,147 @@ +.. -*- rst -*- + +====================================== +VLAN transparency extension (networks) +====================================== + +Enables plug-ins that support VLAN transparency to deliver VLAN- +transparent trunk networks. If the service does not support VLAN +transparency and a user requests a VLAN-transparent network, the +plug-in refuses to create one and returns an appropriate error to +the user. + +You cannot update the ``vlan-transparent`` attribute. If you try to +do so, an error occurs. + +To delete a VLAN-transparent network, issue a normal delete network +request. + +The ML2 plug-in currently supports this extension. With the ML2 +plug-in, you can set the ``vlan-transparent`` attribute to either +``true`` or ``false``. + +Show VLAN-transparent network details +===================================== + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a VLAN-transparent network. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-vlan-transparent-show-response.json + :language: javascript + +List networks with VLAN transparency attribute +============================================== + +.. rest_method:: GET /v2.0/networks + +Lists networks. The response shows the VLAN transparency attribute. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - vlan_transparent: vlan_transparent + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - networks: networks + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-vlan-transparent-list-response.json + :language: javascript + +Create VLAN-transparent network +=============================== + +.. rest_method:: POST /v2.0/networks + +Creates a VLAN-transparent network. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-vlan-transparent-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - network: network + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - vlan_transparent: vlan_transparent + - port_security_enabled: port_security_enabled + - id: id + - name: name + diff --git a/api-ref/source/v2-ext/parameters.yaml b/api-ref/source/v2-ext/parameters.yaml new file mode 100644 index 000000000..c524e6da6 --- /dev/null +++ b/api-ref/source/v2-ext/parameters.yaml @@ -0,0 +1,3857 @@ +# variables in header + +# variables in path +alias_1: + description: | + The alias of an extension. + in: path + required: false + type: string +connection_id: + description: | + The UUID of the IPSec site-to-site connection. + in: path + required: false + type: string +endpoint_group_id: + description: | + The UUID of the VPN endpoint group. + in: path + required: false + type: string +firewall_id: + description: | + The UUID of the firewall. + in: path + required: false + type: string +firewall_policy_id_2: + description: | + The UUID of the firewall policy. + in: path + required: false + type: string +firewall_rule_id: + description: | + The UUID for the firewall rule. + in: path + required: false + type: string +flavor_id: + description: | + The UUID of the flavor. + in: path + required: false + type: string +floatingip_id: + description: | + The UUID of the floating IP address. + in: path + required: false + type: string +health_monitor_id: + description: | + The UUID for the health monitor. + in: path + required: false + type: string +ikepolicy_id_1: + description: | + The UUID of the IKE policy. + in: path + required: false + type: string +ipsecpolicy_id_1: + description: | + The UUID of the IPSec policy. + in: path + required: false + type: string +member_id: + description: | + The UUID for the member. + in: path + required: false + type: string +network_id: + description: | + The UUID of the network. + in: path + required: false + type: string +policy_id: + description: | + The UUID of the policy. + in: path + required: false + type: string +pool_id: + description: | + The UUID for the pool. + in: path + required: false + type: string +port_id_3: + description: | + The UUID of the port. + in: path + required: false + type: string +profile_id: + description: | + The UUID of the profile. + in: path + required: false + type: string +resource_id: + description: | + The UUID of resource which the tag is set on. + in: path + required: false + type: string +resource_type: + description: | + The type of resource which the tag is set on. + in: path + required: false + type: string +router_id: + description: | + The UUID of the router. + in: path + required: false + type: string +rule_id: + description: | + The UUID of the rule. + in: path + required: false + type: string +security_group_id_2: + description: | + The UUID of the security group. + in: path + required: false + type: string +service_id: + description: | + The UUID of the VPN service. + in: path + required: false + type: string +subnetpool_id: + description: | + The UUID of the subnet pool. + in: path + required: false + type: string +tag: + description: | + The name for the tag. + in: path + required: false + type: string +tenant_id_33: + description: | + The UUID of the tenant. + in: path + required: false + type: string +vip_id_1: + description: | + The UUID for the VIP. + in: path + required: false + type: string + +# variables in query +fields: + description: | + The fields that you want the server to return. + in: query + required: false + type: string +verbose: + description: | + Show detailed information. + in: query + required: false + type: boolean + +# variables in body +action: + description: | + The action that the API performs on traffic that + matches the firewall rule. Valid value is ``allow`` or ``deny``. + Default is ``deny``. + in: body + required: false + type: string +action_1: + description: | + The dead peer detection (DPD) action. A valid + value is ``clear``, ``hold``, ``restart``, ``disabled``, or + ``restart-by-peer``. Default value is ``hold``. + in: body + required: false + type: string +action_2: + description: | + The action that the API performs on traffic that + matches the firewall rule. Value is ``allow`` or ``deny``. + in: body + required: true + type: string +action_3: + description: | + The dead peer detection (DPD) action. A valid + value is ``clear``, ``hold``, ``restart``, ``disabled``, or + ``restart-by-peer``. Default value is ``hold``. + in: body + required: true + type: string +address: + description: | + The IP address of the member. + format: ipv4 + in: body + required: true + type: string +address_1: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: false + type: string +address_2: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: true + type: string +address_scope_id: + description: | + An address scope to assign to the subnet pool. + in: body + required: false + type: string +address_scope_id_1: + description: | + The address scope. + in: body + required: true + type: string +admin_state_up: + description: | + The administrative state of the firewall, which + is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_1: + description: | + The administrative state of the health monitor. A + valid value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_10: + description: | + The administrative state of the VIP. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_11: + description: | + The administrative state of the VPN service, + which is up (``true``) or down (``false``). If down, connections + on service are not active. + in: body + required: false + type: boolean +admin_state_up_12: + description: | + The administrative state of the firewall, which + is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_13: + description: | + The administrative state of the health monitor, + which is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_14: + description: | + The administrative state of the IPSec connection, + which is up (``true``) or down (``false``). If down, the + connection does not forward packets. + in: body + required: true + type: boolean +admin_state_up_15: + description: | + The administrative state of the listener, which + is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_16: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_17: + description: | + The administrative state of the member. A valid + value is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_18: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_19: + description: | + The administrative state of the pool, which is up + (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_2: + description: | + The administrative state of the IPSec connection, + which is up (``true``) or down (``false``). If down, the + connection does not forward packets. + in: body + required: false + type: boolean +admin_state_up_20: + description: | + The administrative state of the router, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_21: + description: | + The administrative state of the VIP. A valid + value is up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_22: + description: | + The administrative state of the VPN service, + which is up (``true``) or down (``false``). If down, the port does + not forward packets. + in: body + required: true + type: boolean +admin_state_up_3: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). Set this attribute to + ``false`` to create the listener in an administratively down + state. + in: body + required: false + type: boolean +admin_state_up_4: + description: | + The administrative state of the load balancer, + which is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_5: + description: | + The administrative state of the member, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_6: + description: | + The administrative state of the member. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_7: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_8: + description: | + The administrative state of the pool. A valid + value is up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_9: + description: | + The administrative state of the router, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +alias: + description: | + The alias for the extension. For example, + "FOXNSOX", "os- availability-zone", "os-extended-quotas", "os- + share-unmanage" or "os-used-limits." + in: body + required: true + type: string +audited: + description: | + Each time that the firewall policy or its + associated rules are changed, the API sets this attribute to + ``false``. To audit the policy, explicitly set this attribute to + ``true``. + in: body + required: false + type: boolean +audited_1: + description: | + Indicates whether the policy has been audited. + Each time that the firewall policy or its associated rules are + changed, the API sets this attribute to ``false``. To audit the + policy, the policy owner must explicitly update the policy to set + this attribute to ``true``. + in: body + required: true + type: boolean +auth_algorithm: + description: | + The authentication hash algorithm. A valid value + is ``sha1``, which is the default. + in: body + required: false + type: string +auth_algorithm_1: + description: | + The authentication algorithm. A valid value is + ``sha1``, which is the default. + in: body + required: false + type: string +auth_algorithm_2: + description: | + The authentication hash algorithm. A valid value + is ``sha1``, which is the default. + in: body + required: true + type: string +auth_algorithm_3: + description: | + The authentication algorithm. A valid value is + ``sha1``, which is the default. + in: body + required: true + type: string +auth_mode: + description: | + The authentication mode. A valid value is + ``psk``, which is the default. + in: body + required: false + type: string +auth_mode_1: + description: | + The authentication mode. A valid value is + ``psk``, which is the default. + in: body + required: true + type: string +availability_zone_hints: + description: | + The availability zone candidate for the network. + in: body + required: true + type: array +availability_zones: + description: | + The availability zone for the network. + in: body + required: true + type: array +bandwidth_limit_rule: + description: | + A ``bandwidth_limit_rule`` object. + in: body + required: true + type: object +bandwidth_limit_rules: + description: | + A list of bandwidth limit rules associated with + the QoS policy. + in: body + required: true + type: array +cidr: + description: | + The CIDR of the subnet. + in: body + required: true + type: string +connection_limit: + description: | + The maximum number of connections permitted for + this load balancer. Default is infinite. + in: body + required: false + type: integer +connection_limit_1: + description: | + The maximum number of connections allowed for the + VIP. Value is ``-1`` if the limit is not set. + in: body + required: false + type: integer +connection_limit_2: + description: | + The maximum number of connections permitted for + this load balancer. Default is infinite. + in: body + required: true + type: integer +connection_limit_3: + description: | + The maximum number of connections allowed for the + VIP. Default is ``-1``, meaning no limit. + in: body + required: true + type: integer +created_at: + description: | + Time at which subnetpool has been created. + in: body + required: true + type: string +default_pool_id: + description: | + The UUID of default pool. Must have compatible + protocol with listener. + in: body + required: false + type: string +default_pool_id_1: + description: | + The UUID of default pool. Must have compatible + protocol with listener. + in: body + required: true + type: string +default_prefixlen: + description: | + The size of the prefix to allocate when the + ``cidr`` or ``prefixlen`` attributes are omitted when you create + the subnet. Default is ``min_prefixlen``. + in: body + required: false + type: integer +default_prefixlen_1: + description: | + The size of the prefix to allocate when the + ``cidr`` or ``prefixlen`` attributes are omitted when you create + the subnet. + in: body + required: true + type: integer +default_quota: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. Default is + no quota is enforced on allocations from the subnet pool. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. + in: body + required: false + type: integer +default_quota_1: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. + in: body + required: true + type: integer +default_quota_2: + description: | + A per-tenant quota on the prefix space that can + be allocated from the subnet pool for tenant subnets. Default is + no quota is enforced on allocations from the subnet pool. For IPv4 + subnet pools, ``default_quota`` is measured in units of /32. For + IPv6 subnet pools, ``default_quota`` is measured units of /64. All + tenants that use the subnet pool have the same prefix quota + applied. Updating this parameter has no effect on existing subnet + allocations. The existing subnet allocations for each tenant are + counted against the updated prefix space quota. + in: body + required: false + type: integer +default_tls_container_ref: + description: | + A reference to a container of TLS secrets. + in: body + required: false + type: string +default_tls_container_ref_1: + description: | + A reference to a container of TLS secrets. + in: body + required: true + type: string +delay: + description: | + The time, in seconds, between sending probes to + members. + in: body + required: true + type: integer +delay_1: + description: | + The amount of time, in seconds, between sending + probes to members. + in: body + required: true + type: integer +delay_2: + description: | + The amount of time, in seconds, between sending + probes to members. + in: body + required: false + type: integer +description: + description: | + The human-readable description for the firewall + policy. + in: body + required: false + type: string +description_1: + description: | + Human readable description for the firewall rule. + The maximum length is 1024 characters. No default. + in: body + required: false + type: string +description_10: + description: | + The QoS policy description. + in: body + required: false + type: string +description_11: + description: | + Human-readable description for the pool. + in: body + required: false + type: string +description_12: + description: | + The security group description. + in: body + required: false + type: string +description_13: + description: | + Human-readable description for the service + profile. + in: body + required: false + type: string +description_14: + description: | + Human-readable description for the VIP. + in: body + required: false + type: string +description_15: + description: | + Human-readable description for the VPN endpoint + group. + in: body + required: false + type: string +description_16: + description: | + Human-readable description for the VPN service. + in: body + required: false + type: string +description_17: + description: | + The human-readable description for the firewall + policy. + in: body + required: true + type: string +description_18: + description: | + The extension description. + in: body + required: true + type: string +description_19: + description: | + Human readable description for the firewall rule. + in: body + required: true + type: string +description_2: + description: | + Human-readable description for the firewall + service. + in: body + required: false + type: string +description_20: + description: | + The human-readable description for the firewall + service. + in: body + required: true + type: string +description_21: + description: | + Human-readable description for the flavor. + in: body + required: true + type: string +description_22: + description: | + Human-readable description for the IKE policy. + in: body + required: true + type: string +description_23: + description: | + Human-readable description for the IPSec + connection. + in: body + required: true + type: string +description_24: + description: | + Detailed description of the listener. + in: body + required: true + type: string +description_25: + description: | + The load balancer description. + in: body + required: true + type: string +description_26: + description: | + Description for the metering label. + in: body + required: true + type: string +description_27: + description: | + The description of the QoS policy. + in: body + required: true + type: string +description_28: + description: | + The description for the pool. + in: body + required: true + type: string +description_29: + description: | + The security group description. + in: body + required: true + type: string +description_3: + description: | + Human-readable description for the flavor. + in: body + required: false + type: string +description_30: + description: | + Human-readable description for the service + profile. + in: body + required: true + type: string +description_31: + description: | + Human-readable description for the VIP. + in: body + required: true + type: string +description_32: + description: | + Human-readable description for the VPN endpoint + group. + in: body + required: true + type: string +description_33: + description: | + Human-readable description for the VPN service. + in: body + required: true + type: string +description_34: + description: | + New human-readable description for the flavor. + in: body + required: false + type: string +description_35: + description: | + Security group description. + in: body + required: false + type: string +description_4: + description: | + Human-readable description for the IKE policy. + in: body + required: false + type: string +description_5: + description: | + Human-readable description for the IPSec policy. + in: body + required: true + type: string +description_6: + description: | + Human-readable description for the IPSec + connection. + in: body + required: false + type: string +description_7: + description: | + Detailed description of the listener. + in: body + required: false + type: string +description_8: + description: | + The load balancer description. + in: body + required: false + type: string +description_9: + description: | + The description for the metering label. + in: body + required: false + type: string +destination: + description: | + The destination CIDR. + in: body + required: false + type: string +destination_ip_address: + description: | + The destination IPv4 or IPv6 address or CIDR. No + default. + in: body + required: false + type: string +destination_ip_address_1: + description: | + The destination IPv4 or IPv6 address or CIDR. + in: body + required: true + type: string +destination_port: + description: | + The destination port or port range. A valid + value is a port number, as an integer, or a port range, in the + format of a ``:`` separated range. For a port range, include both + ends of the range. For example, ``80:90``. + in: body + required: false + type: string +destination_port_1: + description: | + The destination port or port range. + in: body + required: true + type: string +direction: + description: | + Ingress or egress, which is the direction in + which the metering rule is applied. + in: body + required: true + type: string +direction_1: + description: | + Ingress or egress: The direction in which the + security group rule is applied. For a compute instance, an ingress + security group rule is applied to incoming (ingress) traffic for + that instance. An egress rule is applied to traffic leaving the + instance. + in: body + required: true + type: string +direction_2: + description: | + Ingress or egress: the direction in which the + security group rule is applied. For a compute instance, an ingress + security group rule is applied to incoming (ingress) traffic for + that instance. An egress rule is applied to traffic leaving the + instance. + in: body + required: true + type: string +distributed: + description: | + If ``true``, indicates a distributed router. + in: body + required: true + type: boolean +dpd: + description: | + A dictionary with dead peer detection (DPD) + protocol controls. + in: body + required: false + type: object +dpd_1: + description: | + A dictionary with dead peer detection (DPD) + protocol controls. + in: body + required: true + type: object +driver: + description: | + Provider driver to use for this profile. Example: + ``neutron_lbaas.drivers.octavia.driver.OctaviaDriver`` + in: body + required: false + type: string +driver_1: + description: | + Driver to associate with profile. + in: body + required: true + type: string +driver_2: + description: | + Provider driver to use for this profile. Ex: + neutron_lbaas.drivers.octavia.driver.OctaviaDriver. + in: body + required: false + type: string +dscp_mark: + description: | + The DSCP mark value. + in: body + required: false + type: integer +dscp_marking_rule: + description: | + A ``dscp_marking_rule`` object. + in: body + required: true + type: dict +dscp_marking_rules: + description: | + A list of ``dscp_marking_rule`` objects. + in: body + required: true + type: array +enable_snat: + description: | + Enable Source NAT (SNAT) attribute. Default is + ``true``. To persist this attribute value, set the + ``enable_snat_by_default`` option in the ``neutron.conf`` file. + in: body + required: false + type: boolean +enable_snat_1: + description: | + Enable Source NAT (SNAT) attribute, a part of + ext-gw-mode extension. When a gateway is attached to a router + using an L3 extension, Network Address Translation (NAT) is + enabled for traffic generated by subnets attached to the router. + in: body + required: true + type: boolean +enabled: + description: | + Set to ``false`` to disable this rule in the + firewall policy. Facilitates selectively turning off rules without + having to disassociate the rule from the firewall policy. Valid + value is ``true`` or ``false``. Default is ``true``. + in: body + required: false + type: boolean +enabled_1: + description: | + Indicates whether this flavor is enabled or + disabled. Default ``true``. + in: body + required: false + type: boolean +enabled_2: + description: | + Indicates whether this service profile is enabled + or disabled. Default ``true``. + in: body + required: false + type: boolean +enabled_3: + description: | + Indicates whether this rule is enabled or + disabled in the firewall policy. + in: body + required: true + type: boolean +enabled_4: + description: | + Indicates whether this flavor is enabled or + disabled. + in: body + required: true + type: boolean +enabled_5: + description: | + Indicates whether this service profile is enabled + or disabled. + in: body + required: true + type: boolean +enabled_6: + description: | + Indicates whether this flavor is enabled or + disabled. + in: body + required: false + type: boolean +enabled_7: + description: | + Indicates whether this service profile is enabled + or disabled. Default true. + in: body + required: false + type: boolean +encapsulation_mode: + description: | + The encapsulation mode. A valid value is + ``tunnel`` or ``transport``. Default is ``tunnel``. + in: body + required: false + type: string +encapsulation_mode_1: + description: | + The encapsulation mode. A valid value is + ``tunnel`` or ``transport``. Default is ``tunnel``. + in: body + required: true + type: string +encryption_algorithm: + description: | + The encryption algorithm. A valid value is + ``3des``, ``aes-128``, ``aes-192``, ``aes-256``, and so on. + Default is ``aes-128``. + in: body + required: false + type: string +encryption_algorithm_1: + description: | + The encryption algorithm. A valid value is + ``3des``, ``aes-128``, ``aes-192``, ``aes-256``, and so on. + Default is ``aes-128``. + in: body + required: true + type: string +endpoints: + description: | + List of endpoints of the same type, for the + endpoint group. The values will depend on type. + in: body + required: true + type: array +endpoints_1: + description: | + A list of endpoints of the same type for the + endpoint group. Theses values depend on the type. + in: body + required: true + type: array +ethertype: + description: | + Must be IPv4 or IPv6, and addresses represented + in CIDR must match the ingress or egress rules. + in: body + required: false + type: string +ethertype_1: + description: | + Must be IPv4 or IPv6, and addresses represented + in CIDR must match the ingress or egress rules. + in: body + required: true + type: string +excluded: + description: | + Indicates whether to count the traffic of a + specific IP address with the ``remote_ip_prefix`` value. Default + is ``false``. + in: body + required: false + type: boolean +'excluded ': + description: | + Indicates whether to count the traffic of a + specific IP address with the ``remote_ip_prefix`` value. Default + is ``false``. + in: body + required: true + type: boolean +expected_codes: + description: | + The list of HTTP status codes expected in + response from the member to declare it healthy. Specify one of the + following values: - A single value, such as 200. - A list, such + as 200, 202. - A range, such as 200-204. + in: body + required: false + type: string +expected_codes_1: + description: | + Expected HTTP codes for a passing HTTP(S) + monitor. + in: body + required: false + type: string +extension: + description: | + A list of ``extension`` object. + in: body + required: true + type: object +external_fixed_ips: + description: | + The IP address parameters. + in: body + required: false + type: array +external_fixed_ips_1: + description: | + The IP address parameters. + in: body + required: true + type: array +external_gateway_info: + description: | + The external gateway parameters, which include + the ``network_id``, ``enable_snat`` and ``external_fixed_ips`` + parameters. + in: body + required: false + type: object +external_gateway_info_1: + description: | + The external gateway parameters, which include + the ``network_id``, ``enable_snat`` and ``external_fixed_ips`` + parameters. + in: body + required: true + type: object +external_v4_ip: + description: | + Read-only external (public) IPv4 address that is + used for the VPN service. The VPN plugin sets this address if an + IPv4 interface is available. + in: body + required: true + type: string +external_v6_ip: + description: | + Read-only external (public) IPv6 address that is + used for the VPN service. The VPN plugin sets this address if an + IPv6 interface is available. + in: body + required: true + type: string +firewall: + description: | + A ``firewall`` object. + in: body + required: true + type: object +firewall_list: + description: | + A list of the UUIDs for firewall associated with + the firewall policy. + in: body + required: true + type: array +firewall_policies: + description: | + A list of ``firewall_policy`` objects. + in: body + required: true + type: array +firewall_policy: + description: | + A ``firewall_policy`` object. + in: body + required: true + type: object +firewall_policy_id: + description: | + Read-only attribute that the API populates with + the UUID of the firewall policy when you associate this firewall + rule with a policy. You can associate a firewall rule with one + policy at a time. You can update this association can to a + different firewall policy. If you do not associate the rule with + any policy, this attribute is ``null``. + in: body + required: true + type: string +firewall_policy_id_1: + description: | + The UUID of the policy that is associated with + the firewall. + in: body + required: true + type: string +firewall_policy_id_3: + description: | + The UUID of the policy that is associated with + the firewall. + in: body + required: false + type: string +firewall_rule: + description: | + A ``firewall_rule`` object. + in: body + required: true + type: object +firewall_rule_id_1: + description: | + The UUID of the firewall rule. + in: body + required: true + type: string +firewall_rules: + description: | + A list of the UUIDs for firewall rule associated + with the firewall policy. + in: body + required: true + type: array +firewall_rules_id: + description: | + A list of rules to associate with the firewall + policy. + in: body + required: false + type: array +firewalls: + description: | + A list of ``firewall_rule`` objects. + in: body + required: true + type: array +firewalls_1: + description: | + A list of ``firewall`` objects. + in: body + required: true + type: array +fixed_ip_address: + description: | + The fixed IP address that is associated with the + floating IP. To associate the floating IP with a fixed IP at + creation time, you must specify the identifier of the internal + port. If an internal port has multiple associated IP addresses, + the service chooses the first IP address unless you explicitly + define a fixed IP address in the ``fixed_ip_address`` parameter. + in: body + required: false + type: string +fixed_ip_address_1: + description: | + The fixed IP address that is associated with the + floating IP address. + in: body + required: true + type: string +flavor: + description: | + A ``flavor`` object. + in: body + required: true + type: object +flavor_1: + description: | + The UUID of a flavor. + in: body + required: false + type: string +flavor_2: + description: | + The UUID of a flavor if set. + in: body + required: false + type: string +flavors: + description: | + A list of ``flavor`` objects. + in: body + required: true + type: array +floating_ip_address: + description: | + The floating IP address. + in: body + required: false + type: string +floating_ip_address_1: + description: | + The floating IP address. + in: body + required: true + type: string +floating_network_id: + description: | + The UUID of the network associated with the + floating IP. + in: body + required: true + type: string +floatingip: + description: | + A ``floatingip`` object. When you associate a + floating IP address with a VM, the instance has the same public IP + address each time that it boots, basically to maintain a + consistent IP address for maintaining DNS assignment. + in: body + required: true + type: object +floatingip_1: + description: | + The number of floating IP addresses allowed for + each tenant. A value of ``-1`` means no limit. + in: body + required: true + type: integer +floatingip_2: + description: | + The number of floating IP addresses allowed for + each tenant. A value of ``-1`` means no limit. + in: body + required: false + type: integer +floatingips: + description: | + A list of ``floatingip`` objects. + in: body + required: true + type: array +ha: + description: | + If ``true``, indicates a highly-available router. + in: body + required: true + type: boolean +health_monitor: + description: | + A ``health_monitor`` object. + in: body + required: true + type: object +health_monitors: + description: | + List of health monitors that are associated with + the pool. + in: body + required: false + type: array +health_monitors_1: + description: | + A list of ``health_monitor`` objects. + in: body + required: true + type: array +health_monitors_2: + description: | + The UUID for the associated health monitor. + in: body + required: true + type: string +health_monitors_status: + description: | + The statuses of the health monitors that are + associated with the pool. + in: body + required: true + type: string +healthmonitor: + description: | + The associated healthmonitor, if any. + in: body + required: true + type: object +healthmonitor_id: + description: | + The UUID of the health monitor. + in: body + required: false + type: string +http_method: + description: | + The HTTP method that the monitor uses for + requests. + in: body + required: false + type: string +id: + description: | + The UUID of the router. + in: body + required: true + type: string +id_1: + description: | + The UUID of the service profile. + in: body + required: true + type: string +id_10: + description: | + The UUID for the IPSec policy. + in: body + required: true + type: string +id_11: + description: | + The UUID for the IPSec connection. + in: body + required: true + type: string +id_12: + description: | + The UUID of the listener. + in: body + required: true + type: string +id_13: + description: | + The UUID for the load balancer. + in: body + required: true + type: string +id_14: + description: | + The UUID for the member. + in: body + required: true + type: string +id_15: + description: | + The UUID for the metering label rule. + in: body + required: true + type: string +id_16: + description: | + The UUID of the metering label. + in: body + required: true + type: string +id_17: + description: | + The UUID of the network. + in: body + required: true + type: string +id_18: + description: | + The generated UUID of the QoS policy. + in: body + required: true + type: string +id_19: + description: | + The UUID for the pool. + in: body + required: true + type: string +id_2: + description: | + The UUID for the health monitor. + in: body + required: true + type: string +id_20: + description: | + The UUID of the security group rule. + in: body + required: true + type: string +id_21: + description: | + The UUID of the subnet pool. + in: body + required: true + type: string +id_22: + description: | + The UUID for the VIP. + in: body + required: true + type: string +id_23: + description: | + The UUID for the VPN endpoint group. + in: body + required: true + type: string +id_24: + description: | + The UUID for the VPN service. + in: body + required: true + type: string +id_25: + description: | + The UUID of network. + in: body + required: true + type: string +id_26: + description: | + The UUID of the security group. + in: body + required: true + type: string +id_3: + description: | + The UUID of the QoS policy rule. + in: body + required: true + type: string +id_4: + description: | + The UUID for the firewall policy. + in: body + required: true + type: string +id_5: + description: | + The generated UUID for the firewall rule object. + in: body + required: true + type: string +id_6: + description: | + The UUID for the firewall service. + in: body + required: true + type: string +id_7: + description: | + The UUID of the flavor. + in: body + required: true + type: string +id_8: + description: | + The UUID of the floating IP address. + in: body + required: true + type: string +id_9: + description: | + The UUID for the IKE policy. + in: body + required: true + type: string +ike_version: + description: | + The IKE version. A valid value is ``v1`` or + ``v2``. Default is ``v1``. + in: body + required: false + type: string +ike_version_1: + description: | + The IKE version. A valid value is ``v1`` or + ``v2``. Default is ``v1``. + in: body + required: true + type: string +ikepolicies: + description: | + A list of IKE policy objects. + in: body + required: true + type: array +ikepolicy: + description: | + An ``ikepolicy`` object. + in: body + required: true + type: object +ikepolicy_id: + description: | + The UUID of the IKE policy. + in: body + required: true + type: string +initiator: + description: | + Indicates whether this VPN can only respond to + connections or both respond to and initiate connections. A valid + value is ``response- only`` or ``bi-directional``. Default is + ``bi-directional``. + in: body + required: false + type: string +initiator_1: + description: | + Indicates whether this VPN can only respond to + connections or both respond to and initiate connections. A valid + value is ``response- only`` or ``bi-directional``. Default is + ``bi-directional``. + in: body + required: true + type: string +insert_after: + description: | + The UUID of the firewall_rule. A new + firewall_rule will be inserted after this firewall_rule. + in: body + required: false + type: string +insert_before: + description: | + The UUID of the firewall_rule. A new + firewall_rule will be inserted before this firewall_rule. + in: body + required: false + type: string +interval: + description: | + The dead peer detection (DPD) interval, in + seconds. A valid value is a positive integer. Default is 30. + in: body + required: false + type: integer +interval_1: + description: | + The dead peer detection (DPD) interval, in + seconds. A valid value is a positive integer. Default is 30. + in: body + required: true + type: integer +ip_version: + description: | + The IP protocol version. Valid value is ``4`` or + ``6``. Default is ``4``. + in: body + required: false + type: integer +ip_version_1: + description: | + The IP address family of the list of prefixes + passed to the ``prefixes`` attribute. + in: body + required: true + type: integer +ip_version_2: + description: | + The IP protocol version. Value is ``4`` or ``6``. + in: body + required: true + type: integer +ip_version_3: + description: | + The IP version (4 or 6) of the subnet. + in: body + required: true + type: integer +ipsec_site_connection: + description: | + An ``ipsec_site_connection`` object. + in: body + required: true + type: object +ipsecpolicies: + description: | + A list of IPSec policy objects. + in: body + required: true + type: array +ipsecpolicy: + description: | + An ``ipsecpolicy`` object. + in: body + required: true + type: object +ipsecpolicy_id: + description: | + The UUID of the IPSec policy. + in: body + required: true + type: string +lb_algorithm: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: true + type: string +lb_method: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: true + type: string +lb_method_1: + description: | + The load-balancer algorithm, which is round-robin + (``ROUND_ROBIN``), least-connections (``LEAST_CONNECTIONS``), + source IP (``SOURCE_IP``), and so on, that is used to distribute + traffic to the pool members. This value, which must be supported, + is dependent on the load-balancer provider. The round-robin + algorithm must be supported. + in: body + required: false + type: string +lifetime: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: false + type: object +lifetime_1: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. + in: body + required: false + type: object +lifetime_2: + description: | + The lifetime of the security association. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. + in: body + required: true + type: object +links: + description: | + The share links. + in: body + required: true + type: array +listener: + description: | + A ``listener`` object. + in: body + required: true + type: object +listener_id: + description: | + The UUID of the listener. + in: body + required: false + type: string +listeners: + description: | + The associated listeners, if any. + in: body + required: true + type: array +listeners_1: + description: | + A ``listeners`` object. + in: body + required: true + type: array +loadbalancer: + description: | + A ``loadbalancer`` object. + in: body + required: true + type: object +loadbalancer_id: + description: | + The UUID of the load balancer. + in: body + required: true + type: string +loadbalancers: + description: | + A list of load balancer objects. + in: body + required: true + type: array +local_ep_group_id: + description: | + The UUID for the endpoint group that contains + private subnets for the local side of the connection. Yo must + specify this parameter with the ``peer_ep_group_id`` parameter + unless in backward- compatible mode where ``peer_cidrs`` is + provided with a ``subnet_id`` for the VPN service. + in: body + required: false + type: string +local_ep_group_id_1: + description: | + The UUID for the endpoint group that contains + private subnets for the local side of the connection. This value + is present with the ``peer_ep_group_id`` parameter unless in + backward-compatible mode, where ``peer_cidrs`` is shown. + in: body + required: true + type: string +max_burst_kbps: + description: | + The burst over the maximum KBPS value. Default is + ``0`` + in: body + required: false + type: integer +max_burst_kbps_1: + description: | + The burst over the maximum KBPS value. + in: body + required: true + type: integer +max_kbps: + description: | + The maximum KBPS value. If you specify this + value, must be greater than 0. Default is ``null``. + in: body + required: false + type: integer +max_kbps_1: + description: | + The maximum KBPS value. + in: body + required: true + type: integer +max_prefixlen: + description: | + The maximum prefix size that can be allocated + from the subnet pool. For IPv4 subnet pools, default is ``32``. + For IPv6 subnet pools, default is ``128``. + in: body + required: false + type: integer +max_prefixlen_1: + description: | + The maximum prefix size that can be allocated + from the subnet pool. + in: body + required: true + type: integer +max_retries: + description: | + The number of allowed connection failures before + changing the status of the member to ``INACTIVE``. A valid value + is from 1 to 10. + in: body + required: true + type: integer +member: + description: | + A ``member`` object. + in: body + required: true + type: object +members: + description: | + The list of members that belong to the pool. + in: body + required: true + type: array +members_1: + description: | + A list of ``member`` objects. + in: body + required: true + type: array +members_2: + description: | + The associated members, if any. + in: body + required: true + type: array +metainfo: + description: | + JSON-formatted meta information. + in: body + required: false + type: string +metainfo_1: + description: | + JSON metainfo to associate with profile. + in: body + required: true + type: string +metering_label: + description: | + A ``metering_label`` object. + in: body + required: true + type: object +metering_label_id: + description: | + The metering label UUID to associate with this + metering rule. + in: body + required: true + type: string +metering_label_rule: + description: | + A ``metering_label_rule`` object. + in: body + required: true + type: object +metering_label_rules: + description: | + A list of ``metering_label_rule`` objects. + in: body + required: true + type: array +metering_labels: + description: | + A list of ``metering_label`` objects. + in: body + required: true + type: array +min_prefixlen: + description: | + The smallest prefix that can be allocated from a + subnet pool. For IPv4 subnet pools, default is ``8``. For IPv6 + subnet pools, default is ``64``. + in: body + required: false + type: integer +min_prefixlen_1: + description: | + The smallest prefix that can be allocated from a + subnet pool. + in: body + required: true + type: integer +mtu: + description: | + The maximum transmission unit (MTU) value to + address fragmentation. Minimum value is 68 for IPv4, and 1280 for + IPv6. + in: body + required: false + type: integer +mtu_1: + description: | + The MTU of a network resource. + in: body + required: true + type: integer +mtu_2: + description: | + The maximum transmission unit (MTU) to address + fragmentation. The minimum value for IPv4 is 68. The minimum value + for IPv6 is 1280. + in: body + required: true + type: integer +name: + description: | + Human-readable name for the firewall policy. Does + not have to be unique. + in: body + required: false + type: string +name_1: + description: | + Human readable name for the firewall rule. + Maximum length is 255 characters. Does not have to be unique. No + default. + in: body + required: false + type: string +name_10: + description: | + The network name. + in: body + required: false + type: string +name_11: + description: | + The QoS policy name. + in: body + required: false + type: string +name_12: + description: | + The pool name. Does not have to be unique. + in: body + required: false + type: string +name_13: + description: | + The router name. + in: body + required: false + type: string +name_14: + description: | + A symbolic name for the security group. Does not + have to be unique. + in: body + required: true + type: string +name_15: + description: | + A name for the subnet pool. + in: body + required: true + type: string +name_16: + description: | + Human-readable name for the VIP. Does not have to + be unique. + in: body + required: false + type: string +name_17: + description: | + Human-readable name for the VPN endpoint group. + Does not have to be unique. + in: body + required: false + type: string +name_18: + description: | + Human-readable name for the VPN service. Does not + have to be unique. + in: body + required: false + type: string +name_19: + description: | + Human-readable name for the firewall policy. Does + not have to be unique. + in: body + required: true + type: string +name_2: + description: | + The human-readable name for the firewall service. + Does not have to be unique. + in: body + required: false + type: string +name_20: + description: | + The name of the extension. For example, "Fox In + Socks." + in: body + required: true + type: string +name_21: + description: | + Human readable name for the firewall rule. + in: body + required: true + type: string +name_22: + description: | + Human-readable name for the firewall service. + Does not have to be unique. + in: body + required: true + type: string +name_23: + description: | + Human-readable name for the flavor. Can be "" and + non-unique. + in: body + required: true + type: string +name_24: + description: | + Human-readable name for the IKE policy. Does not + have to be unique. + in: body + required: true + type: string +name_25: + description: | + Human-readable name for the IPSec connection. + Does not have to be unique. + in: body + required: true + type: string +name_26: + description: | + The load balancer name. + in: body + required: true + type: string +name_27: + description: | + The network name. + in: body + required: true + type: string +name_28: + description: | + The name of the subnet. + in: body + required: true + type: string +name_29: + description: | + The name of the QoS policy. + in: body + required: true + type: string +name_3: + description: | + Human-readable name for the flavor. Can be "" and + non-unique. + in: body + required: false + type: string +name_30: + description: | + The pool name. Does not have to be unique. + in: body + required: true + type: string +name_31: + description: | + The router name. + in: body + required: true + type: string +name_32: + description: | + The security group name. + in: body + required: true + type: string +name_33: + description: | + The subnet pool name. + in: body + required: true + type: string +name_34: + description: | + Human-readable name for the VIP. Does not have to + be unique. + in: body + required: true + type: string +name_35: + description: | + Human-readable name for the VPN endpoint group. + Does not have to be unique. + in: body + required: true + type: string +name_36: + description: | + Human-readable name for the VPN service. Does not + have to be unique. + in: body + required: true + type: string +name_37: + description: | + New human-readable name for the flavor. Can be "" + and non-unique. + in: body + required: false + type: string +name_38: + description: | + Human-readable name for the pool. Does not have + to be unique. + in: body + required: false + type: string +name_4: + description: | + Human-readable name for the IKE policy. Does not + have to be unique. + in: body + required: false + type: string +name_5: + description: | + Human-readable name for the IPSec policy. Does + not have to be unique. + in: body + required: true + type: string +name_6: + description: | + Human-readable name for the IPSec connection. + Does not have to be unique. + in: body + required: false + type: string +name_7: + description: | + The listener name. + in: body + required: true + type: string +name_8: + description: | + The load balancer name. Does not have to be + unique. + in: body + required: false + type: string +name_9: + description: | + The name of the metering label. + in: body + required: true + type: string +network: + description: | + A ``network`` object. + in: body + required: true + type: object +network_1: + description: | + The number of networks allowed for each tenant. + in: body + required: true + type: integer +network_2: + description: | + The number of networks allowed for each tenant. + in: body + required: false + type: integer +network_ip_availabilities: + description: | + The ``network_ip_availabilities`` object. + in: body + required: true + type: array +network_ip_availability: + description: | + A ``network_ip_availability`` object. + in: body + required: true + type: dict +network_name: + description: | + The name of the network. + in: body + required: true + type: string +networks: + description: | + A list of ``network`` objects. + in: body + required: true + type: array +nexthop: + description: | + The IP address of the next hop. + in: body + required: false + type: string +operating_status: + description: | + The operating status of the load balancer. This + value is ``ONLINE`` or ``OFFLINE``. + in: body + required: true + type: string +peer_address: + description: | + The peer gateway public IPv4 or IPv6 address or + FQDN. + in: body + required: true + type: string +peer_address_1: + description: | + The peer gateway public IPv4 address, IPv6 + address, or FQDN. + in: body + required: true + type: string +peer_cidrs: + description: | + (Deprecated) Unique list of valid peer private + CIDRs in the form < net_address > / < prefix > . + in: body + required: false + type: array +peer_cidrs_1: + description: | + (Deprecated) Unique list of valid peer private + CIDRs in the form < net_address > / < prefix > . + in: body + required: true + type: array +peer_ep_group_id: + description: | + The UUID for the endpoint group that contains + private CIDRs in the form < net_address > / < prefix > for the + peer side of the connection. You must specify this parameter with + the ``local_ep_group_id`` parameter unless in backward-compatible + mode where ``peer_cidrs`` is provided with a ``subnet_id`` for the + VPN service. + in: body + required: false + type: string +peer_ep_group_id_1: + description: | + The UUID for the endpoint group that contains + private CIDRs in the form < net_address > / < prefix > for the + peer side of the connection. This value is present with the + ``local_ep_group_id`` parameter unless in backward-compatible + mode, where ``peer_cidrs`` is shown. + in: body + required: true + type: string +peer_id: + description: | + The peer router identity for authentication. A + valid value is an IPv4 address, IPv6 address, e-mail address, key + ID, or FQDN. Typically, this value matches the ``peer_address`` + value. + in: body + required: true + type: string +peer_id_1: + description: | + The peer router identity for authentication. Can + be an IPv4 address, IPv6 address, e-mail address, key ID, or FQDN. + Typically, this value matches the ``peer_address`` value. + in: body + required: true + type: string +pfs: + description: | + Perfect forward secrecy (PFS). A valid value is + ``Group2``, ``Group5``, ``Group14``, and so on. Default is + ``Group5``. + in: body + required: false + type: string +pfs_1: + description: | + Perfect forward secrecy (PFS). A valid value is + ``Group2``, ``Group5``, ``Group14``, and so on. Default is + ``Group5``. + in: body + required: true + type: string +phase1_negotiation_mode: + description: | + The IKE mode. A valid value is ``main``, which is + the default. + in: body + required: false + type: string +phase1_negotiation_mode_1: + description: | + The IKE mode. A valid value is ``main``, which is + the default. + in: body + required: true + type: string +policies: + description: | + A list of QoS ``policy`` objects. + in: body + required: true + type: array +policy: + description: | + A QoS ``policy`` object. + in: body + required: true + type: object +policy_id_1: + description: | + The UUID of the QoS policy that is associated + with the rule. + in: body + required: true + type: string +pool: + description: | + A ``pool`` object. + in: body + required: true + type: object +pool_id_1: + description: | + The UUID of the pool to which the member belongs. + in: body + required: true + type: string +pool_id_2: + description: | + The UUID of the pool with which the VIP is + associated. + in: body + required: true + type: string +pool_id_3: + description: | + The UUID of the pool to which the member belongs. + in: body + required: false + type: string +pool_id_4: + description: | + The UUID of the pool with which the VIP is + associated. + in: body + required: false + type: string +pools: + description: | + List of pools that are associated with the health + monitor. + in: body + required: true + type: array +pools_1: + description: | + A list of ``pool`` objects. + in: body + required: true + type: array +pools_2: + description: | + The associated pools, if any. + in: body + required: true + type: array +port: + description: | + The number of ports allowed for each tenant. + in: body + required: true + type: integer +port_1: + description: | + The number of ports allowed for each tenant. + in: body + required: false + type: integer +port_id: + description: | + The UUID of the port. + in: body + required: true + type: string +port_id_1: + description: | + The UUID of the port. + in: body + required: false + type: string +port_id_2: + description: | + The UUID of the VIP port. + in: body + required: true + type: string +port_range_max: + description: | + The maximum port number in the range that is + matched by the security group rule. The ``port_range_min`` + attribute constrains the ``port_range_max`` attribute. If the + protocol is ICMP, this value must be an ICMP type. + in: body + required: false + type: integer +port_range_max_1: + description: | + The maximum port number in the range that is + matched by the security group rule. The ``port_range_min`` + attribute constrains the ``port_range_max`` attribute. If the + protocol is ICMP, this value must be an ICMP type. + in: body + required: true + type: integer +port_range_min: + description: | + The minimum port number in the range that is + matched by the security group rule. If the protocol is TCP or UDP, + this value must be less than or equal to the ``port_range_max`` + attribute value. If the protocol is ICMP, this value must be an + ICMP type. + in: body + required: false + type: integer +port_range_min_1: + description: | + The minimum port number in the range that is + matched by the security group rule. If the protocol is TCP or UDP, + this value must be less than or equal to the ``port_range_max`` + attribute value. If the protocol is ICMP, this value must be an + ICMP type. + in: body + required: true + type: integer +port_security_enabled: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: false + type: boolean +port_security_enabled_1: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: true + type: boolean +position: + description: | + Read-only attribute that the API assigns to this + rule when it associates it with a firewall policy. This value + indicates the position of this rule in that firewall policy. This + position number starts at 1. If the firewall rule is not + associated with any policy, the position is ``null``. + in: body + required: true + type: integer +prefixes: + description: | + A list of subnet prefixes to assign to the subnet + pool. The API merges adjacent prefixes and treats them as a single + prefix. Each subnet prefix must be unique among all subnet + prefixes in all subnet pools that are associated with the address + scope. + in: body + required: true + type: array +prefixes_1: + description: | + A list of subnet prefixes that are assigned to + the subnet pool. The API merges adjacent prefixes and treats them + as a single prefix. + in: body + required: true + type: array +prefixes_2: + description: | + A list of subnet prefixes to assign to the subnet + pool. The API merges adjacent prefixes and treats them as a single + prefix. To update the subnet prefixes, pass a list that contains + the existing set of prefixes and the new set of prefixes. You + cannot shrink the prefix list of a subnet pool. You can only add + prefixes to it to expand it. Ensure that each subnet prefix is + unique among all subnet prefixes in all subnet pools that are + associated with the address scope. + in: body + required: true + type: array +protocol: + description: | + The IP protocol. Valid value is ``icmp``, + ``tcp``, ``udp``, or ``null``. No default. + in: body + required: false + type: string +protocol_1: + description: | + The protocol to load balance. A valid value is + ``HTTP``, ``HTTPS``, ``TCP``, or ``TERMINATED_HTTPS``. + in: body + required: true + type: string +protocol_2: + description: | + The protocol of the pool, which is ``TCP``, + ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +protocol_3: + description: | + The protocol that is matched by the security + group rule. Valid values are null, tcp, udp, and icmp. + in: body + required: false + type: string +protocol_4: + description: | + The protocol that is matched by the security + group rule. Value is ``null``, ``icmp``, ``icmpv6``, ``tcp``, or + ``udp``. + in: body + required: true + type: string +protocol_5: + description: | + The protocol of the virtual IP (VIP) address. A + valid value is ``TCP``, ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +protocol_6: + description: | + The IP protocol. Value is ``icmp``, ``tcp``, + ``udp``, or ``null``. + in: body + required: true + type: string +protocol_port: + description: | + The TCP or UDP port on which to listen. + in: body + required: true + type: integer +protocol_port_1: + description: | + The port where the application is hosted. + in: body + required: true + type: integer +protocol_port_2: + description: | + The port on which to listen to client traffic + that is associated with the virtual IP (VIP) address. A valid + value is from 0 to 65535. + in: body + required: true + type: integer +provider: + description: | + The name of the provider. + in: body + required: false + type: string +provider:network_type: + description: | + The type of physical network that maps to this + network resource. For example, ``flat``, ``vlan``, ``vxlan``, or + ``gre``. + in: body + required: false + type: string +provider:physical_network: + description: | + The physical network where this network object is + implemented. The Networking API v2.0 does not provide a way to + list available physical networks. For example, the Open vSwitch + plug-in configuration file defines a symbolic name that maps to + specific bridges on each Compute host. + in: body + required: false + type: string +provider:segmentation_id: + description: | + An isolated segment on the physical network. The + ``network_type`` attribute defines the segmentation model. For + example, if the ``network_type`` value is vlan, this ID is a vlan + identifier. If the ``network_type`` value is gre, this ID is a gre + key. + in: body + required: false + type: string +provider_1: + description: | + The load-balancer provider. + in: body + required: true + type: string +provider_2: + description: | + The name of the provider. + in: body + required: true + type: string +provisioning_status: + description: | + The provisioning status of the load balancer. + This value is ``ACTIVE``, ``PENDING_CREATE`` or ``ERROR``. + in: body + required: true + type: string +psk: + description: | + The pre-shared key. A valid value is any string. + in: body + required: true + type: string +quota: + description: | + A ``quota`` object. + in: body + required: true + type: object +quotas: + description: | + A list of quota objects. + in: body + required: true + type: array +rbac_policy: + description: | + The number of role-based access control (RBAC) + policies for each tenant. + in: body + required: true + type: integer +rbac_policy_1: + description: | + The number of role-based access control (RBAC) + policies for each tenant. + in: body + required: false + type: integer +remote_group_id: + description: | + The remote group UUID to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. + in: body + required: false + type: string +remote_group_id_1: + description: | + The remote group UUID to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. + in: body + required: true + type: string +remote_ip_prefix: + description: | + The remote IP prefix to associate with this + metering rule packet. + in: body + required: true + type: string +remote_ip_prefix_1: + description: | + The remote IP prefix to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. This attribute matches the IP prefix as the source + IP address of the IP packet. + in: body + required: false + type: string +remote_ip_prefix_2: + description: | + The remote IP prefix to associate with this + security group rule. You can specify either the + ``remote_group_id`` or ``remote_ip_prefix`` attribute in the + request body. This attribute value matches the IP prefix as the + source IP address of the IP packet. + in: body + required: true + type: string +route_mode: + description: | + The route mode. A valid value is ``static``, + which is the default. + in: body + required: false + type: string +route_mode_1: + description: | + The route mode. A valid value is ``static``, + which is the default. + in: body + required: true + type: string +router: + description: | + A ``router`` object. + in: body + required: true + type: object +router:external: + description: | + Indicates whether this network is externally + accessible. + in: body + required: false + type: boolean +router:external_1: + description: | + Indicates whether this network is externally + accessible. + in: body + required: true + type: boolean +router_1: + description: | + The number of routers allowed for each tenant. + in: body + required: true + type: integer +router_2: + description: | + The number of routers allowed for each tenant. + in: body + required: false + type: integer +router_id_1: + description: | + The UUID of the router. + in: body + required: true + type: string +router_id_2: + description: | + The UUID of the router to which the VPN service + is inserted. + in: body + required: true + type: string +router_id_3: + description: | + The UUID of the router into which the VPN service + is inserted. + in: body + required: true + type: string +router_ids: + description: | + A list of UUIDs for routers that are associated + with the firewall. + in: body + required: false + type: array +router_ids_1: + description: | + A list of UUIDs for routers that are associated + with the firewall. + in: body + required: true + type: array +routers: + description: | + A list of ``router`` objects. + in: body + required: true + type: array +routes: + description: | + The extra routes configuration for L3 router. + in: body + required: true + type: array +routes_1: + description: | + A list of dictionary pairs in this format: + + :: + + [ + { + "nexthop":"IPADDRESS", + "destination":"CIDR" + } + ] + in: body + required: false + type: object +security_group: + description: | + A ``security_group`` object. + in: body + required: true + type: object +security_group_1: + description: | + The number of security groups allowed for each + tenant. + in: body + required: true + type: integer +security_group_2: + description: | + The number of security groups allowed for each + tenant. + in: body + required: false + type: integer +security_group_id: + description: | + The security group UUID to associate with this + security group rule. + in: body + required: true + type: string +security_group_id_1: + description: | + The UUID of the security group. + in: body + required: true + type: string +security_group_rule: + description: | + A ``security_group_rule`` object. + in: body + required: true + type: object +security_group_rule_1: + description: | + The number of security group rules allowed for + each tenant. + in: body + required: true + type: integer +security_group_rule_2: + description: | + The number of security group rules allowed for + each tenant. + in: body + required: false + type: integer +security_group_rules: + description: | + A list of ``security_group_rule`` objects. + in: body + required: true + type: array +security_groups: + description: | + A list of ``security_group`` objects. + in: body + required: true + type: array +segments: + description: | + A list of provider ``segment`` objects. + in: body + required: true + type: array +service_profile: + description: | + A ``service_profile`` object. + in: body + required: true + type: object +service_profiles: + description: | + Service profile UUIDs associated with this + flavor. + in: body + required: true + type: array +service_profiles_1: + description: | + A list of ``service_profile`` objects. + in: body + required: true + type: array +service_type: + description: | + Service type (ex: LOADBALANCERV2) for the flavor. + in: body + required: true + type: string +session_persistence: + description: | + The session persistence algorithm. This algorithm + is a dictionary with type and cookie_name keys. + in: body + required: false + type: object +session_persistence_1: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: false + type: object +session_persistence_2: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: true + type: object +session_persistence_3: + description: | + Session persistence parameters for the VIP. Omit + the ``session_persistence`` parameter to prevent session + persistence. When no session persistence is used, the + ``session_persistence`` parameter does not appear in the API + response. To clear session persistence for the VIP, set the + ``session_persistence`` parameter to ``null`` in a VIP update + request. + in: body + required: false + type: object +shared: + description: | + Set to ``true`` to make this firewall policy + visible to other tenants. Default is ``false``. + in: body + required: false + type: boolean +shared_1: + description: | + Set to ``true`` to share this firewall rule with + other tenants. Other tenants can use a shared rule in firewall + policies that this tenant does not own. Valid value is ``true`` or + ``false``. Default is ``false``. + in: body + required: false + type: boolean +shared_10: + description: | + Indicates whether this policy is shared across + all tenants. + in: body + required: true + type: boolean +shared_11: + description: | + Indicates whether this subnet pool is shared + across all tenants. + in: body + required: true + type: boolean +shared_2: + description: | + Indicates whether this metering label is shared + across all tenants. + in: body + required: false + type: boolean +shared_3: + description: | + Admin-only. Indicates whether this network is + shared across all tenants. + in: body + required: false + type: boolean +shared_4: + description: | + Set to ``true`` to share this policy with other + tenants. Default is ``false``. + in: body + required: false + type: boolean +shared_5: + description: | + Admin-only. Indicates whether this subnet pool is + shared across all tenants. + in: body + required: false + type: boolean +shared_6: + description: | + Indicates whether the firewall policy is shared + across all tenants. + in: body + required: true + type: boolean +shared_7: + description: | + Indicates whether this firewall rule is shared + with other tenants. Other tenants can use a shared rule in + firewall policies that this tenant does not own. + in: body + required: true + type: boolean +shared_8: + description: | + Indicates whether this metering label is shared + across all tenants. + in: body + required: true + type: boolean +shared_9: + description: | + Indicates whether this network is shared across + all tenants. + in: body + required: true + type: boolean +sni_container_refs: + description: | + A list of references to TLS secrets. + in: body + required: false + type: array +sni_container_refs_1: + description: | + A list of references to TLS secrets. + in: body + required: true + type: array +source_ip_address: + description: | + The source IPv4 or IPv6 address or CIDR. + in: body + required: true + type: string +source_port: + description: | + The source port or port range. A valid value is + a port number, as an integer, or a port range, in the format of a + ``:`` separated range. For a port range, include both ends of the + range. For example, ``80:90``. + in: body + required: false + type: string +source_port_1: + description: | + The source port or port range. + in: body + required: true + type: string +status: + description: | + The status of the firewall service. Value is + ``ACTIVE``, ``INACTIVE``, ``ERROR``, ``PENDING_CREATE``, + ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: true + type: string +status_1: + description: | + The status of the floating IP address. + in: body + required: true + type: string +status_2: + description: | + The operational status of the IPSec connection. + Value is ``ACTIVE``, ``DOWN``, ``BUILD``, ``ERROR``, + ``PENDING_CREATE``, ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: false + type: string +status_3: + description: | + The status of the member. Indicates whether the + member is operational. + in: body + required: true + type: string +status_4: + description: | + The network status. + in: body + required: true + type: string +status_5: + description: | + The status of the pool. Indicates whether the + pool is operational. + in: body + required: true + type: string +status_6: + description: | + The status of the VIP. Indicates whether the VIP + is operational. + in: body + required: true + type: string +status_7: + description: | + Indicates whether IPSec VPN service is currently + operational. Value is ``ACTIVE``, ``DOWN``, ``BUILD``, ``ERROR``, + ``PENDING_CREATE``, ``PENDING_UPDATE``, or ``PENDING_DELETE``. + in: body + required: true + type: string +status_8: + description: | + Indicates whether the IPSec connection is + currently operational. Value is ``ACTIVE``, ``DOWN``, ``BUILD``, + ``ERROR``, ``PENDING_CREATE``, ``PENDING_UPDATE``, or + ``PENDING_DELETE``. + in: body + required: true + type: string +status_description: + description: | + Human-readable description of the status. + in: body + required: true + type: string +subnet: + description: | + The number of subnets allowed for each tenant. + in: body + required: true + type: integer +subnet_1: + description: | + The number of subnets allowed for each tenant. + in: body + required: false + type: integer +subnet_id: + description: | + The UUID of the subnet. + in: body + required: true + type: string +subnet_id_1: + description: | + If you omit this parameter, LBaaS uses the + ``vip_subnet_id`` parameter value for the subnet UUID. + in: body + required: false + type: integer +subnet_id_2: + description: | + The UUID of the subnet on which to allocate the + virtual IP (VIP) address. + in: body + required: true + type: string +subnet_id_3: + description: | + (Deprecated) The subnet where the tenant wants + the VPN service. + in: body + required: false + type: string +subnet_id_4: + description: | + (Deprecated) The subnet where the tenant wants + the VPN service. + in: body + required: true + type: string +subnet_ip_availability: + description: | + This is dictionary showing subnet IP + availability. It contains information for every subnet associated + to each network as described in the parameters. + in: body + required: true + type: array +subnet_name: + description: | + The name of the subnet. + in: body + required: true + type: string +subnetpool: + description: | + A ``subnetpool`` object. + in: body + required: true + type: object +subnetpool_1: + description: | + The number of subnet pools allowed for each + tenant. + in: body + required: true + type: integer +subnetpool_2: + description: | + The number of subnet pools allowed for each + tenant. + in: body + required: false + type: integer +subnetpools: + description: | + A list of ``subnetpool`` objects. + in: body + required: true + type: array +subnets: + description: | + The associated subnets. + in: body + required: true + type: array +tags: + description: | + The list of tags on the resource. + in: body + required: true + type: array +tenant_id: + description: | + The UUID of the tenant. + in: body + required: true + type: string +tenant_id_1: + description: | + The owner of the firewall policy. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_10: + description: | + The UUID of the tenant who owns the load + balancer. Only administrative users can specify a tenant UUID + other than their own. + in: body + required: true + type: string +tenant_id_11: + description: | + The UUID of the tenant who owns the member. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_12: + description: | + The UUID of the tenant who owns the member. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_13: + description: | + The tenant UUID for the metering label. + in: body + required: true + type: string +tenant_id_14: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_15: + description: | + The tenant UUID of QoS policy owner. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_16: + description: | + The UUID of the tenant who owns the pool. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_17: + description: | + The UUID of the tenant who owns the security + group rule. Only administrative users can specify a tenant UUID + other than their own. + in: body + required: true + type: string +tenant_id_18: + description: | + The UUID of the tenant who owns the security + group. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: false + type: string +tenant_id_19: + description: | + The UUID of the tenant who owns the subnet pool. + Only administrative users can specify a tenant UUID other than + their own. You cannot change this value through authorization + policies. + in: body + required: false + type: string +tenant_id_2: + description: | + The UUID of the tenant who owns the firewall + rule. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: true + type: string +tenant_id_20: + description: | + The UUID of the tenant who owns the VIP. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: false + type: string +tenant_id_21: + description: | + Owner of the VPN endpoint group. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_22: + description: | + Owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: false + type: string +tenant_id_23: + description: | + The UUID of the tenant who owns the firewall + policy. + in: body + required: true + type: string +tenant_id_24: + description: | + The UUID of the tenant who owns the firewall + rule. + in: body + required: true + type: string +tenant_id_25: + description: | + The UUID of the tenant who owns the health + monitor. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: true + type: string +tenant_id_26: + description: | + The owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_27: + description: | + Owner of the VPN service. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_28: + description: | + The UUID of the tenant who owns the VIP. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_29: + description: | + The UUID of the tenant who owns the network. + in: body + required: true + type: string +tenant_id_3: + description: | + The owner of the firewall service. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_30: + description: | + The UUID of tenant or project. + in: body + required: true + type: string +tenant_id_31: + description: | + The UUID of the tenant who owns the QoS policy. + in: body + required: true + type: string +tenant_id_32: + description: | + The UUID of the tenant who owns the pool. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_34: + description: | + The UUID of the tenant who owns the subnet pool. + in: body + required: true + type: string +tenant_id_4: + description: | + The UUID of the tenant. Only administrative users + can specify a tenant UUID other than their own. + in: body + required: false + type: string +tenant_id_5: + description: | + The UUID of the tenant who owns the health + monitor. Only administrative users can specify a tenant UUID other + than their own. + in: body + required: false + type: string +tenant_id_6: + description: | + The owner of the IKE policy. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_7: + description: | + Owner of the IPSec policy. Only administrative + users can specify a tenant UUID other than their own. + in: body + required: true + type: string +tenant_id_8: + description: | + Owner of the IPSec connection. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +tenant_id_9: + description: | + The UUID of the tenant who owns the listener. + Only administrative users can specify a tenant UUID other than + their own. + in: body + required: true + type: string +timeout: + description: | + The maximum time, in seconds, that a monitor + waits to connect before it times out. This value must be less than + the delay value. + in: body + required: true + type: integer +timeout_1: + description: | + The dead peer detection (DPD) timeout in seconds. + A valid value is a positive integer that is greater than the DPD + ``interval`` value. Default is 120. + in: body + required: false + type: integer +timeout_2: + description: | + The dead peer detection (DPD) timeout, in + seconds. A valid value is a positive integer that is greater than + the DPD ``interval`` value. Default is 120. + in: body + required: true + type: integer +timeout_3: + description: | + The maximum time, in seconds, that a monitor + waits to connect before it times out. This value must be less than + the delay value. + in: body + required: false + type: integer +total_ips: + description: | + The total number of IP addresses in a network. + in: body + required: true + type: integer +transform_protocol: + description: | + The transform protocol. A valid value is ``ESP``, + ``AH``, or ``AH- ESP``. Default is ``ESP``. + in: body + required: false + type: string +transform_protocol_1: + description: | + The transform protocol. A valid value is ``ESP``, + ``AH``, or ``AH- ESP``. Default is ``ESP``. + in: body + required: true + type: string +type: + description: | + The type of probe sent by the load balancer to + verify the member state. A valid value is ``PING``, ``TCP``, + ``HTTP``, or ``HTTPS``. + in: body + required: true + type: string +type_1: + description: | + The type of QoS policy. + in: body + required: false + type: string +type_2: + description: | + The type of the endpoints in the group. A valid + value is ``subnet``, ``cidr``, ``network``, ``router``, or + ``vlan``. + in: body + required: true + type: string +type_3: + description: | + The type of probe sent by the load balancer to + verify the member state, which is ``PING``, ``TCP``, ``HTTP``, or + ``HTTPS``. + in: body + required: true + type: string +units: + description: | + The units for the lifetime of the security + association. The lifetime consists of a unit and integer value. + You can omit either the unit or value portion of the lifetime. + Default unit is seconds and default value is 3600. + in: body + required: false + type: string +units_1: + description: | + The units for the lifetime of the security + association. The lifetime consists of a unit and integer value. + You can omit either the unit or value portion of the lifetime. + Default unit is seconds and default value is 3600. + in: body + required: true + type: string +updated: + description: | + The date and time stamp when the extension was + last updated. + in: body + required: true + type: string +updated_at: + description: | + Time at which subnetpool has been updated. + in: body + required: true + type: string +url_path: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. A valid value is a string that + begins with a forward slash (/). + in: body + required: false + type: string +url_path_1: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. A string value that must begin + with the forward slash (/). + in: body + required: false + type: string +url_path_2: + description: | + The HTTP path of the request sent by the monitor + to test the health of a member. Must be a string that begins with + a forward slash (/). + in: body + required: true + type: string +used_ips: + description: | + The number of used IP addresses of all subnets in + a network. + in: body + required: true + type: integer +value: + description: | + The lifetime value, as a positive integer. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: false + type: integer +value_1: + description: | + The lifetime value, as a positive integer. The + lifetime consists of a unit and integer value. You can omit either + the unit or value portion of the lifetime. Default unit is seconds + and default value is 3600. + in: body + required: true + type: integer +vip: + description: | + A ``vip`` object. + in: body + required: true + type: object +vip_address: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: false + type: string +vip_address_1: + description: | + The IP address of the VIP. + format: ipv4 + in: body + required: true + type: string +vip_id: + description: | + The UUID of the virtual IP (VIP) address. + in: body + required: true + type: string +vip_subnet_id: + description: | + The UUID of the subnet on which to allocate the + virtual IP (VIP) address. + in: body + required: true + type: string +vips: + description: | + A list of ``vip`` objects. + in: body + required: true + type: array +vlan_transparent: + description: | + The state of the network, which is VLAN + transparent (``true``) or not VLAN transparent (``false``). + in: body + required: true + type: boolean +vpnservice: + description: | + A ``vpnservice`` object. + in: body + required: true + type: object +vpnservice_id: + description: | + The UUID of the VPN service. + in: body + required: true + type: string +vpnservices: + description: | + A list of VPN service objects. + in: body + required: true + type: array +weight: + description: | + A positive integer value that indicates the + relative portion of traffic that this member should receive from + the pool. For example, a member with a weight of 10 receives five + times as much traffic as a member with a weight of 2. + in: body + required: false + type: integer +weight_1: + description: | + The weight of a member determines the portion of + requests or connections it services compared to the other members + of the pool. A value of 0 means the member does not participate in + load- balancing but still accepts persistent connections. A valid + value is from 0 to 256. + in: body + required: false + type: integer +weight_2: + description: | + The weight of a member determines the portion of + requests or connections it services compared to the other members + of the pool. A value of 0 means the member does not participate in + load- balancing but still accepts persistent connections. A valid + value is from 0 to 256. + in: body + required: true + type: integer + diff --git a/api-ref/source/v2-ext/port-binding.inc b/api-ref/source/v2-ext/port-binding.inc new file mode 100644 index 000000000..878c20d3e --- /dev/null +++ b/api-ref/source/v2-ext/port-binding.inc @@ -0,0 +1,113 @@ +.. -*- rst -*- + +========================================= +Ports binding extended attributes (ports) +========================================= + +Lists, creates, shows information for, updates, and deletes ports. + +Show port details (port binding) +================================ + +.. rest_method:: GET /v2.0/ports/{port_id} + +Shows details for a port. + +Normal response codes: 200 +Error response codes: + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-bind-show-response.json + :language: javascript + +Update port (port binding) +========================== + +.. rest_method:: PUT /v2.0/ports/{port_id} + +Updates a port. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-bind-create-update-response.json + :language: javascript + +Delete port (port binding) +========================== + +.. rest_method:: DELETE /v2.0/ports/{port_id} + +Deletes a port. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +List ports (port binding) +========================= + +.. rest_method:: GET /v2.0/ports + +Lists ports to which the tenant has access. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/ports-list-response.json + :language: javascript + +Create port (port binding) +========================== + +.. rest_method:: POST /v2.0/ports + +Creates a port on a network. + +Error response codes:201,403,401,400, + +Request +------- + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + diff --git a/api-ref/source/v2-ext/qos-ext.inc b/api-ref/source/v2-ext/qos-ext.inc new file mode 100644 index 000000000..490174480 --- /dev/null +++ b/api-ref/source/v2-ext/qos-ext.inc @@ -0,0 +1,538 @@ +.. -*- rst -*- + +================== +QoS policies (qos) +================== + +Lists, creates, shows information for, and updates QoS policies. + +Show bandwidth limit rule details +================================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Shows details for a bandwidth limit rule for a QoS policy. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - rule_id: rule_id + - policy_id: policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-show-response.json + :language: javascript + +Update bandwidth limit rule +=========================== + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Updates a bandwidth limit rule for a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + - rule_id: rule_id + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-update-response.json + :language: javascript + +Delete bandwidth limit rule +=========================== + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id} + +Deletes a bandwidth limit rule for a QoS policy. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - rule_id: rule_id + - policy_id: policy_id + +List QoS policies +================= + +.. rest_method:: GET /v2.0/qos/policies + +Lists all QoS policies that are associated with your tenant account. + +The list might be empty. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - description: description + - policy_id: policy_id + - tenant_id: tenant_id + - dscp_marking_rules: dscp_marking_rules + - policies: policies + - shared: shared + - dscp_mark: dscp_mark + - id: id + - max_burst_kbps: max_burst_kbps + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policies-list-response.json + :language: javascript + +Create QoS policy +================= + +.. rest_method:: POST /v2.0/qos/policies + +Creates a QoS policy. + +Creates a QoS policy by using the configuration that you define in +the request object. A response object is returned. The object +contains a unique ID. + +If the caller is not an administrative user, this call returns the +HTTP ``Forbidden (403)`` response code. + +Users with an administrative role can create policies on behalf of +other tenants by specifying a tenant UUID that is different than +their own. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - type: type + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/policy-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - id: id + - name: name + +Show DSCP marking rule details +============================== + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Shows details for a DSCP marking rule for a QoS policy. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-show-response.json + :language: javascript + +Update DSCP marking rule +======================== + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Updates a DSCP marking rule for a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-update-response.json + :language: javascript + +Delete DSCP marking rule +======================== + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id} + +Deletes a DSCP marking rule for a QoS policy. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +List DSCP marking rules for QoS policy +====================================== + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/dscp_marking_rules + +Lists all DSCP marking rules for a QoS policy. + +The list may be empty. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rules: dscp_marking_rules + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rules-list-response.json + :language: javascript + +Create DSCP marking rule +======================== + +.. rest_method:: POST /v2.0/qos/policies/{policy_id}/dscp_marking_rules + +Creates a DSCP marking rule for a QoS policy. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/dscp_marking_rule-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - dscp_marking_rule: dscp_marking_rule + - dscp_mark: dscp_mark + - id: id + - policy_id: policy_id + +Show QoS policy details +======================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id} + +Shows details for a QoS policy. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - description: description + - policy_id: policy_id + - tenant_id: tenant_id + - dscp_marking_rules: dscp_marking_rules + - policy: policy + - shared: shared + - dscp_mark: dscp_mark + - id: id + - max_burst_kbps: max_burst_kbps + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policy-show-response.json + :language: javascript + +Update QoS policy +================= + +.. rest_method:: PUT /v2.0/qos/policies/{policy_id} + +Updates a QoS policy. + +If the request is valid, the service returns the ``Accepted (202)`` +response code. + +Normal response codes: 200 +Error response codes:400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - type: type + - name: name + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/policy-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - policy: policy + - shared: shared + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/policy-update-response.json + :language: javascript + +Delete QoS policy +================= + +.. rest_method:: DELETE /v2.0/qos/policies/{policy_id} + +Deletes a QoS policy. + +Error response codes:204,400,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +List bandwidth limit rules for QoS policy +========================================= + +.. rest_method:: GET /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules + +Lists all bandwidth limit rules for a QoS policy. + +The list might be empty. + +Normal response codes: 200 +Error response codes:500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - policy_id: policy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - max_kbps: max_kbps + - bandwidth_limit_rules: bandwidth_limit_rules + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rules-list-response.json + :language: javascript + +Create bandwidth limit rule +=========================== + +.. rest_method:: POST /v2.0/qos/policies/{policy_id}/bandwidth_limit_rules + +Creates a bandwidth limit rule for a QoS policy. + +Error response codes:201,404,409,401,413,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/qos/bandwidth_limit_rule-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - bandwidth_limit_rule: bandwidth_limit_rule + - max_kbps: max_kbps + - id: id + - max_burst_kbps: max_burst_kbps + - policy_id: policy_id + diff --git a/api-ref/source/v2-ext/quotas.inc b/api-ref/source/v2-ext/quotas.inc new file mode 100644 index 000000000..400ce315b --- /dev/null +++ b/api-ref/source/v2-ext/quotas.inc @@ -0,0 +1,156 @@ +.. -*- rst -*- + +========================= +Quotas extension (quotas) +========================= + +Lists quotas for tenants who have non-default quota values, and +lists, updates, and resets quotas for a tenant. + +A quota value of ``-1`` means that quota has no limit. + +List quotas for tenants with non-default quota values +===================================================== + +.. rest_method:: GET /v2.0/quotas + +Lists quotas for tenants who have non-default quota values. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quotas: quotas + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-list-response.json + :language: javascript + +List quotas for a tenant +======================== + +.. rest_method:: GET /v2.0/quotas/{tenant_id} + +Lists quotas for a tenant. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-list-for-tenant-response.json + :language: javascript + +Update quota for a tenant +========================= + +.. rest_method:: PUT /v2.0/quotas/{tenant_id} + +Updates quotas for a tenant. Use when non-default quotas are desired. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + - tenant_id: tenant_id + +Request Example +--------------- + +.. literalinclude:: ../samples/quotas/quotas-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - subnet: subnet + - network: network + - floatingip: floatingip + - subnetpool: subnetpool + - quota: quota + - security_group_rule: security_group_rule + - security_group: security_group + - router: router + - rbac_policy: rbac_policy + - port: port + +Response Example +---------------- + +.. literalinclude:: ../samples/quotas/quotas-update-response.json + :language: javascript + +Reset quota for a tenant +======================== + +.. rest_method:: DELETE /v2.0/quotas/{tenant_id} + +Resets quotas to default values for a tenant. + +Error response codes:404,403,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + diff --git a/api-ref/source/v2-ext/security-groups.inc b/api-ref/source/v2-ext/security-groups.inc new file mode 100644 index 000000000..702664019 --- /dev/null +++ b/api-ref/source/v2-ext/security-groups.inc @@ -0,0 +1,212 @@ +.. -*- rst -*- + +================================= +Security groups (security-groups) +================================= + +Lists, creates, shows information for, updates, and deletes +security groups. + +Show security group +=================== + +.. rest_method:: GET /v2.0/security-groups/{security_group_id} + +Shows details for a security group. + +The response contains the description, name, UUID, and security +group rules that are associated with the security group and tenant. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group_id: security_group_id + - verbose: verbose + - fields: fields + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - security_group: security_group + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-show-response.json + :language: javascript + +Update security group +===================== + +.. rest_method:: PUT /v2.0/security-groups/{security_group_id} + +Updates a security group. + +Normal response codes: 200 +Error response codes:413,405,404,403,401,400,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - security_group_id: security_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - security_group: security_group + - tenant_id: tenant_id + - description: description + - name: name + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-update-response.json + :language: javascript + +Delete security group +===================== + +.. rest_method:: DELETE /v2.0/security-groups/{security_group_id} + +Deletes an OpenStack Networking security group. + +This operation deletes an OpenStack Networking security group and +its associated security group rules, provided that a port is not +associated with the security group. + +This operation does not require a request body. This operation does +not return a response body. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group_id: security_group_id + +List security groups +==================== + +.. rest_method:: GET /v2.0/security-groups + +Lists OpenStack Networking security groups to which the tenant has access. + +The list shows the UUID for and the rules that are associated with +each security group. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + - security_groups: security_groups + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-groups-list-response.json + :language: javascript + +Create security group +===================== + +.. rest_method:: POST /v2.0/security-groups + +Creates an OpenStack Networking security group. + +This operation creates a security group with default security group +rules for the IPv4 and IPv6 ether types. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - security_group: security_group + - tenant_id: tenant_id + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - description: description + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - security_group: security_group + - id: id + - name: name + diff --git a/api-ref/source/v2-ext/security_group_rules.inc b/api-ref/source/v2-ext/security_group_rules.inc new file mode 100644 index 000000000..5ce7bbba5 --- /dev/null +++ b/api-ref/source/v2-ext/security_group_rules.inc @@ -0,0 +1,144 @@ +.. -*- rst -*- + +=========================================== +Security group rules (security-group-rules) +=========================================== + +Lists, creates, shows information for, and deletes security group +rules. + +Show security group rule +======================== + +.. rest_method:: GET /v2.0/security-group-rules/{security-group-rules-id} + +Shows detailed information for a security group rule. + +The response body contains the following information about the +security group rule: + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-rule-show-response.json + :language: javascript + +Delete security group rule +========================== + +.. rest_method:: DELETE /v2.0/security-group-rules/{security-group-rules-id} + +Deletes a rule from an OpenStack Networking security group. + +Error response codes:404,204,401, + +Request +------- + +List security group rules +========================= + +.. rest_method:: GET /v2.0/security-group-rules + +Lists a summary of all OpenStack Networking security group rules that the tenant can access. + +The list provides the UUID for each security group rule. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_rules: security_group_rules + - security_group_id: security_group_id + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id + +Response Example +---------------- + +.. literalinclude:: ../samples/security-groups/security-group-rules-list-response.json + :language: javascript + +Create security group rule +========================== + +.. rest_method:: POST /v2.0/security-group-rules + +Creates an OpenStack Networking security group rule. + +Error response codes:201,404,409,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + +Request Example +--------------- + +.. literalinclude:: ../samples/security-groups/security-group-rule-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - remote_group_id: remote_group_id + - direction: direction + - protocol: protocol + - ethertype: ethertype + - port_range_max: port_range_max + - security_group_id: security_group_id + - security_group_rule: security_group_rule + - tenant_id: tenant_id + - port_range_min: port_range_min + - remote_ip_prefix: remote_ip_prefix + - id: id diff --git a/api-ref/source/v2-ext/subnetpools-ext.inc b/api-ref/source/v2-ext/subnetpools-ext.inc new file mode 100644 index 000000000..cd689f5ac --- /dev/null +++ b/api-ref/source/v2-ext/subnetpools-ext.inc @@ -0,0 +1,224 @@ +.. -*- rst -*- + +==================================== +Subnet pools extension (subnetpools) +==================================== + +Lists, creates, shows details for, updates, and deletes subnet +pools. + +Show subnet pool +================ + +.. rest_method:: GET /v2.0/subnetpools/{subnetpool_id} + +Shows information for a subnet pool. + +Use the ``fields`` query parameter to filter the results. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnetpool_id: subnetpool_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpool-show-response.json + :language: javascript + +Update subnet pool +================== + +.. rest_method:: PUT /v2.0/subnetpools/{subnetpool_id} + +Updates a subnet pool. + +Normal response codes: 200 +Error response codes:404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - subnetpool: subnetpool + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - default_prefixlen: default_prefixlen + - max_prefixlen: max_prefixlen + - subnetpool_id: subnetpool_id + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnetpool-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpool-update-response.json + :language: javascript + +Delete subnet pool +================== + +.. rest_method:: DELETE /v2.0/subnetpools/{subnetpool_id} + +Deletes a subnet pool. + +The operation fails if any subnets allocated from the subnet pool +are still in use. + +Error response codes:404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnetpool_id: subnetpool_id + +List subnet pools +================= + +.. rest_method:: GET /v2.0/subnetpools + +Lists subnet pools to which the tenant has access. + +Default policy settings returns exclusively subnet pools owned by +the tenant submitting the request, unless the request is submitted +by a user with administrative rights. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - subnetpools: subnetpools + - id: id + - max_prefixlen: max_prefixlen + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnetpools-list-response.json + :language: javascript + +Create subnet pool +================== + +.. rest_method:: POST /v2.0/subnetpools + +Creates a subnet pool. + +Error response codes:201,404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - subnetpool: subnetpool + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - shared: shared + - default_prefixlen: default_prefixlen + - max_prefixlen: max_prefixlen + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnetpool-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - name: name + - default_quota: default_quota + - tenant_id: tenant_id + - created_at: created_at + - subnetpool: subnetpool + - updated_at: updated_at + - prefixes: prefixes + - min_prefixlen: min_prefixlen + - address_scope_id: address_scope_id + - ip_version: ip_version + - shared: shared + - default_prefixlen: default_prefixlen + - id: id + - max_prefixlen: max_prefixlen diff --git a/api-ref/source/v2-ext/tag-ext.inc b/api-ref/source/v2-ext/tag-ext.inc new file mode 100644 index 000000000..c20cbfbc4 --- /dev/null +++ b/api-ref/source/v2-ext/tag-ext.inc @@ -0,0 +1,118 @@ +.. -*- rst -*- + +==================== +Tag extension (tags) +==================== + +Shows details for, updates, and deletes tags. This extension is +available since Mitaka release. + +Replace all tags +================ + +.. rest_method:: PUT /v2.0/{resource_type}/{resource_id}/tags + +Replaces all tags on the resource. + +Normal response codes: 200 +Error response codes:404,401,400,503,500, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + - resource_type: resource_type + - resource_id: resource_id + +Request Example +--------------- + +.. literalinclude:: ../samples/tag/tag-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - tags: tags + +Response Example +---------------- + +.. literalinclude:: ../samples/tag/tag-update-response.json + :language: javascript + +Remove all tags +=============== + +.. rest_method:: DELETE /v2.0/{resource_type}/{resource_id}/tags + +Removes all tags on the resource. + +Error response codes:500,404,204,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - resource_type: resource_type + - resource_id: resource_id + +Confirm a tag +============= + +.. rest_method:: GET /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Confirms a given tag is set on the resource. + +Error response codes:500,404,204,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + +Add a tag +========= + +.. rest_method:: PUT /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Adds a tag on the resource. + +Error response codes:201,404,500,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + +Remove a tag +============ + +.. rest_method:: DELETE /v2.0/{resource_type}/{resource_id}/tags/{tag} + +Removes a tag on the resource. + +Error response codes:500,404,204,401,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tag: tag + - resource_type: resource_type + - resource_id: resource_id + diff --git a/api-ref/source/v2-ext/vpnaas.inc b/api-ref/source/v2-ext/vpnaas.inc new file mode 100644 index 000000000..eeab2eef1 --- /dev/null +++ b/api-ref/source/v2-ext/vpnaas.inc @@ -0,0 +1,1104 @@ +.. -*- rst -*- + +============================================================================================================ +VPNaaS 2.0 (CURRENT) (vpn, vpnservices, ikepolicies, ipsecpolicies, endpoint-groups, ipsec-site-connections) +============================================================================================================ + +The Virtual-Private-Network-as-a-Service (VPNaaS) extension enables +OpenStack tenants to extend private networks across the public +telecommunication infrastructure. + +This initial implementation of the VPNaaS extension provides: + +- Site-to-site VPN that connects two private networks. + +- Multiple VPN connections per tenant. + +- IKEv1 policy support with 3des, aes-128, aes-256, or aes-192 + encryption. + +- IPSec policy support with 3des, aes-128, aes-192, or aes-256 + encryption, sha1 authentication, ESP, AH, or AH-ESP transform + protocol, and tunnel or transport mode encapsulation. + +- Dead Peer Detection (DPD) with hold, clear, restart, disabled, or + restart-by-peer actions. + +This extension introduces these resources: + +- ``service``. A parent object that associates VPN with a specific + subnet and router. + +- ``ikepolicy``. The Internet Key Exchange (IKE) policy that + identifies the authentication and encryption algorithm to use + during phase one and two negotiation of a VPN connection. + +- ``ipsecpolicy``. The IP security policy that specifies the + authentication and encryption algorithm and encapsulation mode to + use for the established VPN connection. + +- ``ipsec-site-connection``. Details for the site-to-site IPsec + connection, including the peer CIDRs, MTU, authentication mode, + peer address, DPD settings, and status. + +Create IKE policy +================= + +.. rest_method:: POST /v2.0/vpn/ikepolicies + +Creates an IKE policy. + +The IKE policy is used for phases one and two negotiation of the +VPN connection. You can specify both the authentication and +encryption algorithms for connections. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - ike_version: ike_version + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + +List IKE policies +================= + +.. rest_method:: GET /v2.0/vpn/ikepolicies + +Lists IKE policies. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicies-list-response.json + :language: javascript + +Create IPSec connection +======================= + +.. rest_method:: POST /v2.0/vpn/ipsec-site-connections + +Creates a site-to-site IPSec connection for a service. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +List IPSec connections +====================== + +.. rest_method:: GET /v2.0/vpn/ipsec-site-connections + +Lists all IPSec connections. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connections-list-response.json + :language: javascript + +Show IPSec connection +===================== + +.. rest_method:: GET /v2.0/vpn/ipsec-site-connections/{connection_id} + +Shows details for an IPSec connection. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - connection_id: connection_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-show-response.json + :language: javascript + +Update IPSec connection +======================= + +.. rest_method:: PUT /v2.0/vpn/ipsec-site-connections/{connection_id} + +Updates connection settings for an IPSec connection. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - psk: psk + - initiator: initiator + - description: description + - ipsec_site_connection: ipsec_site_connection + - admin_state_up: admin_state_up + - interval: interval + - peer_cidrs: peer_cidrs + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - local_ep_group_id: local_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + - peer_address: peer_address + - peer_id: peer_id + - name: name + - connection_id: connection_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - auth_mode: auth_mode + - ikepolicy_id: ikepolicy_id + - vpnservice_id: vpnservice_id + - local_ep_group_id: local_ep_group_id + - peer_address: peer_address + - id: id + - ipsec_site_connection: ipsec_site_connection + - route_mode: route_mode + - ipsecpolicy_id: ipsecpolicy_id + - peer_id: peer_id + - status: status + - psk: psk + - description: description + - initiator: initiator + - peer_cidrs: peer_cidrs + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - interval: interval + - mtu: mtu + - peer_ep_group_id: peer_ep_group_id + - dpd: dpd + - timeout: timeout + - action: action + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsec-site-connection-update-response.json + :language: javascript + +Remove IPSec connection +======================= + +.. rest_method:: DELETE /v2.0/vpn/ipsec-site-connections/{connection_id} + +Removes an IPSec connection. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - connection_id: connection_id + +Create VPN endpoint group +========================= + +.. rest_method:: POST /v2.0/vpn/endpoint-groups + +Creates a VPN endpoint group. + +The endpoint group contains one or more endpoints of a specific +type that you can use to create a VPN connections. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - description: description + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + +List VPN endpoint groups +======================== + +.. rest_method:: GET /v2.0/vpn/endpoint-groups + +Lists VPN endpoint groups. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-groups-list-response.json + :language: javascript + +List VPN services +================= + +.. rest_method:: GET /v2.0/vpn/vpnservices + +Lists all VPN services. + +The list might be empty. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservices: vpnservices + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservices-list-response.json + :language: javascript + +Create VPN service +================== + +.. rest_method:: POST /v2.0/vpn/vpnservices + +Creates a VPN service. + +The service is associated with a router. After you create the +service, it can contain multiple VPN connections. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - description: description + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - vpnservice: vpnservice + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpnservice-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + +Show VPN service details +======================== + +.. rest_method:: GET /v2.0/vpn/vpnservices/{service_id} + +Shows details for a VPN service. + +If the user is not an administrative user and the VPN service +object does not belong to the tenant account for the user, the +operation returns the ``Forbidden (403)`` response code. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservice-show-response.json + :language: javascript + +Update VPN service +================== + +.. rest_method:: PUT /v2.0/vpn/vpnservices/{service_id} + +Updates a VPN service. + +Updates the attributes of a VPN service. You cannot update a +service with a ``PENDING_*`` status. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - vpnservice: vpnservice + - description: description + - name: name + - admin_state_up: admin_state_up + - service_id: service_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpnservice-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - router_id: router_id + - status: status + - name: name + - external_v6_ip: external_v6_ip + - admin_state_up: admin_state_up + - subnet_id: subnet_id + - tenant_id: tenant_id + - external_v4_ip: external_v4_ip + - vpnservice: vpnservice + - id: id + - description: description + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpnservice-update-response.json + :language: javascript + +Remove VPN service +================== + +.. rest_method:: DELETE /v2.0/vpn/vpnservices/{service_id} + +Removes a VPN service. + +If the service has connections, the request is rejected. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - service_id: service_id + +Show IKE policy details +======================= + +.. rest_method:: GET /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Shows details for an IKE policy. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy_id: ikepolicy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-show-response.json + :language: javascript + +Update IKE policy +================= + +.. rest_method:: PUT /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Updates policy settings in an IKE policy. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - description: description + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - ike_version: ike_version + - ikepolicy_id: ikepolicy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy: ikepolicy + - ikepolicies: ikepolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - name: name + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - phase1_negotiation_mode: phase1_negotiation_mode + - units: units + - lifetime: lifetime + - id: id + - ike_version: ike_version + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ikepolicy-update-response.json + :language: javascript + +Remove IKE policy +================= + +.. rest_method:: DELETE /v2.0/vpn/ikepolicies/{ikepolicy_id} + +Removes an IKE policy. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ikepolicy_id: ikepolicy_id + +Show IPSec policy +================= + +.. rest_method:: GET /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Shows details for an IPSec policy. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicy_id: ipsecpolicy_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-show-response.json + :language: javascript + +Update IPSec policy +=================== + +.. rest_method:: PUT /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Updates policy settings in an IPSec policy. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - transform_protocol: transform_protocol + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - units: units + - lifetime: lifetime + - name: name + - ipsecpolicy_id: ipsecpolicy_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-update-response.json + :language: javascript + +Remove IPSec policy +=================== + +.. rest_method:: DELETE /v2.0/vpn/ipsecpolicies/{ipsecpolicy_id} + +Removes an IPSec policy. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicy_id: ipsecpolicy_id + +Show VPN endpoint group +======================= + +.. rest_method:: GET /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Shows details for a VPN endpoint group. + +Normal response codes: 200 +Error response codes:404,403,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_group_id: endpoint_group_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-show-response.json + :language: javascript + +Update VPN endpoint group +========================= + +.. rest_method:: PUT /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Updates settings for a VPN endpoint group. + +Normal response codes: 200 +Error response codes:404,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - name: name + - endpoint_group_id: endpoint_group_id + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - endpoints: endpoints + - type: type + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/vpn-endpoint-group-update-response.json + :language: javascript + +Remove VPN endpoint group +========================= + +.. rest_method:: DELETE /v2.0/vpn/endpoint-groups/{endpoint_group_id} + +Removes a VPN endpoint group. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - endpoint_group_id: endpoint_group_id + +Create IPSec policy +=================== + +.. rest_method:: POST /v2.0/vpn/ipsecpolicies + +Creates an IP security (IPSec) policy. + +The IPsec policy specifies the authentication and encryption +algorithms and encapsulation mode to use for the established VPN +connection. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - name: name + +Request Example +--------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicy-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - ipsecpolicy: ipsecpolicy + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + +List IPSec policies +=================== + +.. rest_method:: GET /v2.0/vpn/ipsecpolicies + +Lists all IPSec policies. + +Normal response codes: 200 +Error response codes:403,401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - ipsecpolicies: ipsecpolicies + - description: description + - tenant_id: tenant_id + - auth_algorithm: auth_algorithm + - encapsulation_mode: encapsulation_mode + - encryption_algorithm: encryption_algorithm + - pfs: pfs + - value: value + - transform_protocol: transform_protocol + - units: units + - lifetime: lifetime + - id: id + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/vpn/ipsecpolicies-list-response.json + :language: javascript + diff --git a/api-ref/source/v2/index.rst b/api-ref/source/v2/index.rst new file mode 100644 index 000000000..c507a910f --- /dev/null +++ b/api-ref/source/v2/index.rst @@ -0,0 +1,11 @@ +:tocdepth: 2 + +################### +Networking API v2.0 +################### + +.. include:: versions-networks-v2.inc +.. include:: networks.inc +.. include:: subnets.inc +.. include:: ports.inc +.. include:: service-type.inc diff --git a/api-ref/source/v2/networks.inc b/api-ref/source/v2/networks.inc new file mode 100644 index 000000000..5a7886bea --- /dev/null +++ b/api-ref/source/v2/networks.inc @@ -0,0 +1,272 @@ +.. -*- rst -*- + +======== +Networks +======== + +Lists, shows details for, creates, updates, and deletes networks. + +Show network details +==================== + +.. rest_method:: GET /v2.0/networks/{network_id} + +Shows details for a network. + +You can control which response parameters are returned by using the +fields query parameter. For information, see `Filtering and column +selection `__. + +The response might show extension response parameters. For +information, see `Networks multiple provider extension (networks) +`_. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - updated_at: updated_at + - changed_at: changed_at + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-show-response.json + :language: javascript + +Update network +============== + +.. rest_method:: PUT /v2.0/networks/{network_id} + +Updates a network. + +Normal response codes: 200 +Error response codes:404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - network: network + - admin_state_up: admin_state_up + - shared: shared + - port_security_enabled: port_security_enabled + - name: name + - network_id: network_id + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/network-update-response.json + :language: javascript + +Delete network +============== + +.. rest_method:: DELETE /v2.0/networks/{network_id} + +Deletes a network and its associated resources. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - network_id: network_id + +List networks +============= + +.. rest_method:: GET /v2.0/networks + +Lists networks to which the tenant has access. + +Use the ``fields`` query parameter to filter the response. For +information, see `Filtering and Column Selection `__. + +Use the ``tags``, ``tags-any``, ``not-tags``, ``not-tags-any`` +query parameter to filter the response with tags. For information, +see `REST API Impact `__. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - networks: networks + - mtu: mtu + - subnets: subnets + - shared: shared + - id: id + - qos_policy_id: qos_policy_id + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/networks-list-response.json + :language: javascript + +Create network +============== + +.. rest_method:: POST /v2.0/networks + +Creates a network. + +A request body is optional. An administrative user can specify +another tenant UUID, which is the tenant who owns the network, in +the request body. + +Error response codes:201,401,400, + +Request +------- + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/network-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - availability_zone_hints: availability_zone_hints + - availability_zones: availability_zones + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - qos_policy_id: qos_policy_id + - subnets: subnets + - shared: shared + - id: id + - network: network + +Bulk create networks +==================== + +.. rest_method:: POST /v2.0/networks + +Creates multiple networks in a single request. + +In the request body, specify a list of networks. + +The bulk create operation is always atomic. Either all or no +networks in the request body are created. + +Error response codes:201,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - router:external: router:external + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - port_security_enabled: port_security_enabled + - shared: shared + - networks: networks + +Request Example +--------------- + +.. literalinclude:: ../samples/networks/networks-bulk-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - status: status + - router:external: router:external + - subnets: subnets + - name: name + - admin_state_up: admin_state_up + - tenant_id: tenant_id + - mtu: mtu + - shared: shared + - id: id + - port_security_enabled: port_security_enabled + - networks: networks diff --git a/api-ref/source/v2/parameters.yaml b/api-ref/source/v2/parameters.yaml new file mode 100644 index 000000000..f21a215f2 --- /dev/null +++ b/api-ref/source/v2/parameters.yaml @@ -0,0 +1,434 @@ +# variables in header + +# variables in path +network_id_1: + description: | + The UUID of the network. + in: path + required: false + type: string +port_id: + description: | + The UUID of the port. + in: path + required: false + type: string +subnet_id_2: + description: | + The UUID of the subnet. + in: path + required: false + type: string + +# variables in query + +# variables in body +admin_state_up: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_1: + description: | + The administrative status of the port, which is + up (``true``) or down (``false``). + in: body + required: false + type: boolean +admin_state_up_2: + description: | + The administrative state of the network, which is + up (``true``) or down (``false``). + in: body + required: true + type: boolean +admin_state_up_3: + description: | + The administrative state of the port, which is up + (``true``) or down (``false``). + in: body + required: true + type: boolean +allowed_address_pairs: + description: | + A set of zero or more allowed address pairs. An + address pair contains an IP address and MAC address. + in: body + required: false + type: array +allowed_address_pairs_1: + description: | + A set of zero or more allowed address pairs. An + address pair consists of an IP address and MAC address. + in: body + required: true + type: array +availability_zone_hints: + description: | + The availability zone candidate for the network. + in: body + required: true + type: array +availability_zones: + description: | + The availability zone for the network. + in: body + required: true + type: array +changed_at: + description: | + Time at which the network has been created. + in: body + required: true + type: string +created_at: + description: | + Time at which port has been created. + in: body + required: true + type: string +default: + description: | + Defines whether the provider is the default for + the service type. If this value is ``true``, the provider is the + default. If this value is ``false``, the provider is not the + default. + in: body + required: true + type: boolean +device_id: + description: | + The UUID of the device that uses this port. For + example, a virtual server. + in: body + required: false + type: string +device_id_1: + description: | + The UUID of the device that uses this port. For + example, a virtual server. + in: body + required: true + type: string +device_owner: + description: | + The UUID of the entity that uses this port. For + example, a DHCP agent. + in: body + required: false + type: string +device_owner_1: + description: | + The UUID of the entity that uses this port. For + example, a DHCP agent. + in: body + required: true + type: string +extra_dhcp_opts: + description: | + A set of zero or more extra DHCP option pairs. An + option pair consists of an option value and name. + in: body + required: true + type: array +fixed_ips: + description: | + If you specify only a subnet UUID, OpenStack + Networking allocates an available IP from that subnet to the port. + If you specify both a subnet UUID and an IP address, OpenStack + Networking tries to allocate the address to the port. + in: body + required: false + type: array +fixed_ips_1: + description: | + The IP addresses for the port. Includes the IP + address and UUID of the subnet. + in: body + required: true + type: array +id: + description: | + The UUID of the network. + in: body + required: true + type: string +id_1: + description: | + The UUID of the port. + in: body + required: true + type: string +ip_address: + description: | + The IP address of an allowed address pair. + in: body + required: false + type: string +ip_address_1: + description: | + The fixed IP address of the port. + in: body + required: true + type: string +location: + description: | + Full URL to a service or server. + format: uri + in: body + required: true + type: string +mac_address: + description: | + The MAC address of an allowed address pair. + in: body + required: false + type: string +mac_address_1: + description: | + The MAC address. + in: body + required: true + type: string +mtu: + description: | + The MTU of a network resource. + in: body + required: true + type: integer +name: + description: | + The network name. + in: body + required: false + type: string +name_1: + description: | + A symbolic name for the port. + in: body + required: false + type: string +name_2: + description: | + The network name. + in: body + required: true + type: string +name_3: + description: | + The port name. + in: body + required: true + type: string +name_4: + description: | + User-facing provider name. + in: body + required: true + type: string +network: + description: | + A ``network`` object. + in: body + required: true + type: object +network_id: + description: | + The UUID of the network. + in: body + required: true + type: string +network_id_2: + description: | + The UUID of the attached network. + in: body + required: true + type: string +networks: + description: | + A list of ``network`` objects. + in: body + required: true + type: array +opt_name: + description: | + The extra DHCP option name. + in: body + required: false + type: string +opt_name_1: + description: | + The extra DHCP option name. + in: body + required: true + type: string +opt_value: + description: | + The extra DHCP option value. + in: body + required: false + type: string +opt_value_1: + description: | + The extra DHCP option value. + in: body + required: true + type: string +port: + description: | + A ``port`` object. + in: body + required: true + type: object +port_security_enabled: + description: | + The port security status. A valid value is + enabled (``true``) or disabled (``false``). + in: body + required: false + type: boolean +port_security_enabled_1: + description: | + The port security status. The status is enabled + (``true``) or disabled (``false``). + in: body + required: true + type: boolean +ports: + description: | + A list of ``port`` objects. + in: body + required: true + type: array +qos_policy_id: + description: | + The UUID of the QoS policy. + in: body + required: false + type: string +router:external: + description: | + Indicates whether this network is externally + accessible. + in: body + required: false + type: boolean +router:external_1: + description: | + Indicates whether this network is externally + accessible. + in: body + required: true + type: boolean +security_groups: + description: | + One or more security group UUIDs. + in: body + required: false + type: array +security_groups_1: + description: | + The UUIDs of any attached security groups. + in: body + required: true + type: array +service_providers: + description: | + A list of ``service_provider`` objects. + in: body + required: true + type: array +service_type: + description: | + The service type, which is ``CORE``, ``DUMMY``, + ``FIREWALL``, ``FLAVORS``, ``L3_ROUTER_NAT``, ``LOADBALANCER``, + ``LOADBALANCERV2``, ``METERING``, ``QOS``, or ``VPN``. + in: body + required: true + type: string +shared: + description: | + Admin-only. Indicates whether this network is + shared across all tenants. + in: body + required: false + type: boolean +shared_1: + description: | + Indicates whether this network is shared across + all tenants. By default, only administrative users can change this + value. + in: body + required: true + type: boolean +status: + description: | + The network status. + in: body + required: true + type: string +status_1: + description: | + The port status. Value is ``ACTIVE`` or ``DOWN``. + in: body + required: true + type: string +subnet_id: + description: | + If you specify only a subnet UUID, OpenStack + Networking allocates an available IP from that subnet to the port. + If you specify both a subnet UUID and an IP address, OpenStack + Networking tries to allocate the address to the port. + in: body + required: false + type: string +subnet_id_1: + description: | + The UUID of the subnet to which the port is + attached. + in: body + required: true + type: string +subnets: + description: | + The associated subnets. + in: body + required: true + type: array +tenant_id: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. You cannot change this value through authorization policies. + in: body + required: false + type: string +tenant_id_1: + description: | + The UUID of the tenant. + in: body + required: true + type: string +tenant_id_2: + description: | + The UUID of the tenant who owns the network. Only + administrative users can specify a tenant UUID other than their + own. + in: body + required: true + type: string +updated_at: + description: | + Time at which port has been updated. + in: body + required: true + type: string +updated_at_1: + description: | + Time at which the network has been updated. + in: body + required: true + type: string + diff --git a/api-ref/source/v2/ports.inc b/api-ref/source/v2/ports.inc new file mode 100644 index 000000000..9cb52ec67 --- /dev/null +++ b/api-ref/source/v2/ports.inc @@ -0,0 +1,350 @@ +.. -*- rst -*- + +===== +Ports +===== + +Lists, shows details for, creates, updates, and deletes ports. + +Show port details +================= + +.. rest_method:: GET /v2.0/ports/{port_id} + +Shows details for a port. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-show-response.json + :language: javascript + +Update port +=========== + +.. rest_method:: PUT /v2.0/ports/{port_id} + +Updates a port. + +You can update information for a port, such as its symbolic name +and associated IPs. When you update IPs for a port, any previously +associated IPs are removed, returned to the respective subnet +allocation pools, and replaced by the IPs in the request body. +Therefore, this operation replaces the ``fixed_ip`` attribute when +you specify it in the request body. If the updated IP addresses are +not valid or are already in use, the operation fails and the +existing IP addresses are not removed from the port. + +When you update security groups for a port and the operation +succeeds, any associated security groups are removed and replaced +by the security groups in the request body. Therefore, this +operation replaces the ``security_groups`` attribute when you +specify it in the request body. If the security groups are not +valid, the operation fails and the existing security groups are not +removed from the port. + +Normal response codes: 200 +Error response codes:404,403,401,400,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - port: port + - security_groups: security_groups + - device_id: device_id + - port_id: port_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-update-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/port-update-response.json + :language: javascript + +Delete port +=========== + +.. rest_method:: DELETE /v2.0/ports/{port_id} + +Deletes a port. + +Any IP addresses that are associated with the port are returned to +the respective subnets allocation pools. + +Error response codes:404,403,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - port_id: port_id + +List ports +========== + +.. rest_method:: GET /v2.0/ports + +Lists ports to which the tenant has access. + +Default policy settings return only those ports that are owned by +the tenant who submits the request, unless the request is submitted +by a user with administrative rights. Users can control which +attributes are returned by using the fields query parameter. You +can use query parameters to filter the response.For information, +see `Filtering and Column Selection `_. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - ports: ports + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + +Response Example +---------------- + +.. literalinclude:: ../samples/ports/ports-list-response.json + :language: javascript + +Create port +=========== + +.. rest_method:: POST /v2.0/ports + +Creates a port on a network. + +To define the network in which to create the port, specify the +``network_id`` attribute in the request body. + +Error response codes:201,404,403,401,400,503, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - port: port + - security_groups: security_groups + - device_id: device_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/port-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - port: port + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + +Bulk create ports +================= + +.. rest_method:: POST /v2.0/ports + +Creates multiple ports in a single request. Specify a list of ports in the request body. + +Guarantees the atomic completion of the bulk operation. + +Error response codes:201,404,403,401,400,503,409, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - fixed_ips: fixed_ips + - opt_name: opt_name + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - ip_address: ip_address + - ports: ports + - security_groups: security_groups + - device_id: device_id + +Request Example +--------------- + +.. literalinclude:: ../samples/ports/ports-bulk-create-request.json + :language: javascript + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - opt_value: opt_value + - status: status + - name: name + - allowed_address_pairs: allowed_address_pairs + - admin_state_up: admin_state_up + - network_id: network_id + - ip_address: ip_address + - extra_dhcp_opts: extra_dhcp_opts + - opt_name: opt_name + - updated_at: updated_at + - id: id + - ports: ports + - subnet_id: subnet_id + - device_owner: device_owner + - tenant_id: tenant_id + - mac_address: mac_address + - port_security_enabled: port_security_enabled + - fixed_ips: fixed_ips + - created_at: created_at + - security_groups: security_groups + - device_id: device_id + diff --git a/api-ref/source/v2/service-type.inc b/api-ref/source/v2/service-type.inc new file mode 100644 index 000000000..1fd719bfb --- /dev/null +++ b/api-ref/source/v2/service-type.inc @@ -0,0 +1,36 @@ +.. -*- rst -*- + +================= +Service providers +================= + +Lists service providers. + +List service providers +====================== + +.. rest_method:: GET /v2.0/service-providers + +Lists service providers and their associated service types. + +Normal response codes: 200 +Error response codes:404,409,401,400, + +Request +------- + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - default: default + - service_type: service_type + - service_providers: service_providers + - name: name + +Response Example +---------------- + +.. literalinclude:: ../samples/service-type-response.json + :language: javascript diff --git a/api-ref/source/v2/subnets.inc b/api-ref/source/v2/subnets.inc new file mode 100644 index 000000000..356b73535 --- /dev/null +++ b/api-ref/source/v2/subnets.inc @@ -0,0 +1,181 @@ +.. -*- rst -*- + +======= +Subnets +======= + +Lists, shows details for, creates, updates, and deletes subnet +resources. + +List subnets +============ + +.. rest_method:: GET /v2.0/subnets + +Lists subnets to which the tenant has access. + +Default policy settings returns exclusively subnets owned by the +tenant submitting the request, unless the request is submitted by a +user with administrative rights. You can control which attributes +are returned by using the fields query parameter. You can filter +results by using query string parameters. + +Normal response codes: 200 +Error response codes:401, + +Request +------- + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnets-list-response.json + :language: javascript + +Create subnet +============= + +.. rest_method:: POST /v2.0/subnets + +Creates a subnet on a network. + +OpenStack Networking does not try to derive the correct IP version +from the CIDR. If you do not specify the ``gateway_ip`` attribute, +OpenStack Networking allocates an address from the CIDR for the +gateway for the subnet. + +To specify a subnet without a gateway, set the ``gateway_ip`` +attribute to ``null`` in the request body. If you do not specify +the ``allocation_pools`` attribute, OpenStack Networking +automatically allocates pools for covering all IP addresses in the +CIDR, excluding the address reserved for the subnet gateway. +Otherwise, you can explicitly specify allocation pools as shown in +the following example. + +When you specify both the ``allocation_pools`` and ``gateway_ip`` +attributes, you must ensure that the gateway IP does not overlap +with the allocation pools; otherwise, the call returns the +``Conflict (409)`` response code. + +A subnet can have one or more name servers and host routes. Hosts +in this subnet use the name servers. Devices with IP addresses from +this subnet, not including the local subnet route, use the host +routes. + +Specify the ``ipv6_ra_mode`` and ``ipv6_address_mode`` attributes +to create subnets that support IPv6 configurations, such as +stateless address autoconfiguration (SLAAC), DHCPv6 stateful, and +DHCPv6 stateless configurations. + +Error response codes:201,404,403,401,400,409, + +Request +------- + +.. .. rest_parameters:: parameters.yaml + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnet-create-request.json + :language: javascript + +Bulk create subnet +================== + +.. rest_method:: POST /v2.0/subnets + +Creates multiple subnets in a single request. Specify a list of subnets in the request body. + +The bulk create operation is always atomic. Either all or no +subnets in the request body are created. + +Error response codes:201,404,403,401,400,409, + +Request +------- + +.. .. rest_parameters:: parameters.yaml + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnets-create-bulk-request.json + :language: javascript + +Show subnet details +=================== + +.. rest_method:: GET /v2.0/subnets/{subnet_id} + +Shows details for a subnet. + +Use the fields query parameter to filter the results. + +Normal response codes: 200 +Error response codes:404,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnet-show-response.json + :language: javascript + +Update subnet +============= + +.. rest_method:: PUT /v2.0/subnets/{subnet_id} + +Updates a subnet. + +Some attributes, such as IP version (ip_version), and CIDR (cidr) +cannot be updated. Attempting to update these attributes results in +a ``400 Bad Request`` error. + +Normal response codes: 200 +Error response codes:404,403,401,400, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + +Request Example +--------------- + +.. literalinclude:: ../samples/subnets/subnet-update-request.json + :language: javascript + +Response Example +---------------- + +.. literalinclude:: ../samples/subnets/subnet-update-response.json + :language: javascript + +Delete subnet +============= + +.. rest_method:: DELETE /v2.0/subnets/{subnet_id} + +Deletes a subnet. + +The operation fails if subnet IP addresses are still allocated. + +Error response codes:409,404,204,401, + +Request +------- + +.. rest_parameters:: parameters.yaml + + - subnet_id: subnet_id + diff --git a/api-ref/source/v2/versions-networks-v2.inc b/api-ref/source/v2/versions-networks-v2.inc new file mode 100644 index 000000000..8833b4402 --- /dev/null +++ b/api-ref/source/v2/versions-networks-v2.inc @@ -0,0 +1,56 @@ +.. -*- rst -*- + +============ +API versions +============ + +Lists information for all Networking API versions. + +Show API v2 details +=================== + +.. rest_method:: GET /v2.0 + +Shows details for Networking API v2.0. + +Normal response codes: 200 +Error response codes:203, + +Request +------- + +.. .. rest_parameters:: parameters.yaml + +Response Parameters +------------------- + +.. rest_parameters:: parameters.yaml + + - location: location + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/version-show-response.json + :language: javascript + +List API versions +================= + +.. rest_method:: GET / + +Lists information about all Networking API versions. + +Normal response codes: 200 +Error response codes:300, + +Request +------- + +.. .. rest_parameters:: parameters.yaml + +Response Example +---------------- + +.. literalinclude:: ../samples/networks/versions-list-response.json + :language: javascript diff --git a/test-requirements.txt b/test-requirements.txt index f213f99e2..e51eb1a74 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -10,6 +10,7 @@ python-subunit>=0.0.18 # Apache-2.0/BSD sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0 +os-api-ref>=0.1.0 # Apache-2.0 os-testr>=0.7.0 # Apache-2.0 testrepository>=0.0.18 # Apache-2.0/BSD testscenarios>=0.4 # Apache-2.0/BSD diff --git a/tox.ini b/tox.ini index 98fe50a96..dc0dd09de 100644 --- a/tox.ini +++ b/tox.ini @@ -29,6 +29,18 @@ commands = [testenv:docs] commands = sphinx-build -W -b html doc/source doc/build/html +[testenv:api-ref] +# This environment is called from CI scripts to test and publish +# the API Ref to developer.openstack.org. +# NOTE(sdague): this target does not use constraints because +# upstream infra does not yet support it. Once that's fixed, we can +# drop the install_command. +install_command = pip install -U --force-reinstall {opts} {packages} +whitelist_externals = rm +commands = + rm -rf api-ref/build + sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html + [testenv:debug] commands = oslo_debug_helper {posargs}