From f8850fb5e5cc17a4dc9cf3330d2b0d8284ff443d Mon Sep 17 00:00:00 2001 From: Sumit Naiksatam Date: Mon, 17 Sep 2012 10:53:01 -0700 Subject: [PATCH] README file changes for Cisco plugin Bug #1052109 Moving the contents to wiki. Change-Id: I4aef2d710a7a4c1567d8701954ae04ba33095686 --- quantum/plugins/cisco/README | 803 +---------------------------------- 1 file changed, 5 insertions(+), 798 deletions(-) diff --git a/quantum/plugins/cisco/README b/quantum/plugins/cisco/README index a205fe03b..514082a2d 100755 --- a/quantum/plugins/cisco/README +++ b/quantum/plugins/cisco/README @@ -1,800 +1,7 @@ -========================================================================================= -README for Quantum v2.0: -A Plugin Framework for Supporting Quantum Networks Spannning Multiple Switches -========================================================================================= +Cisco Quantum Virtual Network Plugin -Introduction ------------- +This plugin implements Quantum v2 APIs and helps configure +topologies consisting of virtual and physical switches. -This plugin implementation provides the following capabilities: - -* A reference implementation for a Quantum Plugin Framework -(For details see: http://wiki.openstack.org/quantum-multi-switch-plugin) -* Supports multiple switches in the network -* Supports multiple models of switches concurrently -* Supports use of multiple L2 technologies -* Supports the Cisco Nexus family of switches. -* Supports Cisco UCS blade servers with M81KR Virtual Interface Cards - (aka "Palo adapters") via 802.1Qbh. - -Pre-requisites --------------- -(The following are necessary only when using the UCS and/or Nexus devices in your system. -If you plan to just leverage the plugin framework, you do not need these.) - -If you are using a Nexus switch in your topology, you'll need the following -NX-OS version and packages to enable Nexus support: -* NX-OS 5.2.1 (Delhi) Build 69 or above. -* paramiko library - SSHv2 protocol library for python -* ncclient v0.3.1 - Python library for NETCONF clients - ** You need a version of ncclient modifed by Cisco Systems. - To get it, from your shell prompt do: - - git clone git@github.com:CiscoSystems/ncclient.git - sudo python ./setup.py install - - ** For more information of ncclient, see: - http://schmizz.net/ncclient/ - -* One or more UCS B200 series blade servers with M81KR VIC (aka - Palo adapters) installed. -* UCSM 2.0 (Capitola) Build 230 or above. -* OS supported: - ** RHEL 6.1 or above - ** Ubuntu 11.10 or above - ** Package: python-configobj-4.6.0-3.el6.noarch (or newer) - ** Package: python-routes-1.12.3-2.el6.noarch (or newer) - ** Package: pip install mysql-python - - -Module Structure: ------------------ -* quantum/plugins/cisco/ - Contains the Network Plugin Framework - /client - CLI module for core and extensions API - /common - Modules common to the entire plugin - /conf - All configuration files - /db - Persistence framework - /models - Class(es) which tie the logical abstractions - to the physical topology - /nova - Scheduler and VIF-driver to be used by Nova - /nexus - Nexus-specific modules - /segmentation - Implementation of segmentation manager, - e.g. VLAN Manager - /services - Set of orchestration libraries to insert - In-path Networking Services - /tests - Tests specific to this plugin - /ucs - UCS-specific modules - - -Plugin Installation Instructions ----------------------------------- -1. Make a backup copy of quantum/etc/quantum.conf - -2. Edit quantum/etc/quantum.conf and edit the "core_plugin" for v2 API - -core_plugin = quantum.plugins.cisco.network_plugin.PluginV2 - -3. MySQL database setup: - 3a. Create quantum_l2network database in mysql with the following command - - -mysql -u -p -e "create database quantum_l2network" - - 3b. Enter the quantum_l2network database configuration info in the - quantum/plugins/cisco/conf/db_conn.ini file. - -4. If you want to turn on support for Cisco Nexus switches: - 4a. Uncomment the nexus_plugin property in - etc/quantum/plugins/cisco/cisco_plugins.ini to read: - -[PLUGINS] -nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin - - 4b. Enter the relevant configuration in the - etc/quantum/plugins/cisco/nexus.ini file. Example: - -[SWITCH] -# Change the following to reflect the IP address of the Nexus switch. -# This will be the address at which Quantum sends and receives configuration -# information via SSHv2. -nexus_ip_address=10.0.0.1 -# Port numbers on the Nexus switch to each one of the compute nodes are connected -# Use shortened interface syntax, e.g. "1/10" not "Ethernet1/10" and "," between ports. -ports=1/10,1/11,1/12 -#Port number where SSH will be running on the Nexus switch. Typically this is 22 -#unless you've configured your switch otherwise. -nexus_ssh_port=22 - -[DRIVER] -name=quantum.plugins.cisco.nexus.cisco_nexus_network_driver.CiscoNEXUSDriver - - 4c. Make sure that SSH host key of the Nexus switch is known to the - host on which you are running the Quantum service. You can do - this simply by logging in to your Quantum host as the user that - Quantum runs as and SSHing to the switch at least once. If the - host key changes (e.g. due to replacement of the supervisor or - clearing of the SSH config on the switch), you may need to repeat - this step and remove the old hostkey from ~/.ssh/known_hosts. - -5. If your are using UCS blade servers with M81KR Virtual Interface Cards and - want to leverage the VM-FEX features, - - 5a. Uncomment the ucs_plugin propertes in - etc/quantum/plugins/cisco/cisco_plugins.ini to read: - -[PLUGINS] -ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_plugin_v2.UCSVICPlugin -[INVENTORY] -ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_inventory_v2.UCSInventory - - 5b. Enter the relevant configuration in the - etc/quantum/plugins/cisco/ucs.ini file. Example: - -[UCSM] -#change the following to the appropriate UCSM IP address -#if you have more than one UCSM, enter info from any one -ip_address= -default_vlan_name=default -default_vlan_id=1 -max_ucsm_port_profiles=1024 -profile_name_prefix=q- - -[DRIVER] -name=quantum.plugins.cisco.ucs.cisco_ucs_network_driver.CiscoUCSMDriver - - 5c. Configure the UCS systems' information in your deployment by editing the - quantum/plugins/cisco/conf/ucs_inventory.ini file. You can configure multiple - UCSMs per deployment, multiple chassis per UCSM, and multiple blades per - chassis. Chassis ID and blade ID can be obtained from the UCSM (they will - typically be numbers like 1, 2, 3, etc.). Also make sure that you put the exact - hostname as nova sees it (the host column in the services table of the nova - DB will give you that information). - -[ucsm-1] -ip_address = -[[chassis-1]] -chassis_id = -[[[blade-1]]] -blade_id = -host_name = -[[[blade-2]]] -blade_id = -host_name = -[[[blade-3]]] -blade_id = -host_name = - -[ucsm-2] -ip_address = -[[chassis-1]] -chassis_id = -[[[blade-1]]] -blade_id = -host_name = -[[[blade-2]]] -blade_id = -host_name = - - 5d. Configure your OpenStack installation to use the 802.1qbh VIF driver and - Quantum-aware scheduler by editing the /etc/nova/nova.conf file with the - following entries: - -scheduler_driver=quantum.plugins.cisco.nova.quantum_port_aware_scheduler.QuantumPortAwareScheduler -quantum_host=127.0.0.1 -quantum_port=9696 -libvirt_vif_driver=quantum.plugins.cisco.nova.vifdirect.Libvirt802dot1QbhDriver -libvirt_vif_type=802.1Qbh - - Note: To be able to bring up a VM on a UCS blade, you should first create a - port for that VM using the Quantum create port API. VM creation will - fail if an unused port is not available. If you have configured your - Nova project with more than one network, Nova will attempt to instantiate - the VM with one network interface (VIF) per configured network. To provide - plugin points for each of these VIFs, you will need to create multiple - Quantum ports, one for each of the networks, prior to starting the VM. - However, in this case you will need to use the Cisco multiport extension - API instead of the Quantum create port API. More details on using the - multiport extension follow in the section on multi NIC support. - - To support the above configuration, you will need some Quantum modules. It's easiest - to copy the entire quantum directory from your quantum installation into: - - /usr/lib/python2.7/site-packages/ - - This needs to be done on each nova compute node. - -7. Verify that you have the correct credentials for each IP address listed - in quantum/plugins/cisco/conf/credentials.ini. Example: - -# Provide the UCSM credentials, create a separte entry for each UCSM used in your system -# UCSM IP address, username and password. -[10.0.0.2] -username=admin -password=mySecretPasswordForUCSM - -# Provide the Nexus credentials, if you are using Nexus switches. -# If not this will be ignored. -[10.0.0.1] -username=admin -password=mySecretPasswordForNexus - - In general, make sure that every UCSM and Nexus switch used in your system, - has a credential entry in the above file. This is required for the system to - be able to communicate with those switches. - - -9. Start the Quantum service. If something doesn't work, verify the - your configuration of each of the above files. - - -Multi NIC support for VMs -------------------------- -As indicated earlier, if your Nova setup has a project with more than one network, -Nova will try to create a virtual network interface (VIF) on the VM for each of those -networks. Before each VM is instantiated, you should create Quantum ports on each of -those networks. These ports need to be created using the following rest call: - -POST /1.0/extensions/csco/tenants/{tenant_id}/multiport/ - -with request body: - -{'multiport': - {'status': 'ACTIVE', - 'net_id_list': net_id_list, - 'ports_desc': {'key': 'value'}}} - -where, - -net_id_list is a list of network IDs: [netid1, netid2, ...]. The "ports_desc" dictionary -is reserved for later use. For now, the same structure in terms of the dictionary name, key -and value should be used. - -The corresponding CLI for this operation is as follows: - -PYTHONPATH=. python quantum/plugins/cisco/client/cli.py create_multiport - - (Note that you should not be using the create port core API in the above case.) - -Using an independent plugin as a device sub-plugin -------------------------------------------------- - -If you would like to use an independent virtual switch plugin as one of the sub-plugins -(for eg: the OpenVSwitch plugin) with the nexus device sub-plugin perform the following steps: - -(The following instructions are with respect to the OpenVSwitch plugin) -1. Update etc/quantum/plugins/cisco/l2network_plugin.ini - In the [MODEL] section of the configuration file put the following configuration - (note that this should be the only configuration in this section, all other configuration - should be either removed or commented) - - model_class=quantum.plugins.cisco.models.virt_phy_sw_v2.VirtualPhysicalSwitchModelV2 - -2. Update etc/quantum/plugins/cisco/cisco_plugins.ini - In the [PLUGINS] section of the configuration file put the following configuration: - - vswitch_plugin=quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2 - -3. Set the DB name, the same name has to be configured in three places: - In etc/quantum/plugins/cisco/conf/db_conn.ini set the "name" value - In /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini set the "sql_connection" - In /etc/quantum/dhcp_agent.ini set the "db_connection" - -4. The range of VLAN IDs has to be set in the OpenVSwitch configuration file: - In /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini - Set: - vlan_min = - vlan_max = - enable_tunneling = False - -5. For Nexus device sub-plugin configuration refer to the above sections - -How to test the installation ----------------------------- -The unit tests are located at quantum/plugins/cisco/tests/unit/v2. They can be -executed from the top level Quantum directory using the run_tests.sh script. - -1. Testing the core API (without UCS/Nexus/RHEL device sub-plugins configured): - By default all the device sub-plugins are disabled (commented out) in - etc/quantum/plugins/cisco/cisco_plugins.ini - - ./run_tests.sh quantum.plugins.cisco.tests.unit.v2.test_api_v2 - ./run_tests.sh quantum.plugins.cisco.tests.unit.v2.test_network_plugin - -2. For testing the Nexus device sub-plugin perform the following configuration: - - Edit etc/quantum/plugins/cisco/cisco_plugins.ini to add: - In the [PLUGINS] section add: -nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin - - Edit the etc/quantum/plugins/cisco/nexus.ini file. - When not using Nexus hardware use the following dummy configuration verbatim: -[SWITCH] -nexus_ip_address=1.1.1.1 -ports=1/10,1/11,1/12 -nexus_ssh_port=22 -[DRIVER] -name=quantum.plugins.cisco.tests.unit.v2.nexus.fake_nexus_driver.CiscoNEXUSFakeDriver - Or when using Nexus hardware (put the values relevant to your setup): -[SWITCH] -nexus_ip_address=1.1.1.1 -ports=1/10,1/11,1/12 -nexus_ssh_port=22 -[DRIVER] -name=quantum.plugins.cisco.nexus.cisco_nexus_network_driver.CiscoNEXUSDriver - - (Note: Make sure that quantum/plugins/cisco/conf/credentials.ini has an entry for - the nexus_ip_address being used in the above cases) - -3. For testing the UCS device sub-plugin perform the following configuration: - - Edit etc/quantum/plugins/cisco/cisco_plugins.ini to add: - In the [PLUGINS] section add: -ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_plugin_v2.UCSVICPlugin - - In the [INVENTORY] section add: - When not using UCS hardware: -ucs_plugin=quantum.plugins.cisco.tests.unit.v2.ucs.cisco_ucs_inventory_fake.UCSInventory - Or when using UCS hardware: -ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_inventory_v2.UCSInventory - - Edit the etc/quantum/plugins/cisco/ucs.ini file. - When not using UCS hardware: -[DRIVER] -name=quantum.plugins.cisco.tests.unit.v2.ucs.fake_ucs_driver.CiscoUCSMFakeDriver - Or when using UCS hardware: -[DRIVER] -name=quantum.plugins.cisco.ucs.cisco_ucs_network_driver.CiscoUCSMDriver - - -:Web site: http://wiki.openstack.org/cisco-quantum -:Copyright: 2012 Cisco Systems, Inc. -:Contact: netstack@lists.launchpad.net - -========================================================================================= -README for Quantum v1 and v1.1: -A Quantum Plugin Framework for Supporting L2 Networks Spannning Multiple Switches -========================================================================================= - -:Author: Sumit Naiksatam, Ram Durairaj, Mark Voelker, Edgar Magana, Shweta Padubidri, - Rohit Agarwalla, Ying Liu, Debo Dutta -:Contact: netstack@lists.launchpad.net -:Web site: https://launchpad.net/~cisco-openstack -:Copyright: 2011 Cisco Systems, Inc. - -.. contents:: - -Introduction ------------- - -This plugin implementation provides the following capabilities -to help you take your Layer 2 network for a Quantum leap: - -* A reference implementation for a Quantum Plugin Framework -(For details see: http://wiki.openstack.org/quantum-multi-switch-plugin) -* Supports multiple switches in the network -* Supports multiple models of switches concurrently -* Supports use of multiple L2 technologies -* Supports Cisco UCS blade servers with M81KR Virtual Interface Cards - (aka "Palo adapters") via 802.1Qbh. -* Supports the Cisco Nexus family of switches. - -It does not provide: - -* A hologram of Al that only you can see. -* A map to help you find your way through time. -* A cure for amnesia or your swiss-cheesed brain. - -Let's leap in! - -Pre-requisites --------------- -(The following are necessary only when using the UCS and/or Nexus devices in your system. -If you plan to just leverage the plugin framework, you do not need these.) -* One or more UCS B200 series blade servers with M81KR VIC (aka - Palo adapters) installed. -* UCSM 2.0 (Capitola) Build 230 or above. -* OpenStack Diablo D3 or later (should have VIF-driver support) -* OS supported: - ** RHEL 6.1 or above - ** Ubuntu 11.10 or above - ** Package: python-configobj-4.6.0-3.el6.noarch (or newer) - ** Package: python-routes-1.12.3-2.el6.noarch (or newer) - ** Package: pip install mysql-python - -If you are using a Nexus switch in your topology, you'll need the following -NX-OS version and packages to enable Nexus support: -* NX-OS 5.2.1 (Delhi) Build 69 or above. -* paramiko library - SSHv2 protocol library for python -* ncclient v0.3.1 - Python library for NETCONF clients - ** You need a version of ncclient modifed by Cisco Systems. - To get it, from your shell prompt do: - - git clone git@github.com:CiscoSystems/ncclient.git - sudo python ./setup.py install - - ** For more information of ncclient, see: - http://schmizz.net/ncclient/ - -Module Structure: ------------------ -* quantum/plugins/cisco/ - Contains the L2-Network Plugin Framework - /client - CLI module for core and extensions API - /common - Modules common to the entire plugin - /conf - All configuration files - /db - Persistence framework - /models - Class(es) which tie the logical abstractions - to the physical topology - /nova - Scheduler and VIF-driver to be used by Nova - /nexus - Nexus-specific modules - /segmentation - Implementation of segmentation manager, - e.g. VLAN Manager - /services - Set of orchestration libraries to insert - In-path Networking Services - /tests - Tests specific to this plugin - /ucs - UCS-specific modules - - -Plugin Installation Instructions ----------------------------------- -1. Make a backup copy of quantum/etc/quantum.conf - -2. Edit quantum/etc/quantum.conf and edit the "core_plugin" for v2 API - -core_plugin = quantum.plugins.cisco.network_plugin.PluginV2 - - OR for v1.1 API - -core_plugin = quantum.plugins.cisco.l2network_plugin.L2Network - -3. Configure your OpenStack installation to use the 802.1qbh VIF driver and - Quantum-aware scheduler by editing the /etc/nova/nova.conf file with the - following entries: - ---scheduler_driver=quantum.plugins.cisco.nova.quantum_port_aware_scheduler.QuantumPortAwareScheduler ---quantum_host=127.0.0.1 ---quantum_port=9696 ---libvirt_vif_driver=quantum.plugins.cisco.nova.vifdirect.Libvirt802dot1QbhDriver ---libvirt_vif_type=802.1Qbh - - Note: To be able to bring up a VM on a UCS blade, you should first create a - port for that VM using the Quantum create port API. VM creation will - fail if an unused port is not available. If you have configured your - Nova project with more than one network, Nova will attempt to instantiate - the VM with one network interface (VIF) per configured network. To provide - plugin points for each of these VIFs, you will need to create multiple - Quantum ports, one for each of the networks, prior to starting the VM. - However, in this case you will need to use the Cisco multiport extension - API instead of the Quantum create port API. More details on using the - multiport extension follow in the section on multi NIC support. - -4. To support the above configuration, you will need some Quantum modules. It's easiest - to copy the entire quantum directory from your quantum installation into: - -/usr/lib/python2.7/site-packages/ - - This needs to be done for each nova compute node. - -5. If you want to turn on support for Cisco Nexus switches: - 5a. Uncomment the nexus_plugin property in - etc/quantum/plugins/cisco/cisco_plugins.ini to read: - -nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin.NexusPlugin - - 5b. Enter the relevant configuration in the - etc/quantum/plugins/cisco/nexus.ini file. Example: - -[SWITCH] -# Change the following to reflect the IP address of the Nexus switch. -# This will be the address at which Quantum sends and receives configuration -# information via SSHv2. -nexus_ip_address=10.0.0.1 -# Port numbers on the Nexus switch to each one of the UCSM 6120s is connected -# Use shortened interface syntax, e.g. "1/10" not "Ethernet1/10". -nexus_first_port=1/10 -nexus_second_port=1/11 -#Port number where SSH will be running on the Nexus switch. Typically this is 22 -#unless you've configured your switch otherwise. -nexus_ssh_port=22 - -[DRIVER] -name=quantum.plugins.cisco.nexus.cisco_nexus_network_driver.CiscoNEXUSDriver - - 5c. Make sure that SSH host key of the Nexus switch is known to the - host on which you are running the Quantum service. You can do - this simply by logging in to your Quantum host as the user that - Quantum runs as and SSHing to the switch at least once. If the - host key changes (e.g. due to replacement of the supervisor or - clearing of the SSH config on the switch), you may need to repeat - this step and remove the old hostkey from ~/.ssh/known_hosts. - -6. Plugin Persistence framework setup: - 6a. Create quantum_l2network database in mysql with the following command - - -mysql -u -p -e "create database quantum_l2network" - - 6b. Enter the quantum_l2network database configuration info in the - quantum/plugins/cisco/conf/db_conn.ini file. - - 6c. If there is a change in the plugin configuration, service would need - to be restarted after dropping and re-creating the database using - the following commands - - -mysql -u -p -e "drop database quantum_l2network" -mysql -u -p -e "create database quantum_l2network" - -7. Verify that you have the correct credentials for each IP address listed - in quantum/plugins/cisco/conf/credentials.ini. Example: - -# Provide the UCSM credentials, create a separte entry for each UCSM used in your system -# UCSM IP address, username and password. -[10.0.0.2] -username=admin -password=mySecretPasswordForUCSM - -# Provide the Nexus credentials, if you are using Nexus switches. -# If not this will be ignored. -[10.0.0.1] -username=admin -password=mySecretPasswordForNexus - - In general, make sure that every UCSM and Nexus switch used in your system, - has a credential entry in the above file. This is required for the system to - be able to communicate with those switches. - -8. Configure the UCS systems' information in your deployment by editing the - quantum/plugins/cisco/conf/ucs_inventory.ini file. You can configure multiple - UCSMs per deployment, multiple chassis per UCSM, and multiple blades per - chassis. Chassis ID and blade ID can be obtained from the UCSM (they will - typically be numbers like 1, 2, 3, etc.). Also make sure that you put the exact - hostname as nova sees it (the host column in the services table of the nova - DB will give you that information). - -[ucsm-1] -ip_address = -[[chassis-1]] -chassis_id = -[[[blade-1]]] -blade_id = -host_name = -[[[blade-2]]] -blade_id = -host_name = -[[[blade-3]]] -blade_id = -host_name = - -[ucsm-2] -ip_address = -[[chassis-1]] -chassis_id = -[[[blade-1]]] -blade_id = -host_name = -[[[blade-2]]] -blade_id = -host_name = - - -9. Start the Quantum service. If something doesn't work, verify that - your configuration of each of the above files hasn't gone a little kaka. - Once you've put right what once went wrong, leap on. - - -Multi NIC support for VMs -------------------------- -As indicated earlier, if your Nova setup has a project with more than one network, -Nova will try to create a virtual network interface (VIF) on the VM for each of those -networks. That implies - - - (1) You should create the same number of networks in Quantum as in your Nova - project. - - (2) Before each VM is instantiated, you should create Quantum ports on each of those - networks. These ports need to be created using the following rest call: - -POST /1.0/extensions/csco/tenants/{tenant_id}/multiport/ - -with request body: - -{'multiport': - {'status': 'ACTIVE', - 'net_id_list': net_id_list, - 'ports_desc': {'key': 'value'}}} - -where, - -net_id_list is a list of network IDs: [netid1, netid2, ...]. The "ports_desc" dictionary -is reserved for later use. For now, the same structure in terms of the dictionary name, key -and value should be used. - -The corresponding CLI for this operation is as follows: - -PYTHONPATH=. python quantum/plugins/cisco/client/cli.py create_multiport - - (Note that you should not be using the create port core API in the above case.) - - -Using the Command Line Client to work with this Plugin ------------------------------------------------------- -A command line client is packaged with this plugin. This module can be used -to invoke the core API as well as the extensions API, so that you don't have -to switch between different CLI modules (it internally invokes the Quantum -CLI module for the core APIs to ensure consistency when using either). This -command line client can be invoked as follows: - -PYTHONPATH=.:tools python quantum/plugins/cisco/client/cli.py - -1. Creating the network - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py create_net -H 10.10.2.6 demo net1 -Created a new Virtual Network with ID: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant demo - - -2. Listing the networks - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py list_nets -H 10.10.2.6 demo -Virtual Networks for Tenant demo - Network ID: 0e85e924-6ef6-40c1-9f7a-3520ac6888b3 - Network ID: c4a2bea7-a528-4caf-b16e-80397cd1663a - - -3. Creating one port on each of the networks - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py create_multiport -H 10.10.2.6 demo c4a2bea7-a528-4caf-b16e-80397cd1663a,0e85e924-6ef6-40c1-9f7a-3520ac6888b3 -Created ports: {u'ports': [{u'id': u'118ac473-294d-480e-8f6d-425acbbe81ae'}, {u'id': u'996e84b8-2ed3-40cf-be75-de17ff1214c4'}]} - - -4. List all the ports on a network - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py list_ports -H 10.10.2.6 demo c4a2bea7-a528-4caf-b16e-80397cd1663a -Ports on Virtual Network: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant: demo - Logical Port: 118ac473-294d-480e-8f6d-425acbbe81ae - - -5. Show the details of a port - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py show_port -H 10.10.2.6 demo c4a2bea7-a528-4caf-b16e-80397cd1663a 118ac473-294d-480e-8f6d-425acbbe81ae -Logical Port ID: 118ac473-294d-480e-8f6d-425acbbe81ae -administrative State: ACTIVE -interface: -on Virtual Network: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant: demo - - -6. Start the VM instance using Nova - Note that when using UCS and the 802.1Qbh features, the association of the - VIF-ID (also referred to as interface ID) on the VM's NIC with a port will - happen automatically when the VM is instantiated. At this point, doing a - show_port will reveal the VIF-ID associated with the port. To indicate that - this VIF-ID is still detached from the network it would eventually be on, you - will see the suffix "(detached)" on the VIF-ID. This indicates that although - the VIF-ID and the port have been associated, the VIF still does not have - connectivity to the network on which the port resides. That connectivity - will be established only after the plug/attach operation is performed (as - described in the next step). - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py show_port demo c4a2bea7-a528-4caf-b16e-80397cd1663a 118ac473-294d-480e-8f6d-425acbbe81ae -Logical Port ID: 118ac473-294d-480e-8f6d-425acbbe81ae -administrative State: ACTIVE -interface: b73e3585-d074-4379-8dde-931c0fc4db0e(detached) -on Virtual Network: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant: demo - - -7. Plug interface and port into the network - Use the interface information obtained in step 6 to plug the interface into - the network. - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py plug_iface demo c4a2bea7-a528-4caf-b16e-80397cd1663a 118ac473-294d-480e-8f6d-425acbbe81ae b73e3585-d074-4379-8dde-931c0fc4db0e -Plugged interface b73e3585-d074-4379-8dde-931c0fc4db0e -into Logical Port: 118ac473-294d-480e-8f6d-425acbbe81ae -on Virtual Network: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant: demo - - -8. Unplug an interface and port from the network - -# PYTHONPATH=. python quantum/plugins/cisco/client/cli.py unplug_iface demo c4a2bea7-a528-4caf-b16e-80397cd1663a 118ac473-294d-480e-8f6d-425acbbe81ae -Unplugged interface from Logical Port: 118ac473-294d-480e-8f6d-425acbbe81ae -on Virtual Network: c4a2bea7-a528-4caf-b16e-80397cd1663a -for Tenant: demo - - Note: After unplugging, if you check the details of the port, you will - see the VIF-IF associated with the port (but now suffixed with the state - "detached"). At this point, it is possible to plug the VIF into the network - again making use of the same VIF-ID. In general, once associated, the VIF-ID - cannot be disassociated with the port until the VM is terminated. After the - VM is terminated, the VIF-ID will be automatically disassociated from the - port. To summarize, association and disassociation of the VIF-ID with a port - happens automatically at the time of creating and terminating the VM. The - connectivity of the VIF to the network is controlled by the user via the - plug and unplug operations. - - -How to test the installation ----------------------------- -The unit tests are located at quantum/plugins/cisco/tests/unit. They can be -executed from the main folder using the run_tests.sh or to get a more detailed -result the run_tests.py script. - -1. All unit tests (needs environment setup as indicated in the pre-requisites): - - Modify the environment variable to point to the plugin directory - - In bash : export PLUGIN_DIR=quantum/plugins/cisco - tcsh/csh : setenv PLUGIN_DIR quantum/plugins/cisco - - When no sub-plugins are configured(ucs or nexus plugins), execute only the l2networkApi unit tests. - Device-specific sub-plugins can be disabled by commenting out all the entries in: - etc/quantum/plugins/cisco/cisco_plugins.ini - - Execute the v2 API tests only using: - ./run_tests.sh quantum.plugins.cisco.tests.unit.test_api_v2 - Execute the v1.1 API tests only using: - ./run_tests.sh quantum.plugins.cisco.tests.unit.test_l2networkApi - - If just the ucs or both ucs and the nexus plugins are configured then all the tests could be executed by - ./run_tests.sh - - All the test execution steps listed below is for when the sub-plugins are configured. - -2. Testing the core API (without UCS/Nexus/RHEL hardware, and can be run on - Ubuntu): - The Core API can be tested by initially disabling all device plugins, then - enabling just the UCS plugins, and finally enabling both the UCS and the - Nexus plugins. - Device-specific plugins can be disabled by commenting out the entries in: - etc/quantum/plugins/cisco/cisco_plugins.ini - - Execute the v2 API tests only using: - ./run_tests.sh quantum.plugins.cisco.tests.unit.test_api_v2 - or - python run_tests.py quantum.plugins.cisco.tests.unit.test_api_v2 - - Execute the v1.1 API tests only using: - ./run_tests.sh quantum.plugins.cisco.tests.unit.test_l2networkApi - or - python run_tests.py quantum.plugins.cisco.tests.unit.test_l2networkApi - -3. Specific Plugin unit test (needs environment setup as indicated in the - pre-requisites): - - ./run_tests.sh quantum.plugins.cisco.tests.unit. - - or - - python run_tests.py quantum.plugins.cisco.tests.unit. - E.g.: - - python run_tests.py quantum.plugins.cisco.tests.unit.test_ucs_plugin - - To run specific tests, use the following: - - ./run_tests.sh quantum.plugins.cisco.tests.unit.:. - - or - - python run_tests.py - quantum.plugins.cisco.tests.unit.:. - - Eg: - python run_tests.py - quantum.plugins.cisco.tests.unit.test_ucs_plugin:UCSVICTestPlugin.test_create_port - -4. Testing the Extension API - The script is placed alongwith the other cisco unit tests. The location may - change later. - Location quantum/plugins/cisco/tests/unit/test_cisco_extension.py - - The script can be executed by : - ./run_tests.sh quantum.plugins.cisco.tests.unit.test_cisco_extension - - or - - python run_tests.py quantum.plugins.cisco.tests.unit.test_cisco_extension - - -Bingo bango bongo! That's it! Thanks for taking the leap into Quantum. - -...Oh, boy! +For more details on use please refer to: +http://wiki.openstack.org/cisco-quantum -- 2.45.2