From bd191cf78b52c731f5254b72c3f8af044505648e Mon Sep 17 00:00:00 2001 From: Rajdeep Dua Date: Tue, 8 Apr 2014 16:44:55 +0530 Subject: [PATCH] New Samples for Networking Neutron API Change-Id: Ibcde30e0d24ef4909f8680608a504236f1cb3080 --- doc/user-guide/section_sdk_neutron.xml | 544 +++++++++++++++++++++---- 1 file changed, 475 insertions(+), 69 deletions(-) diff --git a/doc/user-guide/section_sdk_neutron.xml b/doc/user-guide/section_sdk_neutron.xml index c57698e0ed..b92598eee4 100644 --- a/doc/user-guide/section_sdk_neutron.xml +++ b/doc/user-guide/section_sdk_neutron.xml @@ -5,108 +5,163 @@ xml:id="sdk_neutron_apis"> Networking - To use the information in this section, you should - have a general understanding of OpenStack Networking, - OpenStack Compute, and the integration between the two. You - should also have access to a plug-in that implements the - Networking API v2.0. + To use the information in this section, you should have a + general understanding of OpenStack Networking, OpenStack + Compute, and the integration between the two. You should also + have access to a plug-in that implements the Networking API + v2.0.
- Set environment variables - Make sure that you set the relevant environment variables - appropriately. - As an example, see the sample shell file that sets the - variables used to get credentials: - export OS_USERNAME="admin" + Set environment variables + Make sure that you set the relevant environment + variables. + As an example, see the sample shell file that sets these + variables to get credentials: + export OS_USERNAME="admin" export OS_PASSWORD="password" export OS_TENANT_NAME="admin" export OS_AUTH_URL="http://IPADDRESS/v2.0"
-
- Get credentials - The examples in this section use the following common get_credentials method: - def get_credentials(): +
+ Get credentials + The examples in this section use the + get_credentials method: + def get_credentials(): d = {} d['username'] = os.environ['OS_USERNAME'] d['password'] = os.environ['OS_PASSWORD'] d['auth_url'] = os.environ['OS_AUTH_URL'] d['tenant_name'] = os.environ['OS_TENANT_NAME'] return d - This code is assumed to exist in the credentials.py file, which all - samples import. + This code resides in the + credentials.py file, which all + samples import. + Use the get_credentials() method to + populate and get a dictionary: + credentials = get_credentials()
- -
- Create network - The following program creates a network: - from neutronclient.v2_0 import client -from credentials import get_credentials -from utils import print_networks +
+ Get Nova Credentials + Few examples in this section use the + get_nova_credentials method: + def get_nova_credentials(): + d = {} + d['username'] = os.environ['OS_USERNAME'] + d['api_key'] = os.environ['OS_PASSWORD'] + d['auth_url'] = os.environ['OS_AUTH_URL'] + d['project_id'] = os.environ['OS_TENANT_NAME'] + return d + This code resides in the + credentials.py file, which all + samples import. + Use the get_nova_credentials() method to + populate and get a dictionary: + nova_credentials = get_nova_credentials() + +
+
+ Print Values + The examples in this section use the + print_values and print_values_server + methods: + def print_values(val, type): + if type == 'ports': + val_list = val['ports'] + if type == 'networks': + val_list = val['networks'] + if type == 'routers': + val_list = val['routers'] + for p in val_list: + for k, v in p.items(): + print("%s : %s" % (k, v)) + print('\n') -network_name = "sample_network" + +def print_values_server(val, server_id, type): + if type == 'ports': + val_list = val['ports'] + + if type == 'networks': + val_list = val['networks'] + for p in val_list: + bool = False + for k, v in p.items(): + if k == 'device_id' and v == server_id: + bool = True + if bool: + for k, v in p.items(): + print("%s : %s" % (k, v)) + print('\n') + This code resides in the + utils.py file, which all samples import. +
+
+ Create network + The following program creates a network: + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client +from credentials import get_credentials + +network_name = 'sample_network' credentials = get_credentials() neutron = client.Client(**credentials) try: - body_sample = { - "network": - { - "name": network_name, - "admin_state_up": True - } - } + body_sample = {'network': {'name': network_name, + 'admin_state_up': True}} + netw = neutron.create_network(body=body_sample) net_dict = netw['network'] network_id = net_dict['id'] - print "Network %s created" % network_id + print('Network %s created' % network_id) - body_create_subnet = { - "subnets":[ - { - "cidr":"192.168.199.0/24", - "ip_version":4, - "network_id": network_id - } - ] - } + body_create_subnet = {'subnets': [{'cidr': '192.168.199.0/24', + 'ip_version': 4, 'network_id': network_id}]} subnet = neutron.create_subnet(body=body_create_subnet) - print "Created subnet %s" % subnet + print('Created subnet %s' % subnet) finally: - print "Execution completed" - #neutron.delete_network(network_id) - #print "Deleted Network %s" %network_id + print("Execution completed")
- List networks - The following program lists networks: - from neutronclient.v2_0 import client + List networks + The following program lists networks: + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client from credentials import get_credentials from utils import print_values - credentials = get_credentials() neutron = client.Client(**credentials) netw = neutron.list_networks() print_values(netw, 'networks') + For print_values see . +
- Create port - The following program creates a port: - from neutronclient.v2_0 import client + Create ports + The following program creates a port: + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client import novaclient.v1_1.client as nvclient from credentials import get_credentials -from utils import print_values_server from credentials import get_nova_credentials credentials = get_nova_credentials() nova_client = nvclient.Client(**credentials) -#replace with server_id and network_id from your environment +# Replace with server_id and network_id from your environment server_id = '9a52795a-a70d-49a8-a5d0-5b38d78bd12d' network_id = 'ce5d204a-93f5-43ef-bd89-3ab99ad09a9a' server_detail = nova_client.servers.get(server_id) -print server_detail.id +print(server_detail.id) if server_detail != None: credentials = get_credentials() @@ -121,31 +176,382 @@ if server_detail != None: } } response = neutron.create_port(body=body_value) - print response + print(response) + For get_nova_credentials see . + + For get_credentials see . +
- List ports - The following program lists ports: - from neutronclient.v2_0 import client + List ports + The following program lists ports: + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client from credentials import get_credentials from utils import print_values credentials = get_credentials() neutron = client.Client(**credentials) ports = neutron.list_ports() -print print_values(ports, 'ports') +print_values(ports, 'ports') + For get_credentials see . + + For print_values see . +
- List server ports - The following program lists the ports for a server: - from neutronclient.v2_0 import client -from credentials import get_credentials -from utils import print_values + List server ports + The following program lists the ports for a + server: + #!/usr/bin/python +# -*- coding: utf-8 -*- +from neutronclient.v2_0 import client +import novaclient.v1_1.client as nvclient +from credentials import get_credentials +from credentials import get_nova_credentials +from utils import print_values_server + +credentials = get_nova_credentials() +nova_client = nvclient.Client(**credentials) + +# change these values according to your environment + +server_id = '9a52795a-a70d-49a8-a5d0-5b38d78bd12d' +network_id = 'ce5d204a-93f5-43ef-bd89-3ab99ad09a9a' +server_detail = nova_client.servers.get(server_id) +print(server_detail.id) + +if server_detail is not None: + credentials = get_credentials() + neutron = client.Client(**credentials) + ports = neutron.list_ports() + + print_values_server(ports, server_id, 'ports') + body_value = {'port': { + 'admin_state_up': True, + 'device_id': server_id, + 'name': 'port1', + 'network_id': network_id, + }} + + response = neutron.create_port(body=body_value) + print(response) +
+
+ Create router and add port to subnet + This example queries OpenStack Networking to create a + router and add a port to a subnet. + + To create a router and add a port to a + subnet + + Import the following modules: + from neutronclient.v2_0 import client +import novaclient.v1_1.client as nvclient +from credentials import get_credentials +from credentials import get_nova_credentials +from utils import print_values_server + + + Get Nova Credentials. See . + + + Instantiate the nova_client + client object by using the + credentials dictionary + object: + nova_client = nvclient.Client(**credentials) + + + Create a router and add a port to the + subnet: + # Replace with server_id and network_id from your environment + +router_id = '72cf1682-60a8-4890-b0ed-6bad7d9f5466' +network_id = '81bf592a-9e3f-4f84-a839-ae87df188dc1' credentials = get_credentials() neutron = client.Client(**credentials) -ports = neutron.list_ports() -print print_values(ports, 'ports') +router = neutron.show_router(router_id) +print(router) +body_value = {'port': { + 'admin_state_up': True, + 'device_id': router_id, + 'name': 'port1', + 'network_id': network_id, + }} + +response = neutron.create_port(body=body_value) +print(response) +print("Execution Completed") + + + + Create router: complete code listing + #!/usr/bin/python +# -*- coding: utf-8 -*- +from neutronclient.v2_0 import client +import novaclient.v1_1.client as nvclient +from credentials import get_credentials +from credentials import get_nova_credentials +from utils import print_values_server + +credentials = get_nova_credentials() +nova_client = nvclient.Client(**credentials) + +# Replace with server_id and network_id from your environment + +router_id = '72cf1682-60a8-4890-b0ed-6bad7d9f5466' +network_id = '81bf592a-9e3f-4f84-a839-ae87df188dc1' +try: + credentials = get_credentials() + neutron = client.Client(**credentials) + router = neutron.show_router(router_id) + print(router) + body_value = {'port': { + 'admin_state_up': True, + 'device_id': router_id, + 'name': 'port1', + 'network_id': network_id, + }} + + response = neutron.create_port(body=body_value) + print(response) +finally: + print("Execution completed") +
-
+
+ Delete a network + This example queries OpenStack Networking to delete a + network. + + To delete a network + + Import the following modules: + from neutronclient.v2_0 import client +from credentials import get_credentials + + + Get credentials. See . + + + + Instantiate the neutron + client object by using the + credentials dictionary + object: + neutron = client.Client(**credentials) + + + Delete the network: + body_sample = {'network': {'name': network_name, + 'admin_state_up': True}} + +netw = neutron.create_network(body=body_sample) +net_dict = netw['network'] +network_id = net_dict['id'] +print('Network %s created' % network_id) + +body_create_subnet = {'subnets': [{'cidr': '192.168.199.0/24', + 'ip_version': 4, 'network_id': network_id}]} + +subnet = neutron.create_subnet(body=body_create_subnet) +print('Created subnet %s' % subnet) + +neutron.delete_network(network_id) +print('Deleted Network %s' % network_id) + +print("Execution completed") + + + + Delete network: complete code listing + #!/usr/bin/python +# -*- coding: utf-8 -*- +from neutronclient.v2_0 import client +from credentials import get_credentials + +network_name = 'temp_network' +credentials = get_credentials() +neutron = client.Client(**credentials) +try: + body_sample = {'network': {'name': network_name, + 'admin_state_up': True}} + + netw = neutron.create_network(body=body_sample) + net_dict = netw['network'] + network_id = net_dict['id'] + print('Network %s created' % network_id) + + body_create_subnet = {'subnets': [{'cidr': '192.168.199.0/24', + 'ip_version': 4, 'network_id': network_id}]} + + subnet = neutron.create_subnet(body=body_create_subnet) + print('Created subnet %s' % subnet) + + neutron.delete_network(network_id) + print('Deleted Network %s' % network_id) +finally: + print("Execution Completed") + +
+
+ List routers + This example queries OpenStack Networking to list all + routers. + + To list routers + + Import the following modules: + from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + + + Get credentials. See . + + + Instantiate the neutron + client object by using the + credentials dictionary + object: + neutron = client.Client(**credentials) + + + List the routers + routers_list = neutron.list_routers(retrieve_all=True) +print_values(routers_list, 'routers') +print("Execution completed") + For print_values see . + + + + List routers: complete code listing + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + +try: + credentials = get_credentials() + neutron = client.Client(**credentials) + routers_list = neutron.list_routers(retrieve_all=True) + print_values(routers_list, 'routers') +finally: + print("Execution completed") + +
+
+ List security groups + This example queries OpenStack Networking to list + security groups. + + To list security groups + + Import the following modules: + from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + + + Get credentials. See . + + + Instantiate the neutron + client object by using the + credentials dictionary + object: + neutron = client.Client(**credentials) + + + List Security groups + sg = neutron.list_security_groups() +print(sg) + + + + List security groups: complete code listing + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + +credentials = get_credentials() +neutron = client.Client(**credentials) +sg = neutron.list_security_groups() +print(sg) + + + OpenStack Networking security groups are + case-sensitive while the nova-network security groups are + case-insensitive. + +
+
+ List subnets + This example queries OpenStack Networking to list + subnets. + + To list subnets + + Import the following modules: + from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + + + Get credentials. See . + + + Instantiate the neutron + client object by using the + credentials dictionary + object: + neutron = client.Client(**credentials) + + + List subnets: + subnets = neutron.list_subnets() +print(subnets) + + + + List subnets: complete code listing + #!/usr/bin/python +# -*- coding: utf-8 -*- + +from neutronclient.v2_0 import client +from credentials import get_credentials +from utils import print_values + +credentials = get_credentials() +neutron = client.Client(**credentials) +subnets = neutron.list_subnets() +print(subnets) + +
+