From ed0fb7e82335ceb97d8ae7226f0789ad3a79d913 Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Tue, 6 Aug 2013 19:41:26 -0700 Subject: [PATCH] Rename Quantum to Neutron quantumclient is gone upstream and has been replaced by neutronclient. This patch retains the OS::Quantum::XX namespace Fixes: bug #1197208 Change-Id: Id48f9598ea1884132d411ad533770ae49494102b --- README.rst | 2 +- .../heat-cli-guide/src/heat_cli_howto.xml | 2 +- heat/engine/clients.py | 22 +- heat/engine/resource.py | 4 +- heat/engine/resources/instance.py | 6 +- heat/engine/resources/internet_gateway.py | 10 +- heat/engine/resources/network_interface.py | 14 +- .../{quantum => neutron}/__init__.py | 0 .../{quantum => neutron}/floatingip.py | 33 +- .../resources/{quantum => neutron}/net.py | 19 +- .../quantum.py => neutron/neutron.py} | 14 +- .../resources/{quantum => neutron}/port.py | 22 +- .../resources/{quantum => neutron}/router.py | 43 +-- .../resources/{quantum => neutron}/subnet.py | 19 +- .../resources/rackspace/rackspace_resource.py | 4 +- heat/engine/resources/route_table.py | 32 +- heat/engine/resources/security_group.py | 32 +- heat/engine/resources/subnet.py | 16 +- heat/engine/resources/vpc.py | 24 +- .../{Quantum.template => Neutron.template} | 18 +- .../templates/{Quantum.yaml => Neutron.yaml} | 16 +- heat/tests/test_instance_network.py | 10 +- .../{test_quantum.py => test_neutron.py} | 286 +++++++++--------- heat/tests/test_security_group.py | 78 ++--- heat/tests/test_template_format.py | 6 +- heat/tests/test_vpc.py | 126 ++++---- requirements.txt | 2 +- 27 files changed, 436 insertions(+), 424 deletions(-) rename heat/engine/resources/{quantum => neutron}/__init__.py (100%) rename heat/engine/resources/{quantum => neutron}/floatingip.py (78%) rename heat/engine/resources/{quantum => neutron}/net.py (82%) rename heat/engine/resources/{quantum/quantum.py => neutron/neutron.py} (90%) rename heat/engine/resources/{quantum => neutron}/port.py (86%) rename heat/engine/resources/{quantum => neutron}/router.py (79%) rename heat/engine/resources/{quantum => neutron}/subnet.py (87%) rename heat/tests/templates/{Quantum.template => Neutron.template} (87%) rename heat/tests/templates/{Quantum.yaml => Neutron.yaml} (86%) rename heat/tests/{test_quantum.py => test_neutron.py} (80%) diff --git a/README.rst b/README.rst index 892bb0d3f9..f9bfacbcf3 100644 --- a/README.rst +++ b/README.rst @@ -36,4 +36,4 @@ We have integration with * https://github.com/openstack/python-novaclient (instance) * https://github.com/openstack/python-keystoneclient (auth) * https://github.com/openstack/python-swiftclient (s3) -* https://github.com/openstack/python-quantumclient (networking) +* https://github.com/openstack/python-neutronclient (networking) diff --git a/doc/docbkx/heat-cli-guide/src/heat_cli_howto.xml b/doc/docbkx/heat-cli-guide/src/heat_cli_howto.xml index c4f697a1e8..1618e432b2 100644 --- a/doc/docbkx/heat-cli-guide/src/heat_cli_howto.xml +++ b/doc/docbkx/heat-cli-guide/src/heat_cli_howto.xml @@ -5,7 +5,7 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" version="5.0" - xml:id="quantum-cli-reference"> + xml:id="neutron-cli-reference"> OpenStack Heat CLI Guide This section describes heat commands diff --git a/heat/engine/clients.py b/heat/engine/clients.py index 388943a24f..85d0934d19 100644 --- a/heat/engine/clients.py +++ b/heat/engine/clients.py @@ -29,10 +29,10 @@ except ImportError: swiftclient = None logger.info('swiftclient not available') try: - from quantumclient.v2_0 import client as quantumclient + from neutronclient.v2_0 import client as neutronclient except ImportError: - quantumclient = None - logger.info('quantumclient not available') + neutronclient = None + logger.info('neutronclient not available') try: from cinderclient import client as cinderclient except ImportError: @@ -64,7 +64,7 @@ class OpenStackClients(object): self._nova = {} self._keystone = None self._swift = None - self._quantum = None + self._neutron = None self._cinder = None self._ceilometer = None @@ -133,15 +133,15 @@ class OpenStackClients(object): self._swift = swiftclient.Connection(**args) return self._swift - def quantum(self): - if quantumclient is None: + def neutron(self): + if neutronclient is None: return None - if self._quantum: - return self._quantum + if self._neutron: + return self._neutron con = self.context if self.auth_token is None: - logger.error("Quantum connection failed, no auth_token!") + logger.error("Neutron connection failed, no auth_token!") return None args = { @@ -151,9 +151,9 @@ class OpenStackClients(object): 'endpoint_url': self.url_for(service_type='network') } - self._quantum = quantumclient.Client(**args) + self._neutron = neutronclient.Client(**args) - return self._quantum + return self._neutron def cinder(self): if cinderclient is None: diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 147584b034..656a71cb09 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -325,8 +325,8 @@ class Resource(object): def swift(self): return self.stack.clients.swift() - def quantum(self): - return self.stack.clients.quantum() + def neutron(self): + return self.stack.clients.neutron() def cinder(self): return self.stack.clients.cinder() diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index 4a790da6d6..e505f086d2 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -280,9 +280,9 @@ class Instance(resource.Resource): else: # if SubnetId property in Instance, ensure subnet exists if subnet_id: - quantumclient = self.quantum() + neutronclient = self.neutron() network_id = NetworkInterface.network_id_from_subnet_id( - quantumclient, subnet_id) + neutronclient, subnet_id) # if subnet verified, create a port to use this subnet # if port is not created explicitly, nova will choose # the first subnet in the given network. @@ -293,7 +293,7 @@ class Instance(resource.Resource): 'network_id': network_id, 'fixed_ips': [fixed_ip] } - port = quantumclient.create_port({'port': props})['port'] + port = neutronclient.create_port({'port': props})['port'] nics = [{'port-id': port['id']}] return nics diff --git a/heat/engine/resources/internet_gateway.py b/heat/engine/resources/internet_gateway.py index f265a40790..67576f23b0 100644 --- a/heat/engine/resources/internet_gateway.py +++ b/heat/engine/resources/internet_gateway.py @@ -83,26 +83,26 @@ class VPCGatewayAttachment(resource.Resource): deps += (self, route_table) def handle_create(self): - client = self.quantum() + client = self.neutron() external_network_id = InternetGateway.get_external_network_id(client) for router in self._vpc_route_tables(): client.add_gateway_router(router.resource_id, { 'network_id': external_network_id}) def handle_delete(self): - from quantumclient.common.exceptions import QuantumClientException + from neutronclient.common.exceptions import NeutronClientException - client = self.quantum() + client = self.neutron() for router in self._vpc_route_tables(): try: client.remove_gateway_router(router.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { diff --git a/heat/engine/resources/network_interface.py b/heat/engine/resources/network_interface.py index 6f125824f7..52c218c8c6 100644 --- a/heat/engine/resources/network_interface.py +++ b/heat/engine/resources/network_interface.py @@ -44,12 +44,12 @@ class NetworkInterface(resource.Resource): } @staticmethod - def network_id_from_subnet_id(quantumclient, subnet_id): - subnet_info = quantumclient.show_subnet(subnet_id) + def network_id_from_subnet_id(neutronclient, subnet_id): + subnet_info = neutronclient.show_subnet(subnet_id) return subnet_info['subnet']['network_id'] def handle_create(self): - client = self.quantum() + client = self.neutron() subnet_id = self.properties['SubnetId'] network_id = self.network_id_from_subnet_id(client, subnet_id) @@ -80,18 +80,18 @@ class NetworkInterface(resource.Resource): self.resource_id_set(port['id']) def handle_delete(self): - from quantumclient.common.exceptions import QuantumClientException + from neutronclient.common.exceptions import NeutronClientException - client = self.quantum() + client = self.neutron() try: client.delete_port(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { diff --git a/heat/engine/resources/quantum/__init__.py b/heat/engine/resources/neutron/__init__.py similarity index 100% rename from heat/engine/resources/quantum/__init__.py rename to heat/engine/resources/neutron/__init__.py diff --git a/heat/engine/resources/quantum/floatingip.py b/heat/engine/resources/neutron/floatingip.py similarity index 78% rename from heat/engine/resources/quantum/floatingip.py rename to heat/engine/resources/neutron/floatingip.py index b5083c32a6..ddff82e73e 100644 --- a/heat/engine/resources/quantum/floatingip.py +++ b/heat/engine/resources/neutron/floatingip.py @@ -15,15 +15,15 @@ from heat.engine import clients from heat.openstack.common import log as logging -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException logger = logging.getLogger(__name__) -class FloatingIP(quantum.QuantumResource): +class FloatingIP(neutron.NeutronResource): properties_schema = {'floating_network_id': {'Type': 'String', 'Required': True}, 'value_specs': {'Type': 'Map', @@ -36,7 +36,8 @@ class FloatingIP(quantum.QuantumResource): # depend on any RouterGateway in this template with the same # network_id as this floating_network_id for resource in self.stack.resources.itervalues(): - if (resource.type() == 'OS::Quantum::RouterGateway' and + if ((resource.type() == 'OS::Neutron::RouterGateway' or + resource.type() == 'OS::Quantum::RouterGateway') and resource.properties.get('network_id') == self.properties.get('floating_network_id')): deps += (self, resource) @@ -45,29 +46,29 @@ class FloatingIP(quantum.QuantumResource): props = self.prepare_properties( self.properties, self.physical_resource_name()) - fip = self.quantum().create_floatingip({ + fip = self.neutron().create_floatingip({ 'floatingip': props})['floatingip'] self.resource_id_set(fip['id']) def handle_delete(self): - client = self.quantum() + client = self.neutron() try: client.delete_floatingip(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def FnGetAtt(self, key): try: - attributes = self.quantum().show_floatingip( + attributes = self.neutron().show_floatingip( self.resource_id)['floatingip'] - except QuantumClientException as ex: + except NeutronClientException as ex: logger.warn("failed to fetch resource attributes: %s" % str(ex)) return None return self.handle_get_attributes(self.name, key, attributes) -class FloatingIPAssociation(quantum.QuantumResource): +class FloatingIPAssociation(neutron.NeutronResource): properties_schema = {'floatingip_id': {'Type': 'String', 'Required': True}, 'port_id': {'Type': 'String', @@ -79,29 +80,31 @@ class FloatingIPAssociation(quantum.QuantumResource): floatingip_id = props.pop('floatingip_id') - self.quantum().update_floatingip(floatingip_id, { + self.neutron().update_floatingip(floatingip_id, { 'floatingip': props})['floatingip'] self.resource_id_set('%s:%s' % (floatingip_id, props['port_id'])) def handle_delete(self): if not self.resource_id: return - client = self.quantum() + client = self.neutron() (floatingip_id, port_id) = self.resource_id.split(':') try: client.update_floatingip( floatingip_id, {'floatingip': {'port_id': None}}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { + 'OS::Neutron::FloatingIP': FloatingIP, + 'OS::Neutron::FloatingIPAssociation': FloatingIPAssociation, 'OS::Quantum::FloatingIP': FloatingIP, 'OS::Quantum::FloatingIPAssociation': FloatingIPAssociation, } diff --git a/heat/engine/resources/quantum/net.py b/heat/engine/resources/neutron/net.py similarity index 82% rename from heat/engine/resources/quantum/net.py rename to heat/engine/resources/neutron/net.py index 8a8bfe6c7d..816964187b 100644 --- a/heat/engine/resources/quantum/net.py +++ b/heat/engine/resources/neutron/net.py @@ -15,16 +15,16 @@ from heat.engine import clients from heat.openstack.common import log as logging -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron from heat.engine import scheduler -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException logger = logging.getLogger(__name__) -class Net(quantum.QuantumResource): +class Net(neutron.NeutronResource): properties_schema = {'name': {'Type': 'String'}, 'value_specs': {'Type': 'Map', 'Default': {}}, @@ -43,11 +43,11 @@ class Net(quantum.QuantumResource): props = self.prepare_properties( self.properties, self.physical_resource_name()) - net = self.quantum().create_network({'network': props})['network'] + net = self.neutron().create_network({'network': props})['network'] self.resource_id_set(net['id']) def _show_resource(self): - return self.quantum().show_network( + return self.neutron().show_network( self.resource_id)['network'] def check_create_complete(self, *args): @@ -55,10 +55,10 @@ class Net(quantum.QuantumResource): return self.is_built(attributes) def handle_delete(self): - client = self.quantum() + client = self.neutron() try: client.delete_network(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex else: @@ -66,9 +66,10 @@ class Net(quantum.QuantumResource): def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { + 'OS::Neutron::Net': Net, 'OS::Quantum::Net': Net, } diff --git a/heat/engine/resources/quantum/quantum.py b/heat/engine/resources/neutron/neutron.py similarity index 90% rename from heat/engine/resources/quantum/quantum.py rename to heat/engine/resources/neutron/neutron.py index b3024f1d65..e14bd9c285 100644 --- a/heat/engine/resources/quantum/quantum.py +++ b/heat/engine/resources/neutron/neutron.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -from quantumclient.common.exceptions import QuantumClientException +from neutronclient.common.exceptions import NeutronClientException from heat.common import exception from heat.engine import resource @@ -23,13 +23,13 @@ from heat.openstack.common import log as logging logger = logging.getLogger(__name__) -class QuantumResource(resource.Resource): +class NeutronResource(resource.Resource): def validate(self): ''' Validate any of the provided params ''' - res = super(QuantumResource, self).validate() + res = super(NeutronResource, self).validate() if res: return res return self.validate_properties(self.properties) @@ -54,7 +54,7 @@ class QuantumResource(resource.Resource): def prepare_properties(properties, name): ''' Prepares the property values so that they can be passed directly to - the Quantum call. + the Neutron call. Removes None values and value_specs, merges value_specs with the main values. @@ -91,13 +91,13 @@ class QuantumResource(resource.Resource): return True else: raise exception.Error('%s resource[%s] status[%s]' % - ('quantum reported unexpected', + ('neutron reported unexpected', attributes['name'], attributes['status'])) def _resolve_attribute(self, name): try: attributes = self._show_resource() - except QuantumClientException as ex: + except NeutronClientException as ex: logger.warn("failed to fetch resource attributes: %s" % str(ex)) return None return self.handle_get_attributes(self.name, name, attributes) @@ -107,7 +107,7 @@ class QuantumResource(resource.Resource): try: yield self._show_resource() - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex return diff --git a/heat/engine/resources/quantum/port.py b/heat/engine/resources/neutron/port.py similarity index 86% rename from heat/engine/resources/quantum/port.py rename to heat/engine/resources/neutron/port.py index f3c3f8f564..a0eccb9e6f 100644 --- a/heat/engine/resources/quantum/port.py +++ b/heat/engine/resources/neutron/port.py @@ -15,16 +15,16 @@ from heat.engine import clients from heat.openstack.common import log as logging -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron from heat.engine import scheduler -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException logger = logging.getLogger(__name__) -class Port(quantum.QuantumResource): +class Port(neutron.NeutronResource): fixed_ip_schema = {'subnet_id': {'Type': 'String', 'Required': True}, @@ -65,7 +65,8 @@ class Port(quantum.QuantumResource): # to so all subnets in a network should be created before # the ports in that network. for resource in self.stack.resources.itervalues(): - if (resource.type() == 'OS::Quantum::Subnet' and + if ((resource.type() == 'OS::Neutron::Subnet' or + resource.type() == 'OS::Quantum::Subnet') and resource.properties.get('network_id') == self.properties.get('network_id')): deps += (self, resource) @@ -74,11 +75,11 @@ class Port(quantum.QuantumResource): props = self.prepare_properties( self.properties, self.physical_resource_name()) - port = self.quantum().create_port({'port': props})['port'] + port = self.neutron().create_port({'port': props})['port'] self.resource_id_set(port['id']) def _show_resource(self): - return self.quantum().show_port( + return self.neutron().show_port( self.resource_id)['port'] def check_create_complete(self, *args): @@ -86,10 +87,10 @@ class Port(quantum.QuantumResource): return self.is_built(attributes) def handle_delete(self): - client = self.quantum() + client = self.neutron() try: client.delete_port(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex else: @@ -97,9 +98,10 @@ class Port(quantum.QuantumResource): def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { + 'OS::Neutron::Port': Port, 'OS::Quantum::Port': Port, } diff --git a/heat/engine/resources/quantum/router.py b/heat/engine/resources/neutron/router.py similarity index 79% rename from heat/engine/resources/quantum/router.py rename to heat/engine/resources/neutron/router.py index 46c0075054..910733681a 100644 --- a/heat/engine/resources/quantum/router.py +++ b/heat/engine/resources/neutron/router.py @@ -14,18 +14,18 @@ # under the License. from heat.engine import clients -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron from heat.engine import scheduler -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException from heat.openstack.common import log as logging logger = logging.getLogger(__name__) -class Router(quantum.QuantumResource): +class Router(neutron.NeutronResource): properties_schema = {'name': {'Type': 'String'}, 'value_specs': {'Type': 'Map', 'Default': {}}, @@ -44,11 +44,11 @@ class Router(quantum.QuantumResource): props = self.prepare_properties( self.properties, self.physical_resource_name()) - router = self.quantum().create_router({'router': props})['router'] + router = self.neutron().create_router({'router': props})['router'] self.resource_id_set(router['id']) def _show_resource(self): - return self.quantum().show_router( + return self.neutron().show_router( self.resource_id)['router'] def check_create_complete(self, *args): @@ -56,17 +56,17 @@ class Router(quantum.QuantumResource): return self.is_built(attributes) def handle_delete(self): - client = self.quantum() + client = self.neutron() try: client.delete_router(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex else: return scheduler.TaskRunner(self._confirm_delete)() -class RouterInterface(quantum.QuantumResource): +class RouterInterface(neutron.NeutronResource): properties_schema = {'router_id': {'Type': 'String', 'Required': True}, 'subnet_id': {'Type': 'String', @@ -75,24 +75,24 @@ class RouterInterface(quantum.QuantumResource): def handle_create(self): router_id = self.properties.get('router_id') subnet_id = self.properties.get('subnet_id') - self.quantum().add_interface_router( + self.neutron().add_interface_router( router_id, {'subnet_id': subnet_id}) self.resource_id_set('%s:%s' % (router_id, subnet_id)) def handle_delete(self): - client = self.quantum() + client = self.neutron() (router_id, subnet_id) = self.resource_id.split(':') try: client.remove_interface_router( router_id, {'subnet_id': subnet_id}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex -class RouterGateway(quantum.QuantumResource): +class RouterGateway(neutron.NeutronResource): properties_schema = {'router_id': {'Type': 'String', 'Required': True}, 'network_id': {'Type': 'String', @@ -103,14 +103,16 @@ class RouterGateway(quantum.QuantumResource): for resource in self.stack.resources.itervalues(): # depend on any RouterInterface in this template with the same # router_id as this router_id - if (resource.type() == 'OS::Quantum::RouterInterface' and + if ((resource.type() == 'OS::Neutron::RouterInterface' or + resource.type() == 'OS::Quantum::RouterInterface') and resource.properties.get('router_id') == self.properties.get('router_id')): deps += (self, resource) # depend on any subnet in this template with the same network_id # as this network_id, as the gateway implicitly creates a port # on that subnet - elif (resource.type() == 'OS::Quantum::Subnet' and + elif ((resource.type() == 'OS::Neutron::Subnet' or + resource.type() == 'OS::Quantum::Subnet') and resource.properties.get('network_id') == self.properties.get('network_id')): deps += (self, resource) @@ -118,26 +120,29 @@ class RouterGateway(quantum.QuantumResource): def handle_create(self): router_id = self.properties.get('router_id') network_id = self.properties.get('network_id') - self.quantum().add_gateway_router( + self.neutron().add_gateway_router( router_id, {'network_id': network_id}) self.resource_id_set('%s:%s' % (router_id, network_id)) def handle_delete(self): - client = self.quantum() + client = self.neutron() (router_id, network_id) = self.resource_id.split(':') try: client.remove_gateway_router(router_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { + 'OS::Neutron::Router': Router, + 'OS::Neutron::RouterInterface': RouterInterface, + 'OS::Neutron::RouterGateway': RouterGateway, 'OS::Quantum::Router': Router, 'OS::Quantum::RouterInterface': RouterInterface, 'OS::Quantum::RouterGateway': RouterGateway, diff --git a/heat/engine/resources/quantum/subnet.py b/heat/engine/resources/neutron/subnet.py similarity index 87% rename from heat/engine/resources/quantum/subnet.py rename to heat/engine/resources/neutron/subnet.py index a810eb11cc..f66e4ca42d 100644 --- a/heat/engine/resources/quantum/subnet.py +++ b/heat/engine/resources/neutron/subnet.py @@ -15,16 +15,16 @@ from heat.engine import clients from heat.openstack.common import log as logging -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron from heat.engine import scheduler -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException logger = logging.getLogger(__name__) -class Subnet(quantum.QuantumResource): +class Subnet(neutron.NeutronResource): allocation_schema = {'start': {'Type': 'String', 'Required': True}, @@ -68,27 +68,28 @@ class Subnet(quantum.QuantumResource): props = self.prepare_properties( self.properties, self.physical_resource_name()) - subnet = self.quantum().create_subnet({'subnet': props})['subnet'] + subnet = self.neutron().create_subnet({'subnet': props})['subnet'] self.resource_id_set(subnet['id']) def handle_delete(self): - client = self.quantum() + client = self.neutron() try: client.delete_subnet(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex else: return scheduler.TaskRunner(self._confirm_delete)() def _show_resource(self): - return self.quantum().show_subnet(self.resource_id)['subnet'] + return self.neutron().show_subnet(self.resource_id)['subnet'] def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { + 'OS::Neutron::Subnet': Subnet, 'OS::Quantum::Subnet': Subnet, } diff --git a/heat/engine/resources/rackspace/rackspace_resource.py b/heat/engine/resources/rackspace/rackspace_resource.py index b3326fab36..cf6235cf13 100644 --- a/heat/engine/resources/rackspace/rackspace_resource.py +++ b/heat/engine/resources/rackspace/rackspace_resource.py @@ -83,8 +83,8 @@ class RackspaceResource(resource.Resource): return self._cloud_blockstore - def quantum(self): - '''Rackspace quantum client.''' + def neutron(self): + '''Rackspace neutron client.''' if not self._cloud_nw: self.__authenticate() self._cloud_nw = self.pyrax.cloud_networks diff --git a/heat/engine/resources/route_table.py b/heat/engine/resources/route_table.py index 6311e3e88c..b3a68f3f18 100644 --- a/heat/engine/resources/route_table.py +++ b/heat/engine/resources/route_table.py @@ -16,11 +16,11 @@ from heat.engine import clients from heat.openstack.common import log as logging from heat.engine import resource -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron from heat.engine.resources.vpc import VPC -if clients.quantumclient is not None: - from quantumclient.common.exceptions import QuantumClientException +if clients.neutronclient is not None: + from neutronclient.common.exceptions import NeutronClientException logger = logging.getLogger(__name__) @@ -42,16 +42,16 @@ class RouteTable(resource.Resource): } def handle_create(self): - client = self.quantum() + client = self.neutron() props = {'name': self.physical_resource_name()} router = client.create_router({'router': props})['router'] self.resource_id_set(router['id']) def check_create_complete(self, *args): - client = self.quantum() + client = self.neutron() attributes = client.show_router( self.resource_id)['router'] - if not quantum.QuantumResource.is_built(attributes): + if not neutron.NeutronResource.is_built(attributes): return False network_id = self.properties.get('VpcId') @@ -66,19 +66,19 @@ class RouteTable(resource.Resource): return True def handle_delete(self): - client = self.quantum() + client = self.neutron() router_id = self.resource_id try: client.delete_router(router_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex # just in case this router has been added to a gateway, remove it try: client.remove_gateway_router(router_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex @@ -95,7 +95,7 @@ class SubnetRouteTableAssocation(resource.Resource): } def handle_create(self): - client = self.quantum() + client = self.neutron() subnet_id = self.properties.get('SubnetId') router_id = self.properties.get('RouteTableId') @@ -107,7 +107,7 @@ class SubnetRouteTableAssocation(resource.Resource): client.remove_interface_router( previous_router['id'], {'subnet_id': subnet_id}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex @@ -115,14 +115,14 @@ class SubnetRouteTableAssocation(resource.Resource): router_id, {'subnet_id': subnet_id}) def _router_for_subnet(self, subnet_id): - client = self.quantum() + client = self.neutron() subnet = client.show_subnet( subnet_id)['subnet'] network_id = subnet['network_id'] return VPC.router_for_vpc(client, network_id) def handle_delete(self): - client = self.quantum() + client = self.neutron() subnet_id = self.properties.get('SubnetId') router_id = self.properties.get('RouteTableId') @@ -130,7 +130,7 @@ class SubnetRouteTableAssocation(resource.Resource): try: client.remove_interface_router(router_id, { 'subnet_id': subnet_id}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex @@ -140,13 +140,13 @@ class SubnetRouteTableAssocation(resource.Resource): if default_router: client.add_interface_router( default_router['id'], {'subnet_id': subnet_id}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { diff --git a/heat/engine/resources/security_group.py b/heat/engine/resources/security_group.py index ef9cae24b6..f0925ad48c 100644 --- a/heat/engine/resources/security_group.py +++ b/heat/engine/resources/security_group.py @@ -29,14 +29,14 @@ class SecurityGroup(resource.Resource): 'SecurityGroupEgress': {'Type': 'List'}} def handle_create(self): - if self.properties['VpcId'] and clients.quantumclient is not None: - self._handle_create_quantum() + if self.properties['VpcId'] and clients.neutronclient is not None: + self._handle_create_neutron() else: self._handle_create_nova() - def _handle_create_quantum(self): - from quantumclient.common.exceptions import QuantumClientException - client = self.quantum() + def _handle_create_neutron(self): + from neutronclient.common.exceptions import NeutronClientException + client = self.neutron() sec = client.create_security_group({'security_group': { 'name': self.physical_resource_name(), @@ -46,7 +46,7 @@ class SecurityGroup(resource.Resource): self.resource_id_set(sec['id']) if self.properties['SecurityGroupIngress']: for i in self.properties['SecurityGroupIngress']: - # Quantum only accepts positive ints + # Neutron only accepts positive ints if int(i['FromPort']) < 0: i['FromPort'] = None if int(i['ToPort']) < 0: @@ -66,7 +66,7 @@ class SecurityGroup(resource.Resource): 'security_group_id': sec['id'] } }) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code == 409: # no worries, the rule is already there pass @@ -87,7 +87,7 @@ class SecurityGroup(resource.Resource): 'security_group_id': sec['id'] } }) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code == 409: # no worries, the rule is already there pass @@ -128,8 +128,8 @@ class SecurityGroup(resource.Resource): raise def handle_delete(self): - if self.properties['VpcId'] and clients.quantumclient is not None: - self._handle_delete_quantum() + if self.properties['VpcId'] and clients.neutronclient is not None: + self._handle_delete_neutron() else: self._handle_delete_nova() @@ -149,28 +149,28 @@ class SecurityGroup(resource.Resource): self.nova().security_groups.delete(self.resource_id) self.resource_id = None - def _handle_delete_quantum(self): - from quantumclient.common.exceptions import QuantumClientException - client = self.quantum() + def _handle_delete_neutron(self): + from neutronclient.common.exceptions import NeutronClientException + client = self.neutron() if self.resource_id is not None: try: sec = client.show_security_group( self.resource_id)['security_group'] - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise else: for rule in sec['security_group_rules']: try: client.delete_security_group_rule(rule['id']) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise try: client.delete_security_group(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise self.resource_id = None diff --git a/heat/engine/resources/subnet.py b/heat/engine/resources/subnet.py index d79fac98f3..8b9c130f4e 100644 --- a/heat/engine/resources/subnet.py +++ b/heat/engine/resources/subnet.py @@ -43,7 +43,7 @@ class Subnet(resource.Resource): } def handle_create(self): - client = self.quantum() + client = self.neutron() # TODO(sbaker) Verify that this CidrBlock is within the vpc CidrBlock network_id = self.properties.get('VpcId') @@ -55,7 +55,7 @@ class Subnet(resource.Resource): } subnet = client.create_subnet({'subnet': props})['subnet'] - router = VPC.router_for_vpc(self.quantum(), network_id) + router = VPC.router_for_vpc(self.neutron(), network_id) if router: client.add_interface_router( router['id'], @@ -63,25 +63,25 @@ class Subnet(resource.Resource): self.resource_id_set(subnet['id']) def handle_delete(self): - from quantumclient.common.exceptions import QuantumClientException + from neutronclient.common.exceptions import NeutronClientException - client = self.quantum() + client = self.neutron() network_id = self.properties.get('VpcId') subnet_id = self.resource_id try: - router = VPC.router_for_vpc(self.quantum(), network_id) + router = VPC.router_for_vpc(self.neutron(), network_id) if router: client.remove_interface_router( router['id'], {'subnet_id': subnet_id}) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex try: client.delete_subnet(subnet_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex @@ -92,7 +92,7 @@ class Subnet(resource.Resource): def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { diff --git a/heat/engine/resources/vpc.py b/heat/engine/resources/vpc.py index 7d8f5e2fda..fef883b33e 100644 --- a/heat/engine/resources/vpc.py +++ b/heat/engine/resources/vpc.py @@ -17,7 +17,7 @@ from heat.common import exception from heat.engine import clients from heat.openstack.common import log as logging from heat.engine import resource -from heat.engine.resources.quantum import quantum +from heat.engine.resources.neutron import neutron logger = logging.getLogger(__name__) @@ -43,7 +43,7 @@ class VPC(resource.Resource): } def handle_create(self): - client = self.quantum() + client = self.neutron() # The VPC's net and router are associated by having identical names. net_props = {'name': self.physical_resource_name()} router_props = {'name': self.physical_resource_name()} @@ -59,7 +59,7 @@ class VPC(resource.Resource): @staticmethod def router_for_vpc(client, network_id): - # first get the quantum net + # first get the neutron net net = VPC.network_for_vpc(client, network_id) # then find a router with the same name routers = client.list_routers(name=net['name'])['routers'] @@ -73,31 +73,31 @@ class VPC(resource.Resource): return routers[0] def check_create_complete(self, *args): - net = self.network_for_vpc(self.quantum(), self.resource_id) - if not quantum.QuantumResource.is_built(net): + net = self.network_for_vpc(self.neutron(), self.resource_id) + if not neutron.NeutronResource.is_built(net): return False - router = self.router_for_vpc(self.quantum(), self.resource_id) - return quantum.QuantumResource.is_built(router) + router = self.router_for_vpc(self.neutron(), self.resource_id) + return neutron.NeutronResource.is_built(router) def handle_delete(self): - from quantumclient.common.exceptions import QuantumClientException - client = self.quantum() + from neutronclient.common.exceptions import NeutronClientException + client = self.neutron() router = self.router_for_vpc(client, self.resource_id) try: client.delete_router(router['id']) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex try: client.delete_network(self.resource_id) - except QuantumClientException as ex: + except NeutronClientException as ex: if ex.status_code != 404: raise ex def resource_mapping(): - if clients.quantumclient is None: + if clients.neutronclient is None: return {} return { diff --git a/heat/tests/templates/Quantum.template b/heat/tests/templates/Neutron.template similarity index 87% rename from heat/tests/templates/Quantum.template rename to heat/tests/templates/Neutron.template index 1fd3298540..11631bcc75 100644 --- a/heat/tests/templates/Quantum.template +++ b/heat/tests/templates/Neutron.template @@ -1,7 +1,7 @@ { "AWSTemplateFormatVersion" : "2010-09-09", - "Description" : "Template to test Quantum resources", + "Description" : "Template to test Neutron resources", "Parameters" : { @@ -9,23 +9,23 @@ "Resources" : { "network": { - "Type": "OS::Quantum::Net", + "Type": "OS::Neutron::Net", "Properties": { "name": "the_network" } }, "unnamed_network": { - "Type": "OS::Quantum::Net" + "Type": "OS::Neutron::Net" }, "admin_down_network": { - "Type": "OS::Quantum::Net", + "Type": "OS::Neutron::Net", "Properties": { "admin_state_up": false } }, "subnet": { - "Type": "OS::Quantum::Subnet", + "Type": "OS::Neutron::Subnet", "Properties": { "network_id": { "Ref" : "network" }, "ip_version": 4, @@ -35,7 +35,7 @@ }, "port": { - "Type": "OS::Quantum::Port", + "Type": "OS::Neutron::Port", "Properties": { "device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc0", "name": "port1", @@ -48,11 +48,11 @@ }, "router": { - "Type": "OS::Quantum::Router" + "Type": "OS::Neutron::Router" }, "router_interface": { - "Type": "OS::Quantum::RouterInterface", + "Type": "OS::Neutron::RouterInterface", "Properties": { "router_id": { "Ref" : "router" }, "subnet_id": { "Ref" : "subnet" } @@ -97,4 +97,4 @@ "Description" : "All attributes for router" } } -} \ No newline at end of file +} diff --git a/heat/tests/templates/Quantum.yaml b/heat/tests/templates/Neutron.yaml similarity index 86% rename from heat/tests/templates/Quantum.yaml rename to heat/tests/templates/Neutron.yaml index 3015a4f53d..7c5895e56a 100644 --- a/heat/tests/templates/Quantum.yaml +++ b/heat/tests/templates/Neutron.yaml @@ -1,16 +1,16 @@ HeatTemplateFormatVersion: '2012-12-12' -Description: Template to test Quantum resources +Description: Template to test Neutron resources Resources: network: - Type: OS::Quantum::Net + Type: OS::Neutron::Net Properties: {name: the_network} unnamed_network: - Type: 'OS::Quantum::Net' + Type: 'OS::Neutron::Net' admin_down_network: - Type: OS::Quantum::Net + Type: OS::Neutron::Net Properties: {admin_state_up: false} subnet: - Type: OS::Quantum::Subnet + Type: OS::Neutron::Subnet Properties: network_id: {Ref: network} ip_version: 4 @@ -18,7 +18,7 @@ Resources: allocation_pools: - {end: 10.0.3.150, start: 10.0.3.20} port: - Type: OS::Quantum::Port + Type: OS::Neutron::Port Properties: device_id: d6b4d3a5-c700-476f-b609-1493dd9dadc0 name: port1 @@ -27,9 +27,9 @@ Resources: - subnet_id: {Ref: subnet} ip_address: 10.0.3.21 router: - Type: 'OS::Quantum::Router' + Type: 'OS::Neutron::Router' router_interface: - Type: OS::Quantum::RouterInterface + Type: OS::Neutron::RouterInterface Properties: router_id: {Ref: router} subnet_id: {Ref: subnet} diff --git a/heat/tests/test_instance_network.py b/heat/tests/test_instance_network.py index 389e9b52fa..19f31405a7 100644 --- a/heat/tests/test_instance_network.py +++ b/heat/tests/test_instance_network.py @@ -110,7 +110,7 @@ wp_template_with_nic = ''' ''' -class FakeQuantum(object): +class FakeNeutron(object): def show_subnet(self, subnet, **_params): return { @@ -169,8 +169,8 @@ class instancesTest(HeatTestCase): self.m.StubOutWithMock(instance, 'nova') instance.nova().MultipleTimes().AndReturn(self.fc) - self.m.StubOutWithMock(instance, 'quantum') - instance.quantum().MultipleTimes().AndReturn(FakeQuantum()) + self.m.StubOutWithMock(instance, 'neutron') + instance.neutron().MultipleTimes().AndReturn(FakeNeutron()) instance.t = instance.stack.resolve_runtime_data(instance.t) @@ -212,8 +212,8 @@ class instancesTest(HeatTestCase): instance = instances.Instance('%s_name' % name, t['Resources']['WebServer'], stack) - self.m.StubOutWithMock(nic, 'quantum') - nic.quantum().MultipleTimes().AndReturn(FakeQuantum()) + self.m.StubOutWithMock(nic, 'neutron') + nic.neutron().MultipleTimes().AndReturn(FakeNeutron()) self.m.StubOutWithMock(instance, 'nova') instance.nova().MultipleTimes().AndReturn(self.fc) diff --git a/heat/tests/test_quantum.py b/heat/tests/test_neutron.py similarity index 80% rename from heat/tests/test_quantum.py rename to heat/tests/test_neutron.py index de93843e65..d25ad237dc 100644 --- a/heat/tests/test_quantum.py +++ b/heat/tests/test_neutron.py @@ -21,10 +21,10 @@ from heat.common import template_format from heat.engine import properties from heat.engine import resource from heat.engine import scheduler -from heat.engine.resources.quantum import net -from heat.engine.resources.quantum import subnet -from heat.engine.resources.quantum import router -from heat.engine.resources.quantum.quantum import QuantumResource as qr +from heat.engine.resources.neutron import net +from heat.engine.resources.neutron import subnet +from heat.engine.resources.neutron import router +from heat.engine.resources.neutron.neutron import NeutronResource as qr from heat.openstack.common.importutils import try_import from heat.tests.common import HeatTestCase from heat.tests import fakes @@ -32,32 +32,32 @@ from heat.tests import utils from heat.tests.utils import setup_dummy_db from heat.tests.utils import parse_stack -quantumclient = try_import('quantumclient.v2_0.client') -qe = try_import('quantumclient.common.exceptions') +neutronclient = try_import('neutronclient.v2_0.client') +qe = try_import('neutronclient.common.exceptions') -quantum_template = ''' +neutron_template = ''' { "AWSTemplateFormatVersion" : "2010-09-09", - "Description" : "Template to test Quantum resources", + "Description" : "Template to test Neutron resources", "Parameters" : {}, "Resources" : { "network": { - "Type": "OS::Quantum::Net", + "Type": "OS::Neutron::Net", "Properties": { "name": "the_network" } }, "unnamed_network": { - "Type": "OS::Quantum::Net" + "Type": "OS::Neutron::Net" }, "admin_down_network": { - "Type": "OS::Quantum::Net", + "Type": "OS::Neutron::Net", "Properties": { "admin_state_up": false } }, "subnet": { - "Type": "OS::Quantum::Subnet", + "Type": "OS::Neutron::Subnet", "Properties": { "network_id": { "Ref" : "network" }, "ip_version": 4, @@ -67,7 +67,7 @@ quantum_template = ''' } }, "port": { - "Type": "OS::Quantum::Port", + "Type": "OS::Neutron::Port", "Properties": { "device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc0", "name": "port1", @@ -79,24 +79,24 @@ quantum_template = ''' } }, "port2": { - "Type": "OS::Quantum::Port", + "Type": "OS::Neutron::Port", "Properties": { "name": "port2", "network_id": { "Ref" : "network" } } }, "router": { - "Type": "OS::Quantum::Router" + "Type": "OS::Neutron::Router" }, "router_interface": { - "Type": "OS::Quantum::RouterInterface", + "Type": "OS::Neutron::RouterInterface", "Properties": { "router_id": { "Ref" : "router" }, "subnet_id": { "Ref" : "subnet" } } }, "gateway": { - "Type": "OS::Quantum::RouterGateway", + "Type": "OS::Neutron::RouterGateway", "Properties": { "router_id": { "Ref" : "router" }, "network_id": { "Ref" : "network" } @@ -106,14 +106,14 @@ quantum_template = ''' } ''' -quantum_floating_template = ''' +neutron_floating_template = ''' { "AWSTemplateFormatVersion" : "2010-09-09", - "Description" : "Template to test Quantum resources", + "Description" : "Template to test Neutron resources", "Parameters" : {}, "Resources" : { "port_floating": { - "Type": "OS::Quantum::Port", + "Type": "OS::Neutron::Port", "Properties": { "network_id": "xyz1234", "fixed_ips": [{ @@ -123,23 +123,23 @@ quantum_floating_template = ''' } }, "floating_ip": { - "Type": "OS::Quantum::FloatingIP", + "Type": "OS::Neutron::FloatingIP", "Properties": { "floating_network_id": "abcd1234", } }, "floating_ip_assoc": { - "Type": "OS::Quantum::FloatingIPAssociation", + "Type": "OS::Neutron::FloatingIPAssociation", "Properties": { "floatingip_id": { "Ref" : "floating_ip" }, "port_id": { "Ref" : "port_floating" } } }, "router": { - "Type": "OS::Quantum::Router" + "Type": "OS::Neutron::Router" }, "gateway": { - "Type": "OS::Quantum::RouterGateway", + "Type": "OS::Neutron::RouterGateway", "Properties": { "router_id": { "Ref" : "router" }, "network_id": "abcd1234" @@ -150,7 +150,7 @@ quantum_floating_template = ''' ''' -class QuantumTest(HeatTestCase): +class NeutronTest(HeatTestCase): def test_validate_properties(self): vs = {'router:external': True} @@ -205,14 +205,14 @@ class QuantumTest(HeatTestCase): }) -@skipIf(quantumclient is None, 'quantumclient unavailable') -class QuantumNetTest(HeatTestCase): +@skipIf(neutronclient is None, 'neutronclient unavailable') +class NeutronNetTest(HeatTestCase): def setUp(self): - super(QuantumNetTest, self).setUp() - self.m.StubOutWithMock(quantumclient.Client, 'create_network') - self.m.StubOutWithMock(quantumclient.Client, 'delete_network') - self.m.StubOutWithMock(quantumclient.Client, 'show_network') + super(NeutronNetTest, self).setUp() + self.m.StubOutWithMock(neutronclient.Client, 'create_network') + self.m.StubOutWithMock(neutronclient.Client, 'delete_network') + self.m.StubOutWithMock(neutronclient.Client, 'show_network') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') setup_dummy_db() @@ -225,7 +225,7 @@ class QuantumNetTest(HeatTestCase): def test_net(self): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_network({ + neutronclient.Client.create_network({ 'network': {'name': u'the_network', 'admin_state_up': True} }).AndReturn({"network": { "status": "BUILD", @@ -237,7 +237,7 @@ class QuantumNetTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({"network": { "status": "BUILD", @@ -249,7 +249,7 @@ class QuantumNetTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({"network": { "status": "ACTIVE", @@ -261,11 +261,11 @@ class QuantumNetTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({"network": { "status": "ACTIVE", @@ -277,7 +277,7 @@ class QuantumNetTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({"network": { "status": "ACTIVE", @@ -289,20 +289,20 @@ class QuantumNetTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.delete_network( + neutronclient.Client.delete_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn(None) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_network( + neutronclient.Client.delete_network( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) stack = parse_stack(t) rsrc = self.create_net(t, stack, 'network') @@ -339,14 +339,14 @@ class QuantumNetTest(HeatTestCase): self.m.VerifyAll() -@skipIf(quantumclient is None, 'quantumclient unavailable') -class QuantumSubnetTest(HeatTestCase): +@skipIf(neutronclient is None, 'neutronclient unavailable') +class NeutronSubnetTest(HeatTestCase): def setUp(self): - super(QuantumSubnetTest, self).setUp() - self.m.StubOutWithMock(quantumclient.Client, 'create_subnet') - self.m.StubOutWithMock(quantumclient.Client, 'delete_subnet') - self.m.StubOutWithMock(quantumclient.Client, 'show_subnet') + super(NeutronSubnetTest, self).setUp() + self.m.StubOutWithMock(neutronclient.Client, 'create_subnet') + self.m.StubOutWithMock(neutronclient.Client, 'delete_subnet') + self.m.StubOutWithMock(neutronclient.Client, 'show_subnet') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') setup_dummy_db() @@ -361,7 +361,7 @@ class QuantumSubnetTest(HeatTestCase): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_subnet({ + neutronclient.Client.create_subnet({ 'subnet': { 'name': utils.PhysName('test_stack', 'test_subnet'), 'network_id': u'None', @@ -386,9 +386,9 @@ class QuantumSubnetTest(HeatTestCase): "tenant_id": "c1210485b2424d48804aad5d39c61b8f" } }) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1').AndRaise( - qe.QuantumClientException(status_code=404)) + qe.NeutronClientException(status_code=404)) sn = { "subnet": { "name": "name", @@ -404,27 +404,27 @@ class QuantumSubnetTest(HeatTestCase): "enable_dhcp": True, } } - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1').AndReturn(sn) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1').AndReturn(sn) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1').AndReturn(sn) - quantumclient.Client.delete_subnet( + neutronclient.Client.delete_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1' ).AndReturn(None) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_subnet( + neutronclient.Client.delete_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) stack = parse_stack(t) rsrc = self.create_subnet(t, stack, 'subnet') @@ -457,7 +457,7 @@ class QuantumSubnetTest(HeatTestCase): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_subnet({ + neutronclient.Client.create_subnet({ 'subnet': { 'name': utils.PhysName('test_stack', 'test_subnet'), 'network_id': u'None', @@ -484,7 +484,7 @@ class QuantumSubnetTest(HeatTestCase): } }) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1').AndReturn({ "subnet": { "name": "name", @@ -501,16 +501,16 @@ class QuantumSubnetTest(HeatTestCase): } }) - quantumclient.Client.delete_subnet( + neutronclient.Client.delete_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1' ).AndReturn(None) - quantumclient.Client.show_subnet( + neutronclient.Client.show_subnet( '91e47a57-7508-46fe-afc9-fc454e8580e1' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) t['Resources']['subnet']['Properties']['enable_dhcp'] = 'False' stack = parse_stack(t) rsrc = self.create_subnet(t, stack, 'subnet') @@ -524,17 +524,17 @@ class QuantumSubnetTest(HeatTestCase): self.m.VerifyAll() -@skipIf(quantumclient is None, 'quantumclient unavailable') -class QuantumRouterTest(HeatTestCase): +@skipIf(neutronclient is None, 'neutronclient unavailable') +class NeutronRouterTest(HeatTestCase): def setUp(self): - super(QuantumRouterTest, self).setUp() - self.m.StubOutWithMock(quantumclient.Client, 'create_router') - self.m.StubOutWithMock(quantumclient.Client, 'delete_router') - self.m.StubOutWithMock(quantumclient.Client, 'show_router') - self.m.StubOutWithMock(quantumclient.Client, 'add_interface_router') - self.m.StubOutWithMock(quantumclient.Client, 'remove_interface_router') - self.m.StubOutWithMock(quantumclient.Client, 'add_gateway_router') - self.m.StubOutWithMock(quantumclient.Client, 'remove_gateway_router') + super(NeutronRouterTest, self).setUp() + self.m.StubOutWithMock(neutronclient.Client, 'create_router') + self.m.StubOutWithMock(neutronclient.Client, 'delete_router') + self.m.StubOutWithMock(neutronclient.Client, 'show_router') + self.m.StubOutWithMock(neutronclient.Client, 'add_interface_router') + self.m.StubOutWithMock(neutronclient.Client, 'remove_interface_router') + self.m.StubOutWithMock(neutronclient.Client, 'add_gateway_router') + self.m.StubOutWithMock(neutronclient.Client, 'remove_gateway_router') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') setup_dummy_db() @@ -567,7 +567,7 @@ class QuantumRouterTest(HeatTestCase): def test_router(self): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_router({ + neutronclient.Client.create_router({ 'router': { 'name': utils.PhysName('test_stack', 'router'), 'admin_state_up': True, @@ -582,7 +582,7 @@ class QuantumRouterTest(HeatTestCase): "id": "3e46229d-8fce-4733-819a-b5fe630550f8" } }) - quantumclient.Client.show_router( + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8').AndReturn({ "router": { "status": "BUILD", @@ -594,7 +594,7 @@ class QuantumRouterTest(HeatTestCase): "id": "3e46229d-8fce-4733-819a-b5fe630550f8" } }) - quantumclient.Client.show_router( + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8').AndReturn({ "router": { "status": "ACTIVE", @@ -607,10 +607,10 @@ class QuantumRouterTest(HeatTestCase): } }) - quantumclient.Client.show_router( + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8').AndRaise( - qe.QuantumClientException(status_code=404)) - quantumclient.Client.show_router( + qe.NeutronClientException(status_code=404)) + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8').AndReturn({ "router": { "status": "ACTIVE", @@ -622,7 +622,7 @@ class QuantumRouterTest(HeatTestCase): "id": "3e46229d-8fce-4733-819a-b5fe630550f8" } }) - quantumclient.Client.show_router( + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8').AndReturn({ "router": { "status": "ACTIVE", @@ -635,20 +635,20 @@ class QuantumRouterTest(HeatTestCase): } }) - quantumclient.Client.delete_router( + neutronclient.Client.delete_router( '3e46229d-8fce-4733-819a-b5fe630550f8' ).AndReturn(None) - quantumclient.Client.show_router( + neutronclient.Client.show_router( '3e46229d-8fce-4733-819a-b5fe630550f8' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_router( + neutronclient.Client.delete_router( '3e46229d-8fce-4733-819a-b5fe630550f8' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) stack = parse_stack(t) rsrc = self.create_router(t, stack, 'router') @@ -674,20 +674,20 @@ class QuantumRouterTest(HeatTestCase): def test_router_interface(self): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.add_interface_router( + neutronclient.Client.add_interface_router( '3e46229d-8fce-4733-819a-b5fe630550f8', {'subnet_id': '91e47a57-7508-46fe-afc9-fc454e8580e1'} ).AndReturn(None) - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( '3e46229d-8fce-4733-819a-b5fe630550f8', {'subnet_id': '91e47a57-7508-46fe-afc9-fc454e8580e1'} ).AndReturn(None) - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( '3e46229d-8fce-4733-819a-b5fe630550f8', {'subnet_id': '91e47a57-7508-46fe-afc9-fc454e8580e1'} - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) stack = parse_stack(t) rsrc = self.create_router_interface( @@ -704,18 +704,18 @@ class QuantumRouterTest(HeatTestCase): def test_gateway_router(self): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.add_gateway_router( + neutronclient.Client.add_gateway_router( '3e46229d-8fce-4733-819a-b5fe630550f8', {'network_id': 'fc68ea2c-b60b-4b4f-bd82-94ec81110766'} ).AndReturn(None) - quantumclient.Client.remove_gateway_router( + neutronclient.Client.remove_gateway_router( '3e46229d-8fce-4733-819a-b5fe630550f8' ).AndReturn(None) - quantumclient.Client.remove_gateway_router( + neutronclient.Client.remove_gateway_router( '3e46229d-8fce-4733-819a-b5fe630550f8' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_template) + t = template_format.parse(neutron_template) stack = parse_stack(t) rsrc = self.create_gateway_router( @@ -730,18 +730,18 @@ class QuantumRouterTest(HeatTestCase): self.m.VerifyAll() -@skipIf(quantumclient is None, 'quantumclient unavailable') -class QuantumFloatingIPTest(HeatTestCase): - @skipIf(net.clients.quantumclient is None, "Missing Quantum Client") +@skipIf(neutronclient is None, 'neutronclient unavailable') +class NeutronFloatingIPTest(HeatTestCase): + @skipIf(net.clients.neutronclient is None, "Missing Neutron Client") def setUp(self): - super(QuantumFloatingIPTest, self).setUp() - self.m.StubOutWithMock(quantumclient.Client, 'create_floatingip') - self.m.StubOutWithMock(quantumclient.Client, 'delete_floatingip') - self.m.StubOutWithMock(quantumclient.Client, 'show_floatingip') - self.m.StubOutWithMock(quantumclient.Client, 'update_floatingip') - self.m.StubOutWithMock(quantumclient.Client, 'create_port') - self.m.StubOutWithMock(quantumclient.Client, 'delete_port') - self.m.StubOutWithMock(quantumclient.Client, 'show_port') + super(NeutronFloatingIPTest, self).setUp() + self.m.StubOutWithMock(neutronclient.Client, 'create_floatingip') + self.m.StubOutWithMock(neutronclient.Client, 'delete_floatingip') + self.m.StubOutWithMock(neutronclient.Client, 'show_floatingip') + self.m.StubOutWithMock(neutronclient.Client, 'update_floatingip') + self.m.StubOutWithMock(neutronclient.Client, 'create_port') + self.m.StubOutWithMock(neutronclient.Client, 'delete_port') + self.m.StubOutWithMock(neutronclient.Client, 'show_port') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') setup_dummy_db() @@ -749,31 +749,31 @@ class QuantumFloatingIPTest(HeatTestCase): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_floatingip({ + neutronclient.Client.create_floatingip({ 'floatingip': {'floating_network_id': u'abcd1234'} }).AndReturn({'floatingip': { "status": "ACTIVE", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_floatingip( + neutronclient.Client.show_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) - quantumclient.Client.show_floatingip( + ).AndRaise(qe.NeutronClientException(status_code=404)) + neutronclient.Client.show_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).MultipleTimes().AndReturn({'floatingip': { "status": "ACTIVE", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.delete_floatingip( + neutronclient.Client.delete_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766').AndReturn(None) - quantumclient.Client.delete_floatingip( + neutronclient.Client.delete_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766').AndRaise( - qe.QuantumClientException(status_code=404)) + qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_floating_template) + t = template_format.parse(neutron_floating_template) stack = parse_stack(t) # assert the implicit dependency between the floating_ip @@ -811,7 +811,7 @@ class QuantumFloatingIPTest(HeatTestCase): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_port({'port': { + neutronclient.Client.create_port({'port': { 'network_id': u'xyz1234', 'fixed_ips': [ {'subnet_id': u'12.12.12.0', 'ip_address': u'10.0.0.10'} @@ -822,22 +822,22 @@ class QuantumFloatingIPTest(HeatTestCase): "status": "BUILD", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_port( + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({'port': { "status": "BUILD", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_port( + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({'port': { "status": "ACTIVE", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_port( + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) - quantumclient.Client.show_port( + ).AndRaise(qe.NeutronClientException(status_code=404)) + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).MultipleTimes().AndReturn({'port': { "status": "ACTIVE", @@ -846,7 +846,7 @@ class QuantumFloatingIPTest(HeatTestCase): self.m.ReplayAll() - t = template_format.parse(quantum_floating_template) + t = template_format.parse(neutron_floating_template) stack = parse_stack(t) p = stack['port_floating'] @@ -877,14 +877,14 @@ class QuantumFloatingIPTest(HeatTestCase): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) - quantumclient.Client.create_floatingip({ + neutronclient.Client.create_floatingip({ 'floatingip': {'floating_network_id': u'abcd1234'} }).AndReturn({'floatingip': { "status": "ACTIVE", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.create_port({'port': { + neutronclient.Client.create_port({'port': { 'network_id': u'xyz1234', 'fixed_ips': [ {'subnet_id': u'12.12.12.0', 'ip_address': u'10.0.0.10'} @@ -895,13 +895,13 @@ class QuantumFloatingIPTest(HeatTestCase): "status": "BUILD", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.show_port( + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn({'port': { "status": "ACTIVE", "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.update_floatingip( + neutronclient.Client.update_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766', { 'floatingip': { @@ -911,41 +911,41 @@ class QuantumFloatingIPTest(HeatTestCase): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }}) - quantumclient.Client.update_floatingip( + neutronclient.Client.update_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766', {'floatingip': { 'port_id': None }}).AndReturn(None) - quantumclient.Client.delete_port( + neutronclient.Client.delete_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn(None) - quantumclient.Client.show_port( + neutronclient.Client.show_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_floatingip( + neutronclient.Client.delete_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' ).AndReturn(None) - quantumclient.Client.update_floatingip( + neutronclient.Client.update_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766', {'floatingip': { 'port_id': None - }}).AndRaise(qe.QuantumClientException(status_code=404)) + }}).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_port( + neutronclient.Client.delete_port( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) - quantumclient.Client.delete_floatingip( + neutronclient.Client.delete_floatingip( 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.QuantumClientException(status_code=404)) + ).AndRaise(qe.NeutronClientException(status_code=404)) self.m.ReplayAll() - t = template_format.parse(quantum_floating_template) + t = template_format.parse(neutron_floating_template) stack = parse_stack(t) fip = stack['floating_ip'] diff --git a/heat/tests/test_security_group.py b/heat/tests/test_security_group.py index 0d395a0ac8..24b18fe08e 100644 --- a/heat/tests/test_security_group.py +++ b/heat/tests/test_security_group.py @@ -28,8 +28,8 @@ from heat.tests.utils import stack_delete_after from novaclient.v1_1 import security_groups as nova_sg from novaclient.v1_1 import security_group_rules as nova_sgr -from quantumclient.common.exceptions import QuantumClientException -from quantumclient.v2_0 import client as quantumclient +from neutronclient.common.exceptions import NeutronClientException +from neutronclient.v2_0 import client as neutronclient NovaSG = collections.namedtuple('NovaSG', ' '.join([ @@ -60,7 +60,7 @@ Resources: CidrIp : 0.0.0.0/0 ''' - test_template_quantum = ''' + test_template_neutron = ''' HeatTemplateFormatVersion: '2012-12-12' Resources: the_sg: @@ -96,13 +96,13 @@ Resources: self.m.StubOutWithMock(nova_sg.SecurityGroupManager, 'get') self.m.StubOutWithMock(nova_sg.SecurityGroupManager, 'list') setup_dummy_db() - self.m.StubOutWithMock(quantumclient.Client, 'create_security_group') + self.m.StubOutWithMock(neutronclient.Client, 'create_security_group') self.m.StubOutWithMock( - quantumclient.Client, 'create_security_group_rule') - self.m.StubOutWithMock(quantumclient.Client, 'show_security_group') + neutronclient.Client, 'create_security_group_rule') + self.m.StubOutWithMock(neutronclient.Client, 'show_security_group') self.m.StubOutWithMock( - quantumclient.Client, 'delete_security_group_rule') - self.m.StubOutWithMock(quantumclient.Client, 'delete_security_group') + neutronclient.Client, 'delete_security_group_rule') + self.m.StubOutWithMock(neutronclient.Client, 'delete_security_group') def create_stack(self, template): t = template_format.parse(template) @@ -275,12 +275,12 @@ Resources: self.m.VerifyAll() @stack_delete_after - def test_security_group_quantum(self): + def test_security_group_neutron(self): #create script clients.OpenStackClients.keystone().AndReturn( FakeKeystoneClient()) sg_name = utils.PhysName('test_stack', 'the_sg') - quantumclient.Client.create_security_group({ + neutronclient.Client.create_security_group({ 'security_group': { 'name': sg_name, 'description': 'HTTP and SSH access' @@ -295,7 +295,7 @@ Resources: } }) - quantumclient.Client.create_security_group_rule({ + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'ingress', 'remote_ip_prefix': '0.0.0.0/0', @@ -317,7 +317,7 @@ Resources: 'id': 'bbbb' } }) - quantumclient.Client.create_security_group_rule({ + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'ingress', 'remote_ip_prefix': '0.0.0.0/0', @@ -339,7 +339,7 @@ Resources: 'id': 'cccc' } }) - quantumclient.Client.create_security_group_rule({ + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'egress', 'remote_ip_prefix': '10.0.1.0/24', @@ -363,7 +363,7 @@ Resources: }) # delete script - quantumclient.Client.show_security_group('aaaa').AndReturn({ + neutronclient.Client.show_security_group('aaaa').AndReturn({ 'security_group': { 'tenant_id': 'f18ca530cc05425e8bac0a5ff92f7e88', 'name': 'sc1', @@ -400,13 +400,13 @@ Resources: 'port_range_min': 22 }], 'id': 'aaaa'}}) - quantumclient.Client.delete_security_group_rule('bbbb').AndReturn(None) - quantumclient.Client.delete_security_group_rule('cccc').AndReturn(None) - quantumclient.Client.delete_security_group_rule('dddd').AndReturn(None) - quantumclient.Client.delete_security_group('aaaa').AndReturn(None) + neutronclient.Client.delete_security_group_rule('bbbb').AndReturn(None) + neutronclient.Client.delete_security_group_rule('cccc').AndReturn(None) + neutronclient.Client.delete_security_group_rule('dddd').AndReturn(None) + neutronclient.Client.delete_security_group('aaaa').AndReturn(None) self.m.ReplayAll() - stack = self.create_stack(self.test_template_quantum) + stack = self.create_stack(self.test_template_neutron) sg = stack['the_sg'] self.assertRaises(resource.UpdateReplace, sg.handle_update, {}, {}, {}) @@ -417,12 +417,12 @@ Resources: self.m.VerifyAll() @stack_delete_after - def test_security_group_quantum_exception(self): + def test_security_group_neutron_exception(self): #create script clients.OpenStackClients.keystone().AndReturn( FakeKeystoneClient()) sg_name = utils.PhysName('test_stack', 'the_sg') - quantumclient.Client.create_security_group({ + neutronclient.Client.create_security_group({ 'security_group': { 'name': sg_name, 'description': 'HTTP and SSH access' @@ -437,7 +437,7 @@ Resources: } }) - quantumclient.Client.create_security_group_rule({ + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'ingress', 'remote_ip_prefix': '0.0.0.0/0', @@ -448,8 +448,8 @@ Resources: 'security_group_id': 'aaaa' } }).AndRaise( - QuantumClientException(status_code=409)) - quantumclient.Client.create_security_group_rule({ + NeutronClientException(status_code=409)) + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'ingress', 'remote_ip_prefix': '0.0.0.0/0', @@ -460,8 +460,8 @@ Resources: 'security_group_id': 'aaaa' } }).AndRaise( - QuantumClientException(status_code=409)) - quantumclient.Client.create_security_group_rule({ + NeutronClientException(status_code=409)) + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'egress', 'remote_ip_prefix': '10.0.1.0/24', @@ -472,10 +472,10 @@ Resources: 'security_group_id': 'aaaa' } }).AndRaise( - QuantumClientException(status_code=409)) + NeutronClientException(status_code=409)) # delete script - quantumclient.Client.show_security_group('aaaa').AndReturn({ + neutronclient.Client.show_security_group('aaaa').AndReturn({ 'security_group': { 'tenant_id': 'f18ca530cc05425e8bac0a5ff92f7e88', 'name': 'sc1', @@ -512,20 +512,20 @@ Resources: 'port_range_min': 22 }], 'id': 'aaaa'}}) - quantumclient.Client.delete_security_group_rule('bbbb').AndRaise( - QuantumClientException(status_code=404)) - quantumclient.Client.delete_security_group_rule('cccc').AndRaise( - QuantumClientException(status_code=404)) - quantumclient.Client.delete_security_group_rule('dddd').AndRaise( - QuantumClientException(status_code=404)) - quantumclient.Client.delete_security_group('aaaa').AndRaise( - QuantumClientException(status_code=404)) + neutronclient.Client.delete_security_group_rule('bbbb').AndRaise( + NeutronClientException(status_code=404)) + neutronclient.Client.delete_security_group_rule('cccc').AndRaise( + NeutronClientException(status_code=404)) + neutronclient.Client.delete_security_group_rule('dddd').AndRaise( + NeutronClientException(status_code=404)) + neutronclient.Client.delete_security_group('aaaa').AndRaise( + NeutronClientException(status_code=404)) - quantumclient.Client.show_security_group('aaaa').AndRaise( - QuantumClientException(status_code=404)) + neutronclient.Client.show_security_group('aaaa').AndRaise( + NeutronClientException(status_code=404)) self.m.ReplayAll() - stack = self.create_stack(self.test_template_quantum) + stack = self.create_stack(self.test_template_neutron) sg = stack['the_sg'] self.assertRaises(resource.UpdateReplace, sg.handle_update, {}, {}, {}) diff --git a/heat/tests/test_template_format.py b/heat/tests/test_template_format.py index f668ba802d..d3b0ca15ef 100644 --- a/heat/tests/test_template_format.py +++ b/heat/tests/test_template_format.py @@ -151,9 +151,9 @@ class JsonYamlResolvedCompareTest(HeatTestCase): for key in stack1.resources: self.assertEqual(stack1.resources[key].t, stack2.resources[key].t) - @skipIf(clients.quantumclient is None, 'quantumclient unavailable') - def test_quantum_resolved(self): - self.compare_stacks('Quantum.template', 'Quantum.yaml', {}) + @skipIf(clients.neutronclient is None, 'neutronclient unavailable') + def test_neutron_resolved(self): + self.compare_stacks('Neutron.template', 'Neutron.yaml', {}) def test_wordpress_resolved(self): self.compare_stacks('WordPress_Single_Instance.template', diff --git a/heat/tests/test_vpc.py b/heat/tests/test_vpc.py index 641f85cc5f..e1a3ae20b4 100644 --- a/heat/tests/test_vpc.py +++ b/heat/tests/test_vpc.py @@ -26,42 +26,42 @@ from heat.tests.utils import dummy_context from heat.tests.utils import setup_dummy_db try: - from quantumclient.common.exceptions import QuantumClientException - from quantumclient.v2_0 import client as quantumclient + from neutronclient.common.exceptions import NeutronClientException + from neutronclient.v2_0 import client as neutronclient except ImportError: - quantumclient = None + neutronclient = None class VPCTestBase(HeatTestCase): - @skipIf(quantumclient is None, 'quantumclient unavaialble') + @skipIf(neutronclient is None, 'neutronclient unavaialble') def setUp(self): super(VPCTestBase, self).setUp() setup_dummy_db() - self.m.StubOutWithMock(quantumclient.Client, 'add_interface_router') - self.m.StubOutWithMock(quantumclient.Client, 'add_gateway_router') - self.m.StubOutWithMock(quantumclient.Client, 'create_network') - self.m.StubOutWithMock(quantumclient.Client, 'create_port') - self.m.StubOutWithMock(quantumclient.Client, 'create_router') - self.m.StubOutWithMock(quantumclient.Client, 'create_subnet') - self.m.StubOutWithMock(quantumclient.Client, 'delete_network') - self.m.StubOutWithMock(quantumclient.Client, 'delete_port') - self.m.StubOutWithMock(quantumclient.Client, 'delete_router') - self.m.StubOutWithMock(quantumclient.Client, 'delete_subnet') - self.m.StubOutWithMock(quantumclient.Client, 'list_networks') - self.m.StubOutWithMock(quantumclient.Client, 'list_routers') - self.m.StubOutWithMock(quantumclient.Client, 'remove_gateway_router') - self.m.StubOutWithMock(quantumclient.Client, 'remove_interface_router') - self.m.StubOutWithMock(quantumclient.Client, 'show_subnet') - self.m.StubOutWithMock(quantumclient.Client, 'show_network') - self.m.StubOutWithMock(quantumclient.Client, 'show_router') - self.m.StubOutWithMock(quantumclient.Client, 'create_security_group') - self.m.StubOutWithMock(quantumclient.Client, 'show_security_group') - self.m.StubOutWithMock(quantumclient.Client, 'delete_security_group') + self.m.StubOutWithMock(neutronclient.Client, 'add_interface_router') + self.m.StubOutWithMock(neutronclient.Client, 'add_gateway_router') + self.m.StubOutWithMock(neutronclient.Client, 'create_network') + self.m.StubOutWithMock(neutronclient.Client, 'create_port') + self.m.StubOutWithMock(neutronclient.Client, 'create_router') + self.m.StubOutWithMock(neutronclient.Client, 'create_subnet') + self.m.StubOutWithMock(neutronclient.Client, 'delete_network') + self.m.StubOutWithMock(neutronclient.Client, 'delete_port') + self.m.StubOutWithMock(neutronclient.Client, 'delete_router') + self.m.StubOutWithMock(neutronclient.Client, 'delete_subnet') + self.m.StubOutWithMock(neutronclient.Client, 'list_networks') + self.m.StubOutWithMock(neutronclient.Client, 'list_routers') + self.m.StubOutWithMock(neutronclient.Client, 'remove_gateway_router') + self.m.StubOutWithMock(neutronclient.Client, 'remove_interface_router') + self.m.StubOutWithMock(neutronclient.Client, 'show_subnet') + self.m.StubOutWithMock(neutronclient.Client, 'show_network') + self.m.StubOutWithMock(neutronclient.Client, 'show_router') + self.m.StubOutWithMock(neutronclient.Client, 'create_security_group') + self.m.StubOutWithMock(neutronclient.Client, 'show_security_group') + self.m.StubOutWithMock(neutronclient.Client, 'delete_security_group') self.m.StubOutWithMock( - quantumclient.Client, 'create_security_group_rule') + neutronclient.Client, 'create_security_group_rule') self.m.StubOutWithMock( - quantumclient.Client, 'delete_security_group_rule') + neutronclient.Client, 'delete_security_group_rule') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') def create_stack(self, template): @@ -83,7 +83,7 @@ class VPCTestBase(HeatTestCase): def mock_create_network(self): self.vpc_name = utils.PhysName('test_stack', 'the_vpc') - quantumclient.Client.create_network( + neutronclient.Client.create_network( { 'network': {'name': self.vpc_name} }).AndReturn({'network': { @@ -95,7 +95,7 @@ class VPCTestBase(HeatTestCase): 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'aaaa' }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'aaaa' ).AndReturn({"network": { "status": "BUILD", @@ -107,7 +107,7 @@ class VPCTestBase(HeatTestCase): "id": "aaaa" }}) - quantumclient.Client.show_network( + neutronclient.Client.show_network( 'aaaa' ).MultipleTimes().AndReturn({"network": { "status": "ACTIVE", @@ -118,7 +118,7 @@ class VPCTestBase(HeatTestCase): "tenant_id": "c1210485b2424d48804aad5d39c61b8f", "id": "aaaa" }}) - quantumclient.Client.create_router( + neutronclient.Client.create_router( {'router': {'name': self.vpc_name}}).AndReturn({ 'router': { 'status': 'BUILD', @@ -127,7 +127,7 @@ class VPCTestBase(HeatTestCase): 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'bbbb' }}) - quantumclient.Client.list_routers(name=self.vpc_name).AndReturn({ + neutronclient.Client.list_routers(name=self.vpc_name).AndReturn({ "routers": [{ "status": "BUILD", "external_gateway_info": None, @@ -142,7 +142,7 @@ class VPCTestBase(HeatTestCase): def mock_create_subnet(self): self.subnet_name = utils.PhysName('test_stack', 'the_subnet') - quantumclient.Client.create_subnet( + neutronclient.Client.create_subnet( {'subnet': { 'network_id': u'aaaa', 'cidr': u'10.0.0.0/24', @@ -155,12 +155,12 @@ class VPCTestBase(HeatTestCase): 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'id': 'cccc'}}) self.mock_router_for_vpc() - quantumclient.Client.add_interface_router( + neutronclient.Client.add_interface_router( u'bbbb', {'subnet_id': 'cccc'}).AndReturn(None) def mock_show_subnet(self): - quantumclient.Client.show_subnet('cccc').AndReturn({ + neutronclient.Client.show_subnet('cccc').AndReturn({ 'subnet': { 'name': self.subnet_name, 'network_id': 'aaaa', @@ -176,7 +176,7 @@ class VPCTestBase(HeatTestCase): def mock_create_security_group(self): self.sg_name = utils.PhysName('test_stack', 'the_sg') - quantumclient.Client.create_security_group({ + neutronclient.Client.create_security_group({ 'security_group': { 'name': self.sg_name, 'description': 'SSH access' @@ -191,7 +191,7 @@ class VPCTestBase(HeatTestCase): } }) - quantumclient.Client.create_security_group_rule({ + neutronclient.Client.create_security_group_rule({ 'security_group_rule': { 'direction': 'ingress', 'remote_ip_prefix': '0.0.0.0/0', @@ -216,7 +216,7 @@ class VPCTestBase(HeatTestCase): def mock_delete_security_group(self): sg_name = utils.PhysName('test_stack', 'the_sg') - quantumclient.Client.show_security_group('eeee').AndReturn({ + neutronclient.Client.show_security_group('eeee').AndReturn({ 'security_group': { 'tenant_id': 'c1210485b2424d48804aad5d39c61b8f', 'name': sg_name, @@ -233,11 +233,11 @@ class VPCTestBase(HeatTestCase): 'port_range_min': 22 }], 'id': 'eeee'}}) - quantumclient.Client.delete_security_group_rule('bbbb').AndReturn(None) - quantumclient.Client.delete_security_group('eeee').AndReturn(None) + neutronclient.Client.delete_security_group_rule('bbbb').AndReturn(None) + neutronclient.Client.delete_security_group('eeee').AndReturn(None) def mock_router_for_vpc(self): - quantumclient.Client.list_routers(name=self.vpc_name).AndReturn({ + neutronclient.Client.list_routers(name=self.vpc_name).AndReturn({ "routers": [{ "status": "ACTIVE", "external_gateway_info": { @@ -253,19 +253,19 @@ class VPCTestBase(HeatTestCase): def mock_delete_network(self): self.mock_router_for_vpc() - quantumclient.Client.delete_router('bbbb').AndReturn(None) - quantumclient.Client.delete_network('aaaa').AndReturn(None) + neutronclient.Client.delete_router('bbbb').AndReturn(None) + neutronclient.Client.delete_network('aaaa').AndReturn(None) def mock_delete_subnet(self): self.mock_router_for_vpc() - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( u'bbbb', {'subnet_id': 'cccc'}).AndReturn(None) - quantumclient.Client.delete_subnet('cccc').AndReturn(None) + neutronclient.Client.delete_subnet('cccc').AndReturn(None) def mock_create_route_table(self): self.rt_name = utils.PhysName('test_stack', 'the_route_table') - quantumclient.Client.create_router({ + neutronclient.Client.create_router({ 'router': {'name': self.rt_name}}).AndReturn({ 'router': { 'status': 'BUILD', @@ -275,7 +275,7 @@ class VPCTestBase(HeatTestCase): 'id': 'ffff' } }) - quantumclient.Client.show_router('ffff').AndReturn({ + neutronclient.Client.show_router('ffff').AndReturn({ 'router': { 'status': 'BUILD', 'name': self.rt_name, @@ -284,7 +284,7 @@ class VPCTestBase(HeatTestCase): 'id': 'ffff' } }) - quantumclient.Client.show_router('ffff').AndReturn({ + neutronclient.Client.show_router('ffff').AndReturn({ 'router': { 'status': 'ACTIVE', 'name': self.rt_name, @@ -294,32 +294,32 @@ class VPCTestBase(HeatTestCase): } }) self.mock_router_for_vpc() - quantumclient.Client.add_gateway_router( + neutronclient.Client.add_gateway_router( 'ffff', {'network_id': 'zzzz'}).AndReturn(None) def mock_create_association(self): self.mock_show_subnet() self.mock_router_for_vpc() - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( 'bbbb', {'subnet_id': u'cccc'}).AndReturn(None) - quantumclient.Client.add_interface_router( + neutronclient.Client.add_interface_router( u'ffff', {'subnet_id': 'cccc'}).AndReturn(None) def mock_delete_association(self): self.mock_show_subnet() self.mock_router_for_vpc() - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( 'ffff', {'subnet_id': u'cccc'}).AndReturn(None) - quantumclient.Client.add_interface_router( + neutronclient.Client.add_interface_router( u'bbbb', {'subnet_id': 'cccc'}).AndReturn(None) def mock_delete_route_table(self): - quantumclient.Client.delete_router('ffff').AndReturn(None) - quantumclient.Client.remove_gateway_router('ffff').AndReturn(None) + neutronclient.Client.delete_router('ffff').AndReturn(None) + neutronclient.Client.remove_gateway_router('ffff').AndReturn(None) def assertResourceState(self, resource, ref_id): self.assertEqual(None, resource.validate()) @@ -378,12 +378,12 @@ Resources: # mock delete subnet which is already deleted self.mock_router_for_vpc() - quantumclient.Client.remove_interface_router( + neutronclient.Client.remove_interface_router( u'bbbb', {'subnet_id': 'cccc'}).AndRaise( - QuantumClientException(status_code=404)) - quantumclient.Client.delete_subnet('cccc').AndRaise( - QuantumClientException(status_code=404)) + NeutronClientException(status_code=404)) + neutronclient.Client.delete_subnet('cccc').AndRaise( + NeutronClientException(status_code=404)) self.m.ReplayAll() stack = self.create_stack(self.test_template) @@ -523,7 +523,7 @@ Resources: if security_groups: port['security_groups'] = security_groups - quantumclient.Client.create_port({'port': port}).AndReturn({ + neutronclient.Client.create_port({'port': port}).AndReturn({ 'port': { 'admin_state_up': True, 'device_id': '', @@ -544,7 +544,7 @@ Resources: }) def mock_delete_network_interface(self): - quantumclient.Client.delete_port('dddd').AndReturn(None) + neutronclient.Client.delete_port('dddd').AndReturn(None) def test_network_interface(self): self.mock_keystone() @@ -659,7 +659,7 @@ Resources: ''' def mock_create_internet_gateway(self): - quantumclient.Client.list_networks( + neutronclient.Client.list_networks( **{'router:external': True}).AndReturn({'networks': [{ 'status': 'ACTIVE', 'subnets': [], @@ -672,11 +672,11 @@ Resources: }]}) def mock_create_gateway_attachment(self): - quantumclient.Client.add_gateway_router( + neutronclient.Client.add_gateway_router( 'ffff', {'network_id': 'eeee'}).AndReturn(None) def mock_delete_gateway_attachment(self): - quantumclient.Client.remove_gateway_router('ffff').AndReturn(None) + neutronclient.Client.remove_gateway_router('ffff').AndReturn(None) def test_internet_gateway(self): self.mock_keystone() diff --git a/requirements.txt b/requirements.txt index 2495a6e01c..85d352d62c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ SQLAlchemy>=0.7.8,<0.7.99 WebOb==1.2.3 python-keystoneclient>=0.2.1 python-swiftclient>=1.2 -python-quantumclient>=2.2.0 +python-neutronclient>=2.2.3,<3 python-ceilometerclient>=1.0.1 python-cinderclient>=1.0.4 PyYAML>=3.1.0