Usage¶
Use from OpenStack CLI¶
Example commands to use by the admin to create a BGPVPN resource:
openstack bgpvpn create --route-target 64512:1 --project b954279e1e064dc9b8264474cb3e6bd2
openstack bgpvpn list
openstack bgpvpn set <bgpvpn-uuid> --name myBGPVPN
Example commands to use by the tenant owning the BGPVPN to associate a Network to it:
openstack bgpvpn network association create myBGPVPN <net-uuid>
# returns <net-assoc-uuid>
openstack bgpvpn network association list myBGPVPN
openstack bgpvpn network association show <net-assoc-uuid> myBGPVPN
openstack bgpvpn network association delete <net-assoc-uuid> myBGPVPN
There are more details in the OpenStack Client (OSC) documentation for BGPVPN.
Use from Horizon¶
See Horizon.
Use from Heat¶
See Heat.
Use from Python¶
The python neutroclient
library includes support for the BGPVPN API
extensions since Ocata release.
Note
For older releases, the dynamic extension of neutronclient
provided
in networking-bgpvpn
is available. In that case, the methods to
list, get, create, delete and update network associations and router
associations are different from what is documented here:
different name:
list_network_associations
instead of list_bgpvpn_network_assocs`, and same change for all the methodsorder of parameters: BGPVPN UUID as first parameter, association UUID as second parameter
These old methods are deprecated.
Methods¶
BGPVPN Resources¶
Method Name |
Description |
Input parameter(s) |
Output |
---|---|---|---|
list_bgpvpns() |
Get the list of defined BGPVPN resources for the current tenant. An optional list of BGPVPN parameters can be used as filter. |
|
Dictionary of BGPVPN attributes |
create_bgpvpn() |
Create a BGPVPN resource for the current tenant. Extra information about the BGPVPN resource can be provided as input. |
|
Dictionary of BGPVPN attributes |
show_bgpvpn() |
Get all information for a given BGPVPN. |
|
Dictionary of BGPVPN attributes related to the BGPVPN provided as input |
update_bgpvpn() |
Update the BGPVPN resource with the parameters provided as input. |
|
Dictionary of BGPVPN attributes |
delete_bgpvpn() |
Delete a given BGPVPN resource of which the UUID is provided as input. |
|
Boolean |
Network Association Resources¶
Method Name |
Description |
Input parameter(s) |
Output |
---|---|---|---|
list_bgpvpn_network_assocs() |
Get the list of defined NETWORK ASSOCIATION resources for a given BGPVPN. An optional list of NETWORK ASSOCIATION parameters can be used as filter. |
|
List of dictionaries of NETWORK ASSOCIATION attributes, one of each related to a given BGPVPN |
create_bgpvpn_network_assoc() |
Create a NETWORK ASSOCIATION resource for a given BGPVPN. Network UUID must be defined, provided in a NETWORK ASSOCIATION resource as input parameter. |
|
Dictionary of NETWORK ASSOCIATION attributes |
show_bgpvpn_network_assoc() |
Get all parameters for a given NETWORK ASSOCIATION. |
|
Dictionary of NETWORK ASSOCIATION parameters |
update_bgpvpn_network_assoc() |
Update the parameters of the NETWORK ASSOCIATION resource provided as input. |
|
Dictionary of NETWORK ASSOCIATION parameters |
delete_bgpvpn_network_assoc() |
Delete a given NETWORK ASSOCIATION resource of which the UUID is provided as input. |
|
Boolean |
Router Association Resources¶
Method Name |
Description |
Input parameter(s) |
Output |
---|---|---|---|
list_bgpvpn_router_assocs() |
Get the list of defined ROUTER ASSOCIATION resources for a given BGPVPN. An optional list of ROUTER ASSOCIATION parameters can be used as filter. |
|
List of dictionaries of ROUTER ASSOCIATION attributes, one of each related to a given BGPVPN |
create_bgpvpn_router_assoc() |
Create a ROUTER ASSOCIATION resource for a given BGPVPN. Router UUID must be defined, provided in a ROUTER ASSOCIATION resource as input parameter. |
|
Dictionary of ROUTER ASSOCIATION attributes |
show_bgpvpn_router_assoc() |
Get all parameters for a given ROUTER ASSOCIATION. |
|
Dictionary of ROUTER ASSOCIATION parameters |
update_bgpvpn_router_assoc() |
Update the parameters of the ROUTER ASSOCIATION resource provided as input. |
|
Dictionary of ROUTER ASSOCIATION parameters |
delete_bgpvpn_router_assoc() |
Delete a given ROUTER ASSOCIATION resource of which the UUID is provided as input. |
|
Boolean |
Port Association Resources¶
Method Name |
Description |
Input parameter(s) |
Output |
---|---|---|---|
list_bgpvpn_port_assocs() |
Get the list of defined PORT ASSOCIATION resources for a given BGPVPN. An optional list of PORT ASSOCIATION parameters can be used as filter. |
|
List of dictionaries of PORT ASSOCIATION attributes, one of each related to a given BGPVPN |
create_bgpvpn_port_assoc() |
Create a PORT ASSOCIATION resource for a given BGPVPN. Port UUID must be defined, provided in a PORT ASSOCIATION resource as input parameter. |
|
Dictionary of PORT ASSOCIATION attributes |
show_bgpvpn_port_assoc() |
Get all parameters for a given PORT ASSOCIATION. |
|
Dictionary of PORT ASSOCIATION parameters |
update_bgpvpn_port_assoc() |
Update the parameters of the PORT ASSOCIATION resource provided as input. |
|
Dictionary of PORT ASSOCIATION parameters |
delete_bgpvpn_port_assoc() |
Delete a given PORT ASSOCIATION resource of which the UUID is provided as input. |
|
Boolean |
Examples¶
BGPVPN + Network Association Resources¶
# Copyright (c) 2016 Orange.
# All Rights Reserved.
#
# 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.
import os
import sys
from keystoneauth1.identity import v3
from keystoneauth1 import session
from neutronclient.v2_0 import client
# Parameter for subnet neutron object
SUBNET_IP = "192.168.24.0/24"
# Parameters for bgpvpn neutron object
BGPVPN_RT = "64512:2"
# Function to obtain stack parameters from system vars
def get_keystone_creds():
d = {}
try:
d['username'] = os.environ['OS_USERNAME']
d['password'] = os.environ['OS_PASSWORD']
d['auth_url'] = os.environ['OS_AUTH_URL']
d['project_name'] = os.environ['OS_PROJECT_NAME']
d['project_domain_id'] = os.environ['OS_PROJECT_DOMAIN_ID']
d['user_domain_id'] = os.environ['OS_USER_DOMAIN_ID']
except KeyError:
print("ERROR: Stack environment variables type "
"OS_* are not properly set")
sys.exit(1)
return d
# Main function
def main():
# Call function that imports (dev)stack vars
creds = get_keystone_creds()
# Authentication
auth = v3.Password(**creds)
sess = session.Session(auth=auth)
# Neutron object
# It dynamically loads the BGPVPN API
neutron = client.Client(session=sess)
try:
# Network object creation. This dummy network will be used to bind the
# attached subnet to the BGPVPN object.
# Creation of the Network
net_obj = neutron.create_network({'network': {'name': "dummyNet"}})
# Verify creation
print('Network created\t[network-id:%s]...' %
net_obj['network']['id'])
# Creation of the subnet, is attached to the created network
subnet_obj = neutron.create_subnet(
{'subnet':
{'name': "dummySubnet",
'cidr': SUBNET_IP,
'network_id': net_obj['network']['id'],
'ip_version': 4}})
# Verify
print("Subnet created\t[subnet-id:%s]..." %
subnet_obj['subnet']['id'])
# Creation of a BGPVPN object. This object is created with the
# required parameter 'routes_targets'.
# This object can be created with others parameters or be updated with
# them by calling the update function on the object.
print("\nBGPVPN object handling.")
# Creation of the BGPVPN object
bgpvpn_obj = neutron.create_bgpvpn(
{'bgpvpn': {'route_targets': [BGPVPN_RT]}})
print("BGPVPN object created\t[bgpvpn-id:%s]..." %
bgpvpn_obj['bgpvpn']['id'])
# Update the BGPVPN object
bgpvpn_obj = neutron.update_bgpvpn(
bgpvpn_obj['bgpvpn']['id'], {'bgpvpn': {'name': "dummyBGPVPN"}})
# List all BGPVPN objects
list_bgpvpn_obj = neutron.list_bgpvpns()
print("List of all BGPVPN object\t[%s]" % list_bgpvpn_obj)
# List of all BGPVPN objects filtered on the type parameter set to l3
# value
list_bgpvpn_obj = neutron.list_bgpvpns(type='l3')
print("List of all BGPVPN object with type=l3\t[%s]" %
list_bgpvpn_obj)
# Creation of a BGPVPN Network association.
print("\nBGPVPN Network Association object handling.")
# Creation of a Network Association bound on the created BGPVPN object
bgpvpn_net_assoc_obj = neutron.create_bgpvpn_network_assoc(
bgpvpn_obj['bgpvpn']['id'],
{'network_association':
{'network_id':
net_obj['network']['id']}})
print("BGPVPN Network Association created\t"
"[network_association:%s]..." %
bgpvpn_net_assoc_obj['network_association']['id'])
# List all NETWORK ASSOCIATION object filtered on the network created
# above
list_bgpvpn_net_assoc_obj = neutron.list_bgpvpn_network_assocs(
bgpvpn_obj['bgpvpn']['id'],
network_id=net_obj['network']['id'])
print("List of NETWORK ASSOCIATION objects using network_id"
"[%s]\t[%s]" %
(net_obj['network']['id'], list_bgpvpn_net_assoc_obj))
# Deletion of all objects created in this example
print("\nDeletion of all created objects")
# First declared associations related of the created BGPVPN object in
# this example
neutron.delete_bgpvpn_network_assoc(
bgpvpn_net_assoc_obj['network_association']['id'],
bgpvpn_obj['bgpvpn']['id'])
# Then the BGPVPN object
neutron.delete_bgpvpn(bgpvpn_obj['bgpvpn']['id'])
# Subnet
neutron.delete_subnet(subnet_obj['subnet']['id'])
# And finally the Network
neutron.delete_network(net_obj['network']['id'])
except Exception as e:
print("[ERROR][%s]" % str(e))
sys.exit(1)
print("[Done]")
if __name__ == '__main__':
main()
__all__ = ['main']