From: Edgar Magana Date: Thu, 8 Nov 2012 06:57:35 +0000 (-0800) Subject: Remove nova code from Quantum Cisco Plugin X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=a5e6ebd280a13c087596fffc14a01467a67afaec;p=openstack-build%2Fneutron-build.git Remove nova code from Quantum Cisco Plugin Fixes bug 1073311 Change-Id: Ifd408d7fdbbaec1fd70e8d114dc2cdc38505b2c2 --- diff --git a/quantum/plugins/cisco/nova/__init__.py b/quantum/plugins/cisco/nova/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/quantum/plugins/cisco/nova/quantum_port_aware_scheduler.py b/quantum/plugins/cisco/nova/quantum_port_aware_scheduler.py deleted file mode 100644 index 61ab9b4a9..000000000 --- a/quantum/plugins/cisco/nova/quantum_port_aware_scheduler.py +++ /dev/null @@ -1,115 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 -# -# Copyright 2011 Cisco Systems, Inc. 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. -# -# @author: Sumit Naiksatam, Cisco Systems, Inc. -# - - -""" -Quantum Port Aware Scheduler Implementation -""" - -from nova import exception as excp -from nova import flags -from nova.openstack.common import cfg -from nova.openstack.common import log as logging -from nova.scheduler import chance -from quantumclient import Client - - -LOG = logging.getLogger(__name__) - - -quantum_opts = [ - cfg.StrOpt('quantum_connection_host', - default='127.0.0.1', - help='HOST for connecting to quantum'), - cfg.StrOpt('quantum_connection_port', - default='9696', - help='PORT for connecting to quantum'), - cfg.StrOpt('quantum_default_tenant_id', - default="default", - help='Default tenant id when creating quantum networks'), -] - - -FLAGS = flags.FLAGS -FLAGS.register_opts(quantum_opts) - -HOST = FLAGS.quantum_connection_host -PORT = FLAGS.quantum_connection_port -USE_SSL = False -VERSION = '1.0' -URI_PREFIX_CSCO = '/extensions/csco/tenants/{tenant_id}' -TENANT_ID = 'nova' -CSCO_EXT_NAME = 'Cisco Nova Tenant' -ACTION = '/schedule_host' - - -class QuantumPortAwareScheduler(chance.ChanceScheduler): - """ - Quantum network service dependent scheduler - Obtains the hostname from Quantum using an extension API - """ - def __init__(self): - # We have to send a dummy tenant name here since the client - # needs some tenant name, but the tenant name will not be used - # since the extensions URL does not require it - LOG.debug("Initializing Cisco Quantum Port-aware Scheduler...") - super(QuantumPortAwareScheduler, self).__init__() - client = Client(HOST, PORT, USE_SSL, format='json', version=VERSION, - uri_prefix="", tenant="dummy", logger=LOG) - request_url = "/extensions" - data = client.do_request('GET', request_url) - LOG.debug("Obtained supported extensions from Quantum: %s" % data) - for ext in data['extensions']: - name = ext['name'] - if name == CSCO_EXT_NAME: - LOG.debug("Quantum plugin supports required \"%s\" extension" - "for the scheduler." % name) - return - - LOG.error("Quantum plugin does not support required \"%s\" extension" - " for the scheduler. Scheduler will quit." % CSCO_EXT_NAME) - raise excp.ServiceUnavailable() - - def _schedule(self, context, topic, request_spec, **kwargs): - """Gets the host name from the Quantum service""" - LOG.debug("Cisco Quantum Port-aware Scheduler is scheduling...") - instance_id = request_spec['instance_properties']['uuid'] - user_id = request_spec['instance_properties']['user_id'] - project_id = request_spec['instance_properties']['project_id'] - - instance_data_dict = {'novatenant': - {'instance_id': instance_id, - 'instance_desc': - {'user_id': user_id, - 'project_id': project_id}}} - - client = Client(HOST, PORT, USE_SSL, format='json', version=VERSION, - uri_prefix=URI_PREFIX_CSCO, tenant=TENANT_ID, - logger=LOG) - request_url = "/novatenants/" + project_id + ACTION - data = client.do_request('PUT', request_url, body=instance_data_dict) - - hostname = data["host_list"]["host_1"] - if not hostname: - raise excp.NoValidHost(_("Scheduler was unable to locate a host" - " for this request. Is the appropriate" - " service running?")) - - LOG.debug(_("Quantum service returned host: %s") % hostname) - return hostname diff --git a/quantum/plugins/cisco/nova/vifdirect.py b/quantum/plugins/cisco/nova/vifdirect.py deleted file mode 100644 index 88e72a2c4..000000000 --- a/quantum/plugins/cisco/nova/vifdirect.py +++ /dev/null @@ -1,127 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 -# Copyright 2011 Cisco Systems, Inc. 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. -# -# @author: Sumit Naiksatam, Cisco Systems, Inc. -# - -"""VIF drivers for interface type direct.""" - - -from nova import exception as excp -from nova import flags -from nova.openstack.common import cfg -from nova.openstack.common import log as logging -from nova.virt.vif import VIFDriver -from quantumclient import Client - - -LOG = logging.getLogger(__name__) - -quantum_opts = [ - cfg.StrOpt('quantum_connection_host', - default='127.0.0.1', - help='HOST for connecting to quantum'), - cfg.StrOpt('quantum_connection_port', - default='9696', - help='PORT for connecting to quantum'), - cfg.StrOpt('quantum_default_tenant_id', - default="default", - help='Default tenant id when creating quantum networks'), -] - -FLAGS = flags.FLAGS -FLAGS.register_opts(quantum_opts) - -HOST = FLAGS.quantum_connection_host -PORT = FLAGS.quantum_connection_port -USE_SSL = False -VERSION = '1.0' -URI_PREFIX_CSCO = '/extensions/csco/tenants/{tenant_id}' -TENANT_ID = 'nova' -CSCO_EXT_NAME = 'Cisco Nova Tenant' -ASSOCIATE_ACTION = '/associate_port' -DETACH_ACTION = '/detach_port' - - -class Libvirt802dot1QbhDriver(VIFDriver): - """VIF driver for 802.1Qbh""" - def __init__(self): - # We have to send a dummy tenant name here since the client - # needs some tenant name, but the tenant name will not be used - # since the extensions URL does not require it - LOG.debug("Initializing Cisco Quantum VIF driver...") - client = Client(HOST, PORT, USE_SSL, format='json', version=VERSION, - uri_prefix="", tenant="dummy", logger=LOG) - request_url = "/extensions" - data = client.do_request('GET', request_url) - LOG.debug("Obtained supported extensions from Quantum: %s" % data) - for ext in data['extensions']: - name = ext['name'] - if name == CSCO_EXT_NAME: - LOG.debug("Quantum plugin supports required \"%s\" extension" - "for the VIF driver." % name) - return - LOG.error("Quantum plugin does not support required \"%s\" extension" - " for the VIF driver. nova-compute will quit." - % CSCO_EXT_NAME) - raise excp.ServiceUnavailable() - - def _update_configurations(self, instance, network, mapping, action): - """Gets the device name and the profile name from Quantum""" - LOG.debug("Cisco Quantum VIF driver performing: %s" % (action)) - instance_id = instance['uuid'] - user_id = instance['user_id'] - project_id = instance['project_id'] - vif_id = mapping['vif_uuid'] - - instance_data_dict = { - 'novatenant': { - 'instance_id': instance_id, - 'instance_desc': { - 'user_id': user_id, - 'project_id': project_id, - 'vif_id': vif_id}}} - - client = Client(HOST, PORT, USE_SSL, format='json', version=VERSION, - uri_prefix=URI_PREFIX_CSCO, tenant=TENANT_ID, - logger=LOG) - request_url = "/novatenants/" + project_id + action - data = client.do_request('PUT', request_url, body=instance_data_dict) - - if action == ASSOCIATE_ACTION: - device = data['vif_desc']['device'] - portprofile = data['vif_desc']['portprofile'] - LOG.debug(_("Quantum provided the device: %s") % device) - LOG.debug(_("Quantum provided the portprofile: %s") % portprofile) - mac_id = mapping['mac'].replace(':', '') - - result = { - 'id': mac_id, - 'mac_address': mapping['mac'], - 'device_name': device, - 'profile_name': portprofile, - } - - return result - else: - return data - - def plug(self, instance, network, mapping): - return self._update_configurations(instance, network, mapping, - ASSOCIATE_ACTION) - - def unplug(self, instance, network, mapping): - self._update_configurations(instance, network, mapping, - DETACH_ACTION)