Move networking-bgpvpn API reference into neutron-lib
This commit converts the BGP VPN API documentation into standard format and moves it into the neutron-lib api-ref. Change-Id: Ib0fef2e368c47b1400ab60de19198aa1d1994b69 Closes-Bug: #1636415 Depends-On: I3ba35ec6d20d1f60b60183eaea1271727e17f2aa
This commit is contained in:
parent
b992719ce1
commit
4b00739847
|
@ -0,0 +1,237 @@
|
||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
========
|
||||||
|
BGP VPNs
|
||||||
|
========
|
||||||
|
|
||||||
|
A new BGPVPN resource is introduced. It contains a set of parameters for a
|
||||||
|
BGP-based VPN.
|
||||||
|
|
||||||
|
A BGPVPN is created by the admin and given to a tenant who can then associate
|
||||||
|
it to Networks or Routers.
|
||||||
|
|
||||||
|
The BGP VPNs API lists, shows details for, creates, updates, and deletes BGP VPNs.
|
||||||
|
|
||||||
|
List BGP VPNs
|
||||||
|
=============
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns
|
||||||
|
|
||||||
|
Lists BGP VPNs to which the project has access.
|
||||||
|
|
||||||
|
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 <https://wiki.openstack.org/wiki/Neutron/APIv2
|
||||||
|
-specification#Filtering_and_Column_Selection>`__.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- fields: fields
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpns: bgpvpns
|
||||||
|
- id: bgpvpn-id-body
|
||||||
|
- name: bgpvpn-name-required
|
||||||
|
- type: bgpvpn-type-required
|
||||||
|
- route_distinguishers: bgpvpn-route_distinguishers-required
|
||||||
|
- route_targets: bgpvpn-route_targets-required
|
||||||
|
- import_targets: bgpvpn-import_targets-required
|
||||||
|
- export_targets: bgpvpn-export_targets-required
|
||||||
|
- networks: bgpvpn-networks-required
|
||||||
|
- routers: bgpvpn-routers-required
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpns-list-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Create BGP VPNS
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2.0/bgpvpn/bgpvpns
|
||||||
|
|
||||||
|
Creates a BGP VPN.
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes: 400, 401
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn: bgpvpn
|
||||||
|
- name: bgpvpn-name
|
||||||
|
- route_distinguishers: bgpvpn-route_distinguishers
|
||||||
|
- route_targets: bgpvpn-route_targets
|
||||||
|
- import_targets: bgpvpn-import_targets
|
||||||
|
- export_targets: bgpvpn-export_targets
|
||||||
|
- tenant_id: tenant_id-request
|
||||||
|
- project_id: project_id-request
|
||||||
|
- type: bgpvpn-type
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpn-create-request.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn: bgpvpn
|
||||||
|
- id: bgpvpn-id-body
|
||||||
|
- name: bgpvpn-name-required
|
||||||
|
- type: bgpvpn-type-required
|
||||||
|
- route_targets: bgpvpn-route_targets-required
|
||||||
|
- import_targets: bgpvpn-import_targets-required
|
||||||
|
- export_targets: bgpvpn-export_targets-required
|
||||||
|
- networks: bgpvpn-networks-required
|
||||||
|
- routers: bgpvpn-routers-required
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpn-create-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Show BGP VPN details
|
||||||
|
====================
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}
|
||||||
|
|
||||||
|
Shows details for a BGP VPN.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn: bgpvpn
|
||||||
|
- id: bgpvpn-id-body
|
||||||
|
- name: bgpvpn-name-required
|
||||||
|
- type: bgpvpn-type-required
|
||||||
|
- route_distinguishers: bgpvpn-route_distinguishers-required
|
||||||
|
- route_targets: bgpvpn-route_targets-required
|
||||||
|
- import_targets: bgpvpn-import_targets-required
|
||||||
|
- export_targets: bgpvpn-export_targets-required
|
||||||
|
- networks: bgpvpn-networks-required
|
||||||
|
- routers: bgpvpn-routers-required
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpn-show-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Update a BGP VPN
|
||||||
|
================
|
||||||
|
|
||||||
|
.. rest_method:: PUT /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}
|
||||||
|
|
||||||
|
Updates a BGP VPN.
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
A non-admin user can only update the name parameter. All other updates require
|
||||||
|
admin privileges.
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- bgpvpn: bgpvpn
|
||||||
|
- name: bgpvpn-name
|
||||||
|
- route_distinguishers: bgpvpn-route_distinguishers
|
||||||
|
- route_targets: bgpvpn-route_targets
|
||||||
|
- import_targets: bgpvpn-import_targets
|
||||||
|
- export_targets: bgpvpn-export_targets
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpn-update-request.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn: bgpvpn
|
||||||
|
- id: bgpvpn-id-body
|
||||||
|
- name: bgpvpn-name-required
|
||||||
|
- type: bgpvpn-type-required
|
||||||
|
- route_distinguishers: bgpvpn-route_distinguishers-required
|
||||||
|
- route_targets: bgpvpn-route_targets-required
|
||||||
|
- import_targets: bgpvpn-import_targets-required
|
||||||
|
- export_targets: bgpvpn-export_targets-required
|
||||||
|
- networks: bgpvpn-networks-required
|
||||||
|
- routers: bgpvpn-routers-required
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/bgpvpns/bgpvpn-update-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Delete BGP VPN
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}
|
||||||
|
|
||||||
|
Deletes a BGP VPN and its network and/or router associations.
|
||||||
|
|
||||||
|
Normal response codes: 202
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
|
||||||
|
Response
|
||||||
|
--------
|
||||||
|
|
||||||
|
There is no body content for the response of a successful DELETE request.
|
|
@ -0,0 +1,157 @@
|
||||||
|
====================
|
||||||
|
Network Associations
|
||||||
|
====================
|
||||||
|
|
||||||
|
Associating a BGPVPN to a Network can be done for both BGPVPN of type L2 and of
|
||||||
|
type L3. For type L3, the semantic is that all Subnets bound to the Network
|
||||||
|
will be interconnected with the BGP VPN (and thus between themselves).
|
||||||
|
|
||||||
|
A given Network can be associated with multiple BGPVPNs.
|
||||||
|
|
||||||
|
Associating or disassociating a BGPVPN to a Network is done by manipulating a
|
||||||
|
Network association API resource as a sub-resource of the BGPVPN resource:
|
||||||
|
|
||||||
|
List Network Associations
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/network_associations
|
||||||
|
|
||||||
|
Lists network associations for a given BGP VPN.
|
||||||
|
|
||||||
|
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 <https://wiki.openstack.org/wiki/Neutron/APIv2
|
||||||
|
-specification#Filtering_and_Column_Selection>`__.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- fields: fields
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- network_associations: bgpvpn-network_associations
|
||||||
|
- id: bgpvpn-network_association_id
|
||||||
|
- network_id: bgpvpn-network_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/network_associations/network_association-list-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Create Network Association
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/network_associations
|
||||||
|
|
||||||
|
Creates a network association for a given BGP VPN
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- network_association: bgpvpn-network_association
|
||||||
|
- network_id: bgpvpn-network_id
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/network_associations/network_association-create-request.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- network_association: bgpvpn-network_association
|
||||||
|
- id: bgpvpn-network_association_id
|
||||||
|
- network_id: bgpvpn-network_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/network_associations/network_association-create-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Show Network Association details
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/network_associations/{network_association_id}
|
||||||
|
|
||||||
|
Shows details for a network association.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- network_association_id: bgpvpn-network_association_id-path
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- network_association: bgpvpn-network_association
|
||||||
|
- id: bgpvpn-network_association_id
|
||||||
|
- network_id: bgpvpn-network_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/network_associations/network_association-show-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Delete Network Association
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/network_associations/{network_association_id}
|
||||||
|
|
||||||
|
Deletes a network association.
|
||||||
|
|
||||||
|
Normal response codes: 202, 204
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- network_association_id: bgpvpn-network_association_id-path
|
||||||
|
|
||||||
|
Response
|
||||||
|
--------
|
||||||
|
|
||||||
|
There is no body content for the response of a successful DELETE request.
|
|
@ -0,0 +1,91 @@
|
||||||
|
=======================
|
||||||
|
BGP - MPLS VPN Overview
|
||||||
|
=======================
|
||||||
|
|
||||||
|
The ``bgpvpn`` extension implements the BGP VPN Interconnection API
|
||||||
|
which provides the ability to associate OpenStack networks and/or
|
||||||
|
routers with Multiprotocol Label Switching (MPLS) Virtual Private
|
||||||
|
Networks (VPNs) via Border Gateway Patrol (BGP) peering. BGP-MPLS VPNs
|
||||||
|
are commonly provided by telecommuncations service providers to
|
||||||
|
customers in addition to or instead of Internet connectivity for Wide
|
||||||
|
Area Networking. This API enables the interconnection of with these
|
||||||
|
WANs using *Route Targets* to indicate the desired network(s).
|
||||||
|
|
||||||
|
On Route Targets
|
||||||
|
================
|
||||||
|
|
||||||
|
``route_targets``, ``import_targets``, ``export_targets`` attributes
|
||||||
|
|
||||||
|
- The set of RTs used for import is the union of ``route_targets`` and ``import_targets``.
|
||||||
|
- The set of RTs used for export is the union of ``route_targets`` and ``export_targets``.
|
||||||
|
|
||||||
|
At least one of ``route_targets``, ``import_targets`` or ``export_targets`` options will
|
||||||
|
typically be defined, but the API will not enforce that and all lists can be
|
||||||
|
empty.
|
||||||
|
|
||||||
|
For instance, in the very typical use case where the BGP VPN uses a single
|
||||||
|
Route Target for both import and export, the route_targets parameter alone is
|
||||||
|
enough and will contain one Route target.
|
||||||
|
|
||||||
|
On Route Distinguishers (RDs)
|
||||||
|
=============================
|
||||||
|
|
||||||
|
The ``route_distinguishers`` parameter is optional and provides an
|
||||||
|
indication of the RDs that shall be used for routes announced for
|
||||||
|
Neutron networks. The contract is that when a list of RDs is specified,
|
||||||
|
the backend will use, for a said advertisement of a route, one of these
|
||||||
|
RDs. The motivation for having a list rather than only one RD is to
|
||||||
|
allow the support for multihoming a VPN prefix (typically for
|
||||||
|
resiliency, load balancing or anycast). A backend may or may not
|
||||||
|
support this behavior, and should report an API error in the latter
|
||||||
|
case. When not specified, the backend will use automatically-assigned
|
||||||
|
RDs (for instance <ip>:<number> RDs derived from the Provider Edge (PE) IP).
|
||||||
|
|
||||||
|
Valid strings for Route Distinguishers and Route Targets
|
||||||
|
========================================================
|
||||||
|
|
||||||
|
Valid strings for a Route Target or a Route Distinguisher are the following:
|
||||||
|
|
||||||
|
- <2-byte AS#>:<32bit-number>
|
||||||
|
- <4-byte AS#>:<16bit-number>
|
||||||
|
- <4-byte IPv4>:<16bit-number>
|
||||||
|
|
||||||
|
======================
|
||||||
|
BGP - MPLS VPN Caveats
|
||||||
|
======================
|
||||||
|
|
||||||
|
Association constraints
|
||||||
|
=======================
|
||||||
|
|
||||||
|
A given BGP VPN can be associated to multiple networks and/or multiple
|
||||||
|
routers.
|
||||||
|
|
||||||
|
To avoid any ambiguity on semantics in particular the context of
|
||||||
|
processing associated to a router (e.g. NAT or FWaaS), if a given subnet
|
||||||
|
in a network is bound to a router, this API does not allow to both
|
||||||
|
associate the network to an L3 BGP VPN and the router to the same or to
|
||||||
|
a distinct L3 BGP VPN.
|
||||||
|
|
||||||
|
Moreover, for BGP VPNs of type L3, there are possible cases of IP prefix
|
||||||
|
overlaps that can't be detected by the service plugin before BGP routes
|
||||||
|
are received, for which the behavior is left undefined by these
|
||||||
|
specifications (i.e. which of the overlapping routes is being used) and
|
||||||
|
will depend on the backend. This applies for both router associations
|
||||||
|
and network associations in the case where traffic is forwarded by a
|
||||||
|
router and the destination IP belongs both to a prefix of a BGP VPN
|
||||||
|
associated with the router or with the network originating the traffic,
|
||||||
|
and to a prefix of a subnet bound to the router; in such a case whether
|
||||||
|
the traffic will be delivered to the subnet or to the BGP VPN is not
|
||||||
|
defined by this API.
|
||||||
|
|
||||||
|
Connectivity Impact inside Openstack Neutron
|
||||||
|
============================================
|
||||||
|
|
||||||
|
Creating two BGP VPNs with RTs resulting in both VPNs to exchange
|
||||||
|
routes, and then associating these two BGP VPNs to two networks, will
|
||||||
|
result in establishing interconnectivity between these two networks,
|
||||||
|
this simply being the result of applying BGP VPN Route Target semantics
|
||||||
|
(i.e. without making prefixes to OpenStack networks a particular case).
|
||||||
|
|
||||||
|
This similarly applies to router associations.
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
===================
|
||||||
|
Router Associations
|
||||||
|
===================
|
||||||
|
|
||||||
|
Associating a BGPVPN to a Router can be done only for BGPVPN of type L3. The
|
||||||
|
semantic is that all Subnets bound to the Router will be interconnected with
|
||||||
|
the BGPVPN.
|
||||||
|
|
||||||
|
A said Router can be associated with multiple BGPVPNs.
|
||||||
|
|
||||||
|
Associating or disassociating a BGPVPN to a Router is done by manipulating a
|
||||||
|
Router association API resource as a sub-resource of the BGPVPN resource:
|
||||||
|
|
||||||
|
List Router Associations
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/router_associations
|
||||||
|
|
||||||
|
Lists router associations for a given BGP VPN.
|
||||||
|
|
||||||
|
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 <https://wiki.openstack.org/wiki/Neutron/APIv2
|
||||||
|
-specification#Filtering_and_Column_Selection>`__.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- fields: fields
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- router_associations: bgpvpn-router_associations
|
||||||
|
- id: bgpvpn-router_association_id
|
||||||
|
- router_id: bgpvpn-router_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/router_associations/router_association-list-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Create Router Association
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. rest_method:: POST /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/router_associations
|
||||||
|
|
||||||
|
Creates a router association for a given BGP VPN
|
||||||
|
|
||||||
|
Normal response codes: 201
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- router_association: bgpvpn-router_association
|
||||||
|
- router_id: bgpvpn-router_id
|
||||||
|
|
||||||
|
Request Example
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/router_associations/router_association-create-request.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- router_association: bgpvpn-router_association
|
||||||
|
- id: bgpvpn-router_association_id
|
||||||
|
- router_id: bgpvpn-router_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/router_associations/router_association-create-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Show Router Association details
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. rest_method:: GET /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/router_associations/{router_association_id}
|
||||||
|
|
||||||
|
Shows details for a router association.
|
||||||
|
|
||||||
|
Normal response codes: 200
|
||||||
|
|
||||||
|
Error response codes: 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- router_association_id: bgpvpn-router_association_id-path
|
||||||
|
|
||||||
|
Response Parameters
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- router_association: bgpvpn-router_association
|
||||||
|
- id: bgpvpn-router_association_id
|
||||||
|
- router_id: bgpvpn-router_id
|
||||||
|
- tenant_id: project_id
|
||||||
|
- project_id: project_id
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: samples/bgpvpn/router_associations/router_association-show-response.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
Delete Router Association
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. rest_method:: DELETE /v2.0/bgpvpn/bgpvpns/{bgpvpn_id}/router_associations/{router_association_id}
|
||||||
|
|
||||||
|
Deletes a router association.
|
||||||
|
|
||||||
|
Normal response codes: 202
|
||||||
|
|
||||||
|
Error response codes: 400, 401, 403, 404
|
||||||
|
|
||||||
|
Request
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- bgpvpn_id: bgpvpn-id-path
|
||||||
|
- router_association_id: bgpvpn-router_association_id-path
|
||||||
|
|
||||||
|
Response
|
||||||
|
--------
|
||||||
|
|
||||||
|
There is no body content for the response of a successful DELETE request.
|
|
@ -52,8 +52,8 @@ Quality of Service
|
||||||
##########################
|
##########################
|
||||||
Load Balancer as a Service
|
Load Balancer as a Service
|
||||||
##########################
|
##########################
|
||||||
.. include:: lbaas-v2.inc
|
|
||||||
.. include:: lbaas-v1.inc
|
.. include:: lbaas-v1.inc
|
||||||
|
.. include:: lbaas-v2.inc
|
||||||
#####################################
|
#####################################
|
||||||
Logging Resource (networking-midonet)
|
Logging Resource (networking-midonet)
|
||||||
#####################################
|
#####################################
|
||||||
|
@ -67,3 +67,10 @@ Router interface floating IP (networking-midonet)
|
||||||
FIP64 (networking-midonet)
|
FIP64 (networking-midonet)
|
||||||
##########################
|
##########################
|
||||||
.. include:: fip64.inc
|
.. include:: fip64.inc
|
||||||
|
############################
|
||||||
|
BGP/MPLS VPN Interconnection
|
||||||
|
############################
|
||||||
|
.. include:: bgpvpn-overview.inc
|
||||||
|
.. include:: bgpvpn-bgpvpns.inc
|
||||||
|
.. include:: bgpvpn-network_associations.inc
|
||||||
|
.. include:: bgpvpn-router_associations.inc
|
||||||
|
|
|
@ -1,6 +1,24 @@
|
||||||
# variables in header
|
# variables in header
|
||||||
|
|
||||||
# variables in path
|
# variables in path
|
||||||
|
bgpvpn-id-path:
|
||||||
|
description: |
|
||||||
|
The ID of the BGP VPN.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-network_association_id-path:
|
||||||
|
description: |
|
||||||
|
The ID of an association between a network and a BGP VPN.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-router_association_id-path:
|
||||||
|
description: |
|
||||||
|
The ID of an association between a router and a BGP VPN.
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
connection_id-path:
|
connection_id-path:
|
||||||
description: |
|
description: |
|
||||||
The ID of the IPSec site-to-site connection.
|
The ID of the IPSec site-to-site connection.
|
||||||
|
@ -605,6 +623,180 @@ bandwidth_limit_rules:
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
type: array
|
type: array
|
||||||
|
bgpvpn:
|
||||||
|
description: |
|
||||||
|
A ``bgpvpn`` object represents an MPLS network with which Neutron routers
|
||||||
|
and/or networks may be associated
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
bgpvpn-export_targets:
|
||||||
|
description: |
|
||||||
|
Additional Route Targets that will be used for export.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-export_targets-required:
|
||||||
|
description: |
|
||||||
|
Additional Route Targets that will be used for export.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-id-body:
|
||||||
|
description: |
|
||||||
|
The ID of the BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-import_targets:
|
||||||
|
description: |
|
||||||
|
Additional Route Targets that will be imported.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-import_targets-required:
|
||||||
|
description: |
|
||||||
|
Additional Route Targets that will be imported.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-name:
|
||||||
|
description: |
|
||||||
|
The user meaningful name of the BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
bgpvpn-name-required:
|
||||||
|
description: |
|
||||||
|
The user meaningful name of the BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-network_association:
|
||||||
|
description: |
|
||||||
|
A ``network_association`` object represents the binding of an MPLS network
|
||||||
|
to a Neutron network.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
bgpvpn-network_association_id:
|
||||||
|
description: |
|
||||||
|
The ID of an association between a network and a BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-network_associations:
|
||||||
|
description: |
|
||||||
|
A list of ``network_association`` objects which represent bindings
|
||||||
|
of MPLS networks to Neutron networks.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
bgpvpn-network_id:
|
||||||
|
description: |
|
||||||
|
The ID of a Neutron network with which to associate the BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-networks:
|
||||||
|
description: |
|
||||||
|
This read-only list of network IDs reflects the associations defined by Network association API resources.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-networks-required:
|
||||||
|
description: |
|
||||||
|
This read-only list of network IDs reflects the associations defined by Network association API resources.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-route_distinguishers:
|
||||||
|
description: |
|
||||||
|
List of route distinguisher strings. If this parameter is specified, one of these RDs will be used to advertise VPN routes.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-route_distinguishers-required:
|
||||||
|
description: |
|
||||||
|
List of route distinguisher strings. If this parameter is specified, one of these RDs will be used to advertise VPN routes.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-route_targets:
|
||||||
|
description: |
|
||||||
|
Route Targets that will be both imported and used for export.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-route_targets-required:
|
||||||
|
description: |
|
||||||
|
Route Targets that will be both imported and used for export.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-router_association:
|
||||||
|
description: |
|
||||||
|
A ``router_association`` object represents the binding of an MPLS network
|
||||||
|
to a Neutron router.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
bgpvpn-router_association_id:
|
||||||
|
description: |
|
||||||
|
The ID of an association between a router and a BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-router_associations:
|
||||||
|
description: |
|
||||||
|
A list of ``router_association`` objects which represent bindings
|
||||||
|
of MPLS networks to Neutron routers.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: object
|
||||||
|
bgpvpn-router_id:
|
||||||
|
description: |
|
||||||
|
The ID of a Neutron router with which to associate the BGP VPN.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpn-routers:
|
||||||
|
description: |
|
||||||
|
This read-only list of router IDs reflects the associations defined by Router association API resources.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: array
|
||||||
|
bgpvpn-routers-required:
|
||||||
|
description: |
|
||||||
|
This read-only list of router IDs reflects the associations defined by Router association API resources.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
bgpvpn-type:
|
||||||
|
description: |
|
||||||
|
Selection of the type of VPN and the technology behind it. Allowed
|
||||||
|
values are ``l2`` or ``l3``. The default is l3. ``l2`` indicates a Layer
|
||||||
|
2 (i.e. bridged) attachment and ``l3`` indicates a Layer 3 (i.e.
|
||||||
|
routed) attachment.
|
||||||
|
in: body
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
bgpvpn-type-required:
|
||||||
|
description: |
|
||||||
|
Selection of the type of VPN and the technology behind it. Allowed
|
||||||
|
values are ``l2`` or ``l3``. The default is l3. ``l2`` indicates a Layer
|
||||||
|
2 (i.e. bridged) attachment and ``l3`` indicates a Layer 3 (i.e.
|
||||||
|
routed) attachment.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
bgpvpns:
|
||||||
|
description: |
|
||||||
|
A list of ``bgpvpn`` objects. Each ``bgpvpn`` object represents an
|
||||||
|
MPLS network with which Neutron routers and/or networks may be associated
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
binding:host_id:
|
binding:host_id:
|
||||||
description: |
|
description: |
|
||||||
The ID of the host where the port resides.
|
The ID of the host where the port resides.
|
||||||
|
@ -3818,13 +4010,13 @@ project_id:
|
||||||
type: string
|
type: string
|
||||||
project_id-body-optional:
|
project_id-body-optional:
|
||||||
description: |
|
description: |
|
||||||
The ID of the project.
|
The ID of the project that owns the resource.
|
||||||
in: body
|
in: body
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
project_id-body-required:
|
project_id-body-required:
|
||||||
description: |
|
description: |
|
||||||
The ID of the project.
|
The ID of the project that owns the resource.
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"bgpvpn": {
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"route_targets": "64512:1444",
|
||||||
|
"import_targets": "64512:1555",
|
||||||
|
"export_targets": "64512:1666",
|
||||||
|
"route_distinguishers": ["64512:1777", "64512:1888", "64512:1999"],
|
||||||
|
"type": "l3"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"bgpvpn": {
|
||||||
|
"export_targets": [
|
||||||
|
"64512:1666"
|
||||||
|
],
|
||||||
|
"name": "",
|
||||||
|
"routers": [],
|
||||||
|
"route_distinguishers": [
|
||||||
|
"64512:1777",
|
||||||
|
"64512:1888",
|
||||||
|
"64512:1999"
|
||||||
|
],
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"import_targets": [
|
||||||
|
"64512:1555"
|
||||||
|
],
|
||||||
|
"route_targets": [
|
||||||
|
"64512:1444"
|
||||||
|
],
|
||||||
|
"type": "l3",
|
||||||
|
"id": "0f9d472a-908f-40f5-8574-b4e8a63ccbf0",
|
||||||
|
"networks": []
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"bgpvpn": {
|
||||||
|
"id": "460ac411-3dfb-45bb-8116-ed1a7233d143",
|
||||||
|
"name": "foo",
|
||||||
|
"route_targets": ["64512:1444"],
|
||||||
|
"export_targets": [],
|
||||||
|
"import_targets": [],
|
||||||
|
"type": "l3",
|
||||||
|
"tenant_id": "f94ea398564d49dfb0d542f086c68ce7",
|
||||||
|
"project_id": "f94ea398564d49dfb0d542f086c68ce7",
|
||||||
|
"routers": [],
|
||||||
|
"route_distinguishers": [],
|
||||||
|
"networks": [
|
||||||
|
"a4f2b8df-cb42-4893-a333-d0b5c36ade17"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"bgpvpn": {
|
||||||
|
"name": "foo",
|
||||||
|
"route_targets": ["64512:1444"],
|
||||||
|
"export_targets": [],
|
||||||
|
"import_targets": []
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"bgpvpn": {
|
||||||
|
"export_targets": [],
|
||||||
|
"name": "",
|
||||||
|
"routers": [],
|
||||||
|
"route_distinguishers": [
|
||||||
|
"12345:1234"
|
||||||
|
],
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"import_targets": [],
|
||||||
|
"route_targets": ["64512:1444"],
|
||||||
|
"type": "l3",
|
||||||
|
"id": "4d627abf-06dd-45ab-920b-8e61422bb984",
|
||||||
|
"networks": []
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"bgpvpns": [
|
||||||
|
{
|
||||||
|
"export_targets": [
|
||||||
|
"64512:1666"
|
||||||
|
],
|
||||||
|
"name": "",
|
||||||
|
"routers": [],
|
||||||
|
"route_distinguishers": [
|
||||||
|
"64512:1777",
|
||||||
|
"64512:1888",
|
||||||
|
"64512:1999"
|
||||||
|
],
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"import_targets": [
|
||||||
|
"64512:1555"
|
||||||
|
],
|
||||||
|
"route_targets": [
|
||||||
|
"64512:1444"
|
||||||
|
],
|
||||||
|
"type": "l3",
|
||||||
|
"id": "0f9d472a-908f-40f5-8574-b4e8a63ccbf0",
|
||||||
|
"networks": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"network_association": {
|
||||||
|
"network_id": "8c5d88dc-60ac-4b02-a65a-36b65888ddcd"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"network_association": {
|
||||||
|
"network_id": "8c5d88dc-60ac-4b02-a65a-36b65888ddcd",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"id": "73238ca1-e05d-4c7a-b4d4-70407b4b8730"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"network_associations": [
|
||||||
|
{
|
||||||
|
"network_id": "8c5d88dc-60ac-4b02-a65a-36b65888ddcd",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"id": "96227c78-6a0c-4d9d-b441-c4b8f6fb6c4a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"network_id": "a4f2b8df-cb42-4893-a333-d0b5c36ade17",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"id": "1b09fd12-c769-4be7-9c26-dececa474acf"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"network_association":
|
||||||
|
{
|
||||||
|
"id": "1b09fd12-c769-4be7-9c26-dececa474acf",
|
||||||
|
"network_id": "a4f2b8df-cb42-4893-a333-d0b5c36ade17",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"router_association": {
|
||||||
|
"router_id": "b58a6241-6e49-4b11-87c6-8e0606dde796"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"router_association": {
|
||||||
|
"router_id": "46a1a80b-7c42-4c45-88fd-b531e636969f",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"id": "c63149a0-a0b3-4ca7-aba4-9aaa1b39d7f3"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"router_associations": [
|
||||||
|
{
|
||||||
|
"router_id": "61222227-49eb-4dcc-b2d6-66bbfb2fdd7a",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"id": "95277be7-a231-4e96-9625-8f9fe41de9d6"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"router_association": {
|
||||||
|
"id": "c63149a0-a0b3-4ca7-aba4-9aaa1b39d7f3",
|
||||||
|
"router_id": "46a1a80b-7c42-4c45-88fd-b531e636969f",
|
||||||
|
"tenant_id": "b7549121395844bea941bb92feb3fad9",
|
||||||
|
"project_id": "b7549121395844bea941bb92feb3fad9"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- API reference for the ``networking-bgpvpn`` extension.
|
Loading…
Reference in New Issue