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:
Paul Carver 2016-10-21 17:59:36 -04:00
parent b992719ce1
commit 4b00739847
21 changed files with 1021 additions and 3 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -52,8 +52,8 @@ Quality of Service
##########################
Load Balancer as a Service
##########################
.. include:: lbaas-v2.inc
.. include:: lbaas-v1.inc
.. include:: lbaas-v2.inc
#####################################
Logging Resource (networking-midonet)
#####################################
@ -67,3 +67,10 @@ Router interface floating IP (networking-midonet)
FIP64 (networking-midonet)
##########################
.. 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

View File

@ -1,6 +1,24 @@
# variables in header
# 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:
description: |
The ID of the IPSec site-to-site connection.
@ -605,6 +623,180 @@ bandwidth_limit_rules:
in: body
required: true
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:
description: |
The ID of the host where the port resides.
@ -3818,13 +4010,13 @@ project_id:
type: string
project_id-body-optional:
description: |
The ID of the project.
The ID of the project that owns the resource.
in: body
required: false
type: string
project_id-body-required:
description: |
The ID of the project.
The ID of the project that owns the resource.
in: body
required: true
type: string

View File

@ -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"
}
}

View File

@ -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": []
}
}

View File

@ -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"
]
}
}

View File

@ -0,0 +1,8 @@
{
"bgpvpn": {
"name": "foo",
"route_targets": ["64512:1444"],
"export_targets": [],
"import_targets": []
}
}

View File

@ -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": []
}
}

View File

@ -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": []
}
]
}

View File

@ -0,0 +1,5 @@
{
"network_association": {
"network_id": "8c5d88dc-60ac-4b02-a65a-36b65888ddcd"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
]
}

View File

@ -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"
}
}

View File

@ -0,0 +1,5 @@
{
"router_association": {
"router_id": "b58a6241-6e49-4b11-87c6-8e0606dde796"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
]
}

View File

@ -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"
}
}

View File

@ -0,0 +1,3 @@
---
features:
- API reference for the ``networking-bgpvpn`` extension.