Module Structure:\r
-----------------\r
* quantum/plugins/cisco/ - Contains the L2-Network Plugin Framework\r
+ /client - CLI module for core and extensions\r
/common - Modules common to the entire plugin\r
/conf - All configuration files\r
/db - Persistence framework\r
/models - Class(es) which tie the logical abstractions\r
to the physical topology\r
+ /nova - Scheduler and VIF-driver to be used by Nova\r
/nexus - Nexus-specific modules\r
/segmentation - Implementation of segmentation manager,\r
e.g. VLAN Manager\r
Quantum-aware scheduler by editing the /etc/nova/nova.conf file with the\r
following entries:\r
\r
---scheduler_driver=quantum.plugins.cisco.nova.quantum_aware_scheduler.QuantumScheduler\r
+--scheduler_driver=quantum.plugins.cisco.nova.quantum_port_aware_scheduler.QuantumPortAwareScheduler\r
--quantum_host=127.0.0.1\r
--quantum_port=9696\r
--libvirt_vif_driver=quantum.plugins.cisco.nova.vifdirect.Libvirt802dot1QbhDriver\r
\r
7. Configure the UCS systems' information in your deployment by editing the\r
quantum/plugins/cisco/conf/ucs_inventory.ini file. You can configure multiple\r
- UCSMs per deployment, multiple chasses per UCSM, and multiple blades per\r
+ UCSMs per deployment, multiple chassis per UCSM, and multiple blades per\r
chassis. Chassis ID and blade ID can be obtained from the UCSM (they will\r
typically numbers like 1, 2, 3, etc.\r
\r
print("Quantum service returned host: %s" % hostname)
-def create_ports(tenant_id, net_id_list, *args):
+def create_multiport(tenant_id, net_id_list, *args):
"""Creates ports on a single host"""
net_list = net_id_list.split(",")
ports_info = {'multiport': \
{'status': 'ACTIVE',
'net_id_list': net_list,
- 'ports_desc': {}}}
+ 'ports_desc': {'key': 'value'}}}
- request_url = "/multiport/create_ports"
+ request_url = "/multiport"
client = Client(HOST, PORT, USE_SSL, format='json', tenant=tenant_id,
action_prefix=ACTION_PREFIX_CSCO)
data = client.do_request('POST', request_url, body=ports_info)
COMMANDS = {
- "create_ports": {
- "func": create_ports,
+ "create_multiport": {
+ "func": create_multiport,
"args": ["tenant-id",
"net-id-list (comma separated list of netword IDs)"]},
"list_extensions": {
class L2Network(QuantumPluginBase):
""" L2 Network Framework Plugin """
- supported_extension_aliases = ["Cisco Credential", "Cisco Port Profile",
- "Cisco qos", "Cisco Nova Tenant"]
+ supported_extension_aliases = ["Cisco Multiport", "Cisco Credential",
+ "Cisco Port Profile", "Cisco qos",
+ "Cisco Nova Tenant"]
def __init__(self):
cdb.initialize()
instance_id,
instance_desc])
- def create_ports(self, tenant_id, net_id_list, port_state, ports_desc):
+ def create_multiport(self, tenant_id, net_id_list, port_state, ports_desc):
"""
Creates multiple ports on the specified Virtual Network.
"""
return self._invoke_inventory(const.UCS_PLUGIN, self._func_name(),
args)
- def create_ports(self, args):
+ def create_multiport(self, args):
"""Support for extension API call"""
self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(),
args)
return self._invoke_inventory(const.UCS_PLUGIN, self._func_name(),
args)
- def create_ports(self, args):
+ def create_multiport(self, args):
"""Support for extension API call"""
self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(),
args)
ACTION = '/schedule_host'
-class QuantumScheduler(driver.Scheduler):
+class QuantumPortAwareScheduler(driver.Scheduler):
"""
Quantum network service dependent scheduler
Obtains the hostname from Quantum using an extension API
LOG.debug("vif_desc is: %s" % vif_desc)
return vif_desc
- def create_ports(self, args):
+ def create_multiport(self, args):
"""
Create multiple ports for a VM
"""
self._ucsm_username = cred.Store.getUsername(conf.UCSM_IP_ADDRESS)
self._ucsm_password = cred.Store.getPassword(conf.UCSM_IP_ADDRESS)
- def create_ports(self, tenant_id, net_id_list, ports_num, port_id_list,
+ def create_multiport(self, tenant_id, net_id_list, ports_num, port_id_list,
**kwargs):
"""
Creates a port on the specified Virtual Network.