diff -Nru quantum-2012.1~e2/.bzrignore quantum-2012.1~e2+git20120112/.bzrignore --- quantum-2012.1~e2/.bzrignore 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/.bzrignore 2012-01-12 00:39:39.000000000 +0000 @@ -3,6 +3,7 @@ quantum_tests.sqlite quantum.sqlite *.quantum-venv +.venv dist/ ChangeLog *.pid diff -Nru quantum-2012.1~e2/debian/changelog quantum-2012.1~e2+git20120112/debian/changelog --- quantum-2012.1~e2/debian/changelog 2011-12-19 15:29:24.000000000 +0000 +++ quantum-2012.1~e2+git20120112/debian/changelog 2012-01-12 09:18:34.000000000 +0000 @@ -1,3 +1,15 @@ +quantum (2012.1~e2+git20120112-0ubuntu1) precise; urgency=low + + * New upstream release. + * debian/rules: + - Fix git snapshot creation. + - Fix running test suite during the build. + * debian/control: Add adduser for quantum-server. + * debian/quantum-plugin-{cisco,openvswitch}.install: Install + everything needed for the plugins. + + -- Chuck Short Thu, 12 Jan 2012 04:18:32 -0500 + quantum (2012.1~e2-0ubuntu2) precise; urgency=low * debian/control: Build for architecture all. diff -Nru quantum-2012.1~e2/debian/control quantum-2012.1~e2+git20120112/debian/control --- quantum-2012.1~e2/debian/control 2011-12-19 15:29:24.000000000 +0000 +++ quantum-2012.1~e2+git20120112/debian/control 2012-01-12 08:50:29.000000000 +0000 @@ -40,7 +40,7 @@ Package: quantum-server Architecture: all -Depends: ${misc:Depends}, ${python:Depends}, ${shlibs:Depens} +Depends: ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, adduser Description: server - Quantum is a vrirtual network service for Openstack Quantum is a virtual network service for Openstack, and a part of Netstack. Just like OpenStack Nova provides an API to dynamically diff -Nru quantum-2012.1~e2/debian/quantum-plugin-cisco.install quantum-2012.1~e2+git20120112/debian/quantum-plugin-cisco.install --- quantum-2012.1~e2/debian/quantum-plugin-cisco.install 2011-12-19 15:29:24.000000000 +0000 +++ quantum-2012.1~e2+git20120112/debian/quantum-plugin-cisco.install 2012-01-12 09:01:59.000000000 +0000 @@ -1 +1 @@ -etc/quantum/plugins/cisco/*.ini etc/quantum/plugins/cisco +etc/quantum/plugins/cisco/* etc/quantum/plugins/cisco diff -Nru quantum-2012.1~e2/debian/quantum-plugin-openvswitch.install quantum-2012.1~e2+git20120112/debian/quantum-plugin-openvswitch.install --- quantum-2012.1~e2/debian/quantum-plugin-openvswitch.install 1970-01-01 00:00:00.000000000 +0000 +++ quantum-2012.1~e2+git20120112/debian/quantum-plugin-openvswitch.install 2012-01-12 09:02:29.000000000 +0000 @@ -0,0 +1 @@ +etc/quantum/plugins/openvswitch/* etc/quantum/plugins/openvswitch diff -Nru quantum-2012.1~e2/debian/rules quantum-2012.1~e2+git20120112/debian/rules --- quantum-2012.1~e2/debian/rules 2011-12-19 15:29:24.000000000 +0000 +++ quantum-2012.1~e2+git20120112/debian/rules 2012-01-12 09:11:33.000000000 +0000 @@ -21,13 +21,12 @@ ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) override_dh_auto_test: - python run_test.py || true + ./run_test.sh -N || true endif get-orig-source: uscan --verbose --force-download --rename --destdir=../build-area - UPSTREAM_GIT=git://github.com/openstack/quantum.git DEBIAN_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^-]+).*,\1,p') DEBIAN_NAME=quantum @@ -36,5 +35,5 @@ git clone $(UPSTREAM_GIT) $(DEBIAN_NAME) cd $(DEBIAN_NAME) ; \ git archive master --format=tar.gz \ - --output=$(DEBIAN_NAME)_$(DEBIAN_VERSION).orig.tar.gz \ + --output=../$(DEBIAN_NAME)_$(DEBIAN_VERSION).orig.tar.gz \ --prefix=$(DEBIAN_NAME)-$(DEBIAN_VERSION)/ diff -Nru quantum-2012.1~e2/.gitignore quantum-2012.1~e2+git20120112/.gitignore --- quantum-2012.1~e2/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ quantum-2012.1~e2+git20120112/.gitignore 2012-01-12 00:39:39.000000000 +0000 @@ -0,0 +1,9 @@ +*.pyc +*.DS_Store +build/* +build-stamp +run_tests.err.log +run_tests.log +tests/ +.quantum-venv/ +.venv/ diff -Nru quantum-2012.1~e2/.gitreview quantum-2012.1~e2+git20120112/.gitreview --- quantum-2012.1~e2/.gitreview 1970-01-01 00:00:00.000000000 +0000 +++ quantum-2012.1~e2+git20120112/.gitreview 2012-01-12 00:39:39.000000000 +0000 @@ -0,0 +1,4 @@ +[gerrit] +host=review.openstack.org +port=29418 +project=openstack/quantum.git diff -Nru quantum-2012.1~e2/MANIFEST.in quantum-2012.1~e2+git20120112/MANIFEST.in --- quantum-2012.1~e2/MANIFEST.in 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/MANIFEST.in 2012-01-12 00:39:39.000000000 +0000 @@ -1,3 +1,4 @@ +include bin/* include etc/* include etc/init.d/* include etc/quantum/plugins/openvswitch/* diff -Nru quantum-2012.1~e2/quantum/api/api_common.py quantum-2012.1~e2+git20120112/quantum/api/api_common.py --- quantum-2012.1~e2/quantum/api/api_common.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/api/api_common.py 2012-01-12 00:39:39.000000000 +0000 @@ -90,7 +90,7 @@ try: return func(*args, **kwargs) except Exception as e: - if errors != None and type(e) in errors: + if errors is not None and type(e) in errors: raise faults.QuantumHTTPError(e) # otherwise just re-raise raise diff -Nru quantum-2012.1~e2/quantum/client/__init__.py quantum-2012.1~e2+git20120112/quantum/client/__init__.py --- quantum-2012.1~e2/quantum/client/__init__.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/client/__init__.py 2012-01-12 00:39:39.000000000 +0000 @@ -160,7 +160,7 @@ action = self.action_prefix + action action = action.replace('{tenant_id}', self.tenant) - if type(params) is dict: + if isinstance(params, dict): action += '?' + urllib.urlencode(params) if body: body = self.serialize(body) @@ -174,7 +174,7 @@ headers[AUTH_TOKEN_HEADER] = self.auth_token # Open connection and send request, handling SSL certs certs = {'key_file': self.key_file, 'cert_file': self.cert_file} - certs = dict((x, certs[x]) for x in certs if certs[x] != None) + certs = dict((x, certs[x]) for x in certs if certs[x] is not None) if self.use_ssl and len(certs): conn = connection_type(self.host, self.port, **certs) @@ -226,7 +226,7 @@ """ if data is None: return None - elif type(data) is dict: + elif isinstance(data, dict): return Serializer().serialize(data, self.content_type()) else: raise Exception("unable to serialize object of type = '%s'" \ diff -Nru quantum-2012.1~e2/quantum/common/config.py quantum-2012.1~e2+git20120112/quantum/common/config.py --- quantum-2012.1~e2/quantum/common/config.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/common/config.py 2012-01-12 00:39:39.000000000 +0000 @@ -208,7 +208,7 @@ root = os.path.join(dir_to_common, '..', '..', '..', '..') # Handle standard directory search for the config file config_file_dirs = [fix_path(os.path.join(os.getcwd(), 'etc')), - fix_path(os.path.join('~', '.quantum-venv', 'etc', + fix_path(os.path.join('~', '.venv', 'etc', 'quantum')), fix_path('~'), os.path.join(FLAGS.state_path, 'etc'), diff -Nru quantum-2012.1~e2/quantum/common/flags.py quantum-2012.1~e2+git20120112/quantum/common/flags.py --- quantum-2012.1~e2/quantum/common/flags.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/common/flags.py 2012-01-12 00:39:39.000000000 +0000 @@ -135,7 +135,7 @@ if self.IsDirty(name): self.ParseNewFlags() val = gflags.FlagValues.__getattr__(self, name) - if type(val) is str: + if isinstance(val, str): tmpl = string.Template(val) context = [self, self.__dict__['__extra_context']] return tmpl.substitute(StrWrapper(context)) diff -Nru quantum-2012.1~e2/quantum/common/serializer.py quantum-2012.1~e2+git20120112/quantum/common/serializer.py --- quantum-2012.1~e2/quantum/common/serializer.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/common/serializer.py 2012-01-12 00:39:39.000000000 +0000 @@ -110,7 +110,7 @@ xmlns = metadata.get('xmlns', None) if xmlns: result.setAttribute('xmlns', xmlns) - if type(data) is list: + if isinstance(data, list): collections = metadata.get('list_collections', {}) if nodename in collections: metadata = collections[nodename] @@ -128,7 +128,7 @@ for item in data: node = self._to_xml_node(doc, metadata, singular, item) result.appendChild(node) - elif type(data) is dict: + elif isinstance(data, dict): collections = metadata.get('dict_collections', {}) if nodename in collections: metadata = collections[nodename] diff -Nru quantum-2012.1~e2/quantum/common/utils.py quantum-2012.1~e2+git20120112/quantum/common/utils.py --- quantum-2012.1~e2/quantum/common/utils.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/common/utils.py 2012-01-12 00:39:39.000000000 +0000 @@ -37,7 +37,6 @@ import string import struct import time -import types from quantum.common import flags from quantum.common import exceptions as exception @@ -66,12 +65,12 @@ def to_primitive(value): - if type(value) is type([]) or type(value) is type((None,)): + if isinstance(value, (list, tuple)): o = [] for v in value: o.append(to_primitive(v)) return o - elif type(value) is type({}): + elif isinstance(value, dict): o = {} for k, v in value.iteritems(): o[k] = to_primitive(v) @@ -124,7 +123,7 @@ Useful for JSON-decoded stuff and config file parsing """ - if type(subject) == type(bool): + if isinstance(subject, bool): return subject if hasattr(subject, 'startswith'): # str or unicode... if subject.strip().lower() in ('true', 'on', '1'): @@ -152,7 +151,7 @@ obj = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) result = None - if process_input != None: + if process_input is not None: result = obj.communicate(process_input) else: result = obj.communicate() @@ -252,7 +251,7 @@ raise exception.Error('Invalid backend: %s' % backend_name) backend = self.__backends[backend_name] - if type(backend) == type(tuple()): + if isinstance(backend, tuple): name = backend[0] fromlist = backend[1] else: diff -Nru quantum-2012.1~e2/quantum/extensions/_pprofiles.py quantum-2012.1~e2+git20120112/quantum/extensions/_pprofiles.py --- quantum-2012.1~e2/quantum/extensions/_pprofiles.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/extensions/_pprofiles.py 2012-01-12 00:39:39.000000000 +0000 @@ -51,7 +51,7 @@ def _build_detail(self, portprofile_data): """Return a detailed info of a portprofile.""" - if (portprofile_data['assignment'] == None): + if (portprofile_data['assignment'] is None): return dict(portprofile=dict(id=portprofile_data['profile_id'], name=portprofile_data['profile_name'], qos_name=portprofile_data['qos_name'])) diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/l2network_plugin.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/l2network_plugin.py --- quantum-2012.1~e2/quantum/plugins/cisco/l2network_plugin.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/l2network_plugin.py 2012-01-12 00:39:39.000000000 +0000 @@ -253,7 +253,7 @@ network = db.network_get(net_id) port = db.port_get(net_id, port_id) attachment_id = port[const.INTERFACEID] - if attachment_id == None: + if attachment_id is None: raise cexc.InvalidAttach(port_id=port_id, net_id=net_id, att_id=remote_interface_id) attachment_id = attachment_id[:const.UUID_LENGTH] @@ -281,7 +281,7 @@ network = db.network_get(net_id) port = db.port_get(net_id, port_id) attachment_id = port[const.INTERFACEID] - if attachment_id == None: + if attachment_id is None: raise exc.InvalidDetach(port_id=port_id, net_id=net_id, att_id=remote_interface_id) self._invoke_device_plugins(self._func_name(), [tenant_id, net_id, diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/models/l2network_single_blade.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/models/l2network_single_blade.py --- quantum-2012.1~e2/quantum/plugins/cisco/models/l2network_single_blade.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/models/l2network_single_blade.py 2012-01-12 00:39:39.000000000 +0000 @@ -91,7 +91,7 @@ def _invoke_plugin(self, plugin_key, function_name, args, kwargs): """Invoke only the device plugin""" # If the last param is a dict, add it to kwargs - if args and type(args[-1]) is dict: + if args and isinstance(args[-1], dict): kwargs.update(args.pop()) return getattr(self._plugins[plugin_key], function_name)(*args, diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/pip-requires quantum-2012.1~e2+git20120112/quantum/plugins/cisco/pip-requires --- quantum-2012.1~e2/quantum/plugins/cisco/pip-requires 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/pip-requires 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ --e git+https://github.com/CiscoSystems/ncclient.git#egg=ncclient diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/README quantum-2012.1~e2+git20120112/quantum/plugins/cisco/README --- quantum-2012.1~e2/quantum/plugins/cisco/README 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/README 2012-01-12 00:39:39.000000000 +0000 @@ -52,10 +52,10 @@ * paramiko library - SSHv2 protocol library for python ** To install on RHEL 6.1, run: yum install python-paramiko * ncclient v0.3.1 - Python library for NETCONF clients - ** RedHat does not provide a package for ncclient in RHEL 6.1. Here is how - to get it, from your shell prompt do: + ** You need a version of ncclient modifed by Cisco Systems. + To get it, from your shell prompt do: - git clone git@github.com:ddutta/ncclient.git + git clone git@github.com:CiscoSystems/ncclient.git sudo python ./setup.py install ** For more information of ncclient, see: diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/services/services_logistics.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/services/services_logistics.py --- quantum-2012.1~e2/quantum/plugins/cisco/services/services_logistics.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/services/services_logistics.py 2012-01-12 00:39:39.000000000 +0000 @@ -50,7 +50,7 @@ service_args.append(image_name) counter = 0 flag = False - while flag == False and counter <= 5: + while not flag and counter <= 5: counter = counter + 1 time.sleep(2.5) process = subprocess.Popen(service_args, \ @@ -71,7 +71,7 @@ service_args.append(image_name) counter = 0 flag = False - while flag == False and counter <= 10: + while not flag and counter <= 10: counter = counter + 1 time.sleep(2.5) process = subprocess.Popen(service_args, \ diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/tests/unit/test_database.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/tests/unit/test_database.py --- quantum-2012.1~e2/quantum/plugins/cisco/tests/unit/test_database.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/tests/unit/test_database.py 2012-01-12 00:39:39.000000000 +0000 @@ -1063,9 +1063,9 @@ self.assertTrue(len(vlanids) > 0) vlanid = l2network_db.reserve_vlanid() used = l2network_db.is_vlanid_used(vlanid) - self.assertTrue(used == True) + self.assertTrue(used) used = l2network_db.release_vlanid(vlanid) - self.assertTrue(used == False) + self.assertFalse(used) #counting on default teardown here to clear db def teardown_network(self): @@ -1208,7 +1208,7 @@ self.assertTrue(port[0]["int-id"] == "vif1.1") self.dbtest.unplug_interface(net1["net-id"], port1["port-id"]) port = self.dbtest.get_port(net1["net-id"], port1["port-id"]) - self.assertTrue(port[0]["int-id"] == None) + self.assertTrue(port[0]["int-id"] is None) self.teardown_network_port() def testh_joined_test(self): diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py --- quantum-2012.1~e2/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py 2012-01-12 00:39:39.000000000 +0000 @@ -223,7 +223,7 @@ self.assertEqual(port_dict[const.PORTID], new_port[const.UUID]) profile_name = self._cisco_ucs_plugin.\ _get_profile_name(port_dict[const.PORTID]) - self.assertTrue(profile_name != None) + self.assertTrue(profile_name is not None) self.tear_down_network_port( self.tenant_id, new_net_dict[const.NET_ID], port_dict[const.PORTID]) diff -Nru quantum-2012.1~e2/quantum/plugins/cisco/ucs/cisco_ucs_inventory.py quantum-2012.1~e2+git20120112/quantum/plugins/cisco/ucs/cisco_ucs_inventory.py --- quantum-2012.1~e2/quantum/plugins/cisco/ucs/cisco_ucs_inventory.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/cisco/ucs/cisco_ucs_inventory.py 2012-01-12 00:39:39.000000000 +0000 @@ -277,10 +277,10 @@ for blade_intf in blade_intf_data.keys(): tmp = deepcopy(blade_intf_data[blade_intf]) intf_data = blade_intf_data[blade_intf] - if intf_data[const.BLADE_INTF_RESERVATION] == \ - const.BLADE_INTF_RESERVED and \ - intf_data[const.TENANTID] == tenant_id and \ - intf_data[const.INSTANCE_ID] == None: + if (intf_data[const.BLADE_INTF_RESERVATION] == + const.BLADE_INTF_RESERVED and + intf_data[const.TENANTID] == tenant_id and + intf_data[const.INSTANCE_ID] is None): intf_data[const.INSTANCE_ID] = instance_id host_name = self._get_host_name(ucsm_ip, chassis_id, diff -Nru quantum-2012.1~e2/quantum/plugins/openvswitch/ovs_quantum_plugin.py quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/ovs_quantum_plugin.py --- quantum-2012.1~e2/quantum/plugins/openvswitch/ovs_quantum_plugin.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/ovs_quantum_plugin.py 2012-01-12 00:39:39.000000000 +0000 @@ -51,7 +51,7 @@ def acquire(self, network_id): for x in xrange(2, 4094): - if self.vlans[x] == None: + if self.vlans[x] is None: self.vlans[x] = network_id # LOG.debug("VlanMap::acquire %s -> %s" % (x, network_id)) return x @@ -73,13 +73,13 @@ def __init__(self, configfile=None): config = ConfigParser.ConfigParser() - if configfile == None: + if configfile is None: if os.path.exists(CONF_FILE): configfile = CONF_FILE else: configfile = find_config(os.path.abspath( os.path.dirname(__file__))) - if configfile == None: + if configfile is None: raise Exception("Configuration file \"%s\" doesn't exist" % (configfile)) LOG.debug("Using configuration file: %s" % configfile) diff -Nru quantum-2012.1~e2/quantum/plugins/openvswitch/pip-requires quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/pip-requires --- quantum-2012.1~e2/quantum/plugins/openvswitch/pip-requires 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/pip-requires 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -SQLAlchemy \ No newline at end of file diff -Nru quantum-2012.1~e2/quantum/plugins/openvswitch/tests/unit/test_vlan_map.py quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/tests/unit/test_vlan_map.py --- quantum-2012.1~e2/quantum/plugins/openvswitch/tests/unit/test_vlan_map.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/plugins/openvswitch/tests/unit/test_vlan_map.py 2012-01-12 00:39:39.000000000 +0000 @@ -33,4 +33,4 @@ def testReleaseVlan(self): vlan_id = self.vmap.acquire("foobar") self.vmap.release("foobar") - self.assertTrue(self.vmap.get(vlan_id) == None) + self.assertTrue(self.vmap.get(vlan_id) is None) diff -Nru quantum-2012.1~e2/quantum/README quantum-2012.1~e2+git20120112/quantum/README --- quantum-2012.1~e2/quantum/README 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/README 2012-01-12 00:39:39.000000000 +0000 @@ -70,7 +70,7 @@ # Install into $HOME/.local/... c) python setup.py install --venv - # Creates and installs into a virtual-env at ~/.quantum-venv + # Creates and installs into a virtual-env at ~/.venv # -- Configuring Quantum plug-in diff -Nru quantum-2012.1~e2/quantum/tests/unit/test_database.py quantum-2012.1~e2+git20120112/quantum/tests/unit/test_database.py --- quantum-2012.1~e2/quantum/tests/unit/test_database.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/tests/unit/test_database.py 2012-01-12 00:39:39.000000000 +0000 @@ -115,4 +115,4 @@ self.assertTrue(port[0]["attachment"] == "vif1.1") self.dbtest.unplug_interface(net1["id"], port1["id"]) port = self.dbtest.get_port(net1["id"], port1["id"]) - self.assertTrue(port[0]["attachment"] == None) + self.assertTrue(port[0]["attachment"] is None) diff -Nru quantum-2012.1~e2/quantum/wsgi.py quantum-2012.1~e2+git20120112/quantum/wsgi.py --- quantum-2012.1~e2/quantum/wsgi.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/quantum/wsgi.py 2012-01-12 00:39:39.000000000 +0000 @@ -228,7 +228,7 @@ result.setAttribute('xmlns', xmlns) #TODO(bcwaldon): accomplish this without a type-check - if type(data) is list: + if isinstance(data, list): collections = metadata.get('list_collections', {}) if nodename in collections: metadata = collections[nodename] @@ -247,7 +247,7 @@ node = self._to_xml_node(doc, metadata, singular, item) result.appendChild(node) #TODO(bcwaldon): accomplish this without a type-check - elif type(data) is dict: + elif isinstance(data, dict): collections = metadata.get('dict_collections', {}) if nodename in collections: metadata = collections[nodename] @@ -744,7 +744,7 @@ LOG.info(_("HTTP exception thrown: %s"), unicode(ex)) action_result = Fault(ex, self._xmlns) - if type(action_result) is dict or action_result is None: + if isinstance(action_result, dict) or action_result is None: response = self.serializer.serialize(action_result, accept, action=action) @@ -839,7 +839,7 @@ arg_dict['request'] = req result = method(**arg_dict) - if type(result) is dict: + if isinstance(result, dict): content_type = req.best_match_content_type() default_xmlns = self.get_default_xmlns(req) body = self._serialize(result, content_type, default_xmlns) @@ -993,7 +993,7 @@ xmlns = metadata.get('xmlns', None) if xmlns: result.setAttribute('xmlns', xmlns) - if type(data) is list: + if isinstance(data, list): collections = metadata.get('list_collections', {}) if nodename in collections: metadata = collections[nodename] @@ -1011,7 +1011,7 @@ for item in data: node = self._to_xml_node(doc, metadata, singular, item) result.appendChild(node) - elif type(data) is dict: + elif isinstance(data, dict): collections = metadata.get('dict_collections', {}) if nodename in collections: metadata = collections[nodename] diff -Nru quantum-2012.1~e2/run_tests.sh quantum-2012.1~e2+git20120112/run_tests.sh --- quantum-2012.1~e2/run_tests.sh 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/run_tests.sh 2012-01-12 00:39:39.000000000 +0000 @@ -34,7 +34,7 @@ esac } -venv=.quantum-venv +venv=.venv with_venv=tools/with_venv.sh always_venv=0 never_venv=0 diff -Nru quantum-2012.1~e2/setup_common.py quantum-2012.1~e2+git20120112/setup_common.py --- quantum-2012.1~e2/setup_common.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/setup_common.py 2012-01-12 00:39:39.000000000 +0000 @@ -44,7 +44,7 @@ exclude = ['quantum.client', 'quantum.client.*', 'quantum.server', 'quantum.server.*', 'quantum.tests', 'quantum.tests.*', - 'quantum.plugins.*', 'quantum.plugins'] + 'quantum.plugins.*'] pkgs = find_packages('.', exclude=exclude) pkgs = filter(lambda x: x.startswith("quantum"), pkgs) diff -Nru quantum-2012.1~e2/setup.py quantum-2012.1~e2+git20120112/setup.py --- quantum-2012.1~e2/setup.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/setup.py 2012-01-12 00:39:39.000000000 +0000 @@ -1,169 +1,85 @@ -from copy import deepcopy -from optparse import OptionParser -from os import path -import re -import sys - -from tools import install_venv +try: + from setuptools import setup, find_packages +except ImportError: + from ez_setup import use_setuptools + use_setuptools() + from setuptools import setup, find_packages -ROOT = path.abspath(path.dirname(__file__)) -CONFIG_PATH = path.abspath('/etc/quantum') -BASE_PACKAGES = ['common', 'server', 'client'] -PLUGINS = ['sample_plugin', 'openvswitch_plugin', 'cisco_plugin'] - -RELATIVE = False - - -def clean_path(dirty): - """Makes sure path delimiters are OS compliant""" - return path.join(*dirty.split('/')) - - -def script_dir(): - global RELATIVE - script_dir = '/usr/sbin/' - if RELATIVE: - script_dir = 'usr/sbin/' - return script_dir - - -def etc_dir(): - global RELATIVE - etc_dir = '/etc/' - if RELATIVE: - etc_dir = 'etc/' - return etc_dir - - -def create_parser(): - """Setup the option parser""" - usagestr = "Usage: %prog [OPTIONS] [args]" - parser = OptionParser(usage=usagestr) - parser.add_option("-V", "--virtualenv", "--venv", dest="venv", - action="store_true", default=False, help="Install to a virtual-env") - parser.add_option("-U", "--user", dest="user", action="store_true", - default=False, help="Install to users's home") - options, args = parser.parse_args() - - if args.__len__() is 0: - print usagestr - print "Commands:\ninstall\nuninstall\nbuild\nclean" - exit(0) - - cmd = args[0] - args = args[1:] - return (options, cmd, args) - - -def install_packages(options, args=None): - """Builds and installs packages""" - # Start building a command list - cmd = ['python'] - - # If no options, just a regular install. If venv, create, prepare and - # install in venv. If --user install in user's local dir. Usually - # ~/.local/ - if options.venv: - if install_venv.VENV_EXISTS: - print "Virtual-env exists" - else: - install_venv.create_virtualenv(install_pip=False) - install_venv.install_dependencies() - cmd.insert(0, "tools/with_venv.sh") - - # Install packages - # TODO(Tyler) allow users to pass in packages in cli - for package in BASE_PACKAGES + PLUGINS: - print "Installing %s" % package - # Each package needs its own command list, and it needs the path - # in the correct place (after "pip install") - pcmd = deepcopy(cmd) - pcmd.extend(["setup_%s.py" % package, "install"]) - - if options.venv: - pcmd.append("--root=%s" % install_venv.VENV) - - if options.user: - pcmd.append('--user') - - if package is 'client': - pcmd.append("--install-scripts=%s" % script_dir()) - - if package is 'server': - pcmd.append("--install-scripts=%s" % script_dir()) - pcmd.append("--install-data=%s" % etc_dir()) - print pcmd - install_venv.run_command(pcmd) - print "done." - - -def uninstall_packages(options, args=None): - """Removes packages""" - cmd = ['pip', 'uninstall', '-y'] - - for package in ['quantum-' + x.split('/')[-1] \ - for x in BASE_PACKAGES + PLUGINS]: - print "Uninstalling %s" % package - # Each package needs its own command list, and it needs the path - # in the correct place (after "pip uninstall" - pcmd = deepcopy(cmd) - pcmd.insert(2, package) - print pcmd - install_venv.run_command(pcmd) - print "done." - - -def build_packages(options, args=None): - """Build RPM and/or deb packages""" - if not args: - print "To build packages you must specifiy either 'rpm', " \ - "'deb', or 'all'" - exit(0) - if args[0] not in ['rpm', 'deb', 'all']: - raise Exception("Packge type must be rpm, deb, or all") - - if 'rpm' in args or 'all' in args: - # Since we need to cd to build rpms, we call this sh script - cmd = ['tools/build_rpms.sh'] - for package in BASE_PACKAGES + PLUGINS: - print "Building %s rpm" % package - pcmd = deepcopy(cmd) - pcmd.append(package) - install_venv.run_command(pcmd) - print "done." - - if 'deb' in args or 'all' in args: - cmd = ['tools/build_debs.sh'] - for p in BASE_PACKAGES + PLUGINS: - print "Building %s deb" % p - pcmd = deepcopy(cmd) - pcmd.append(p) - install_venv.run_command(pcmd) - print "done." - - -def clean_packages(options, args): - """Cleans build packages""" - cmd = ["tools/clean.sh"] - install_venv.run_command(cmd) - - -def main(): - """Main Build script for Quantum""" - global RELATIVE - options, cmd, args = create_parser() - - if options.user: - RELATIVE = True - - print "Checking for virtual-env and easy_install" - install_venv.check_dependencies() - - # Execute command - try: - globals()["%s_packages" % cmd](options, args) - except KeyError as exc: - print "Command %s' not found" % exc.__str__().split('_')[0] +import sys +import version -if __name__ == "__main__": - main() +Name = 'quantum' +Url = "https://launchpad.net/quantum" +Version = version.get_git_version() +License = 'Apache License 2.0' +Author = 'Netstack' +AuthorEmail = 'netstack@lists.launchpad.net' +Maintainer = '' +Summary = 'Quantum (virtual network service)' +ShortDescription = Summary +Description = Summary + +requires = [ + 'eventlet>=0.9.12', + 'Routes>=1.12.3', + 'nose', + 'Paste', + 'PasteDeploy', + 'pep8>=0.6.1', + 'python-gflags', + 'simplejson', + 'sqlalchemy', + 'webob', + 'webtest' +] + +EagerResources = [ + 'quantum', +] + +ProjectScripts = [ +] + +config_path = 'etc/quantum/' +init_path = 'etc/init.d' +ovs_plugin_config_path = 'etc/quantum/plugins/openvswitch' +cisco_plugin_config_path = 'etc/quantum/plugins/cisco' + +print "config_path: %s" % config_path +DataFiles = [ + (config_path, + ['etc/quantum.conf', 'etc/quantum.conf.test', 'etc/plugins.ini']), + (init_path, ['etc/init.d/quantum-server']), + (ovs_plugin_config_path, + ['etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini']), + (cisco_plugin_config_path, + ['etc/quantum/plugins/cisco/credentials.ini', + 'etc/quantum/plugins/cisco/l2network_plugin.ini', + 'etc/quantum/plugins/cisco/nexus.ini', + 'etc/quantum/plugins/cisco/ucs.ini', + 'etc/quantum/plugins/cisco/cisco_plugins.ini', + 'etc/quantum/plugins/cisco/db_conn.ini']), +] + +setup( + name=Name, + version=Version, + url=Url, + author=Author, + author_email=AuthorEmail, + description=ShortDescription, + long_description=Description, + license=License, + scripts=ProjectScripts, + install_requires=requires, + include_package_data=False, + packages=find_packages('.'), + data_files=DataFiles, + eager_resources=EagerResources, + entry_points={ + 'console_scripts': [ + 'quantum-server = quantum.server:main', + 'quantum = quantum.client.cli:main', + ] + }, +) diff -Nru quantum-2012.1~e2/tools/build_rpms.sh quantum-2012.1~e2+git20120112/tools/build_rpms.sh --- quantum-2012.1~e2/tools/build_rpms.sh 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/tools/build_rpms.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#!/bin/bash -python setup_$@.py bdist_rpm diff -Nru quantum-2012.1~e2/tools/install_venv.py quantum-2012.1~e2+git20120112/tools/install_venv.py --- quantum-2012.1~e2/tools/install_venv.py 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/tools/install_venv.py 2012-01-12 00:39:39.000000000 +0000 @@ -29,21 +29,12 @@ ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) -VENV = os.path.join(ROOT, '.quantum-venv') +VENV = os.path.join(ROOT, '.venv') +PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires') PY_VERSION = "python%s.%s" % (sys.version_info[0], sys.version_info[1]) VENV_EXISTS = bool(os.path.exists(VENV)) - -# Find all pip-requires in the project -PIP_REQUIRES = [] -for root, dirs, files in os.walk(os.path.join(ROOT)): - for f in files: - if f == 'pip-requires': - if os.path.isfile(os.path.join(root, f)): - PIP_REQUIRES.append(os.path.join(root, f)) - - def die(message, *args): print >> sys.stderr, message % args sys.exit(1) @@ -99,15 +90,8 @@ def install_dependencies(venv=VENV): print 'Installing dependencies with pip (this can take a while)...' - - # Install greenlet by hand - just listing it in the requires file does not - # get it in stalled in the right order - # Create an install command with all found PIP_REQUIRES - cmd = ['tools/with_venv.sh', 'pip', 'install', '-E', venv] - for p in PIP_REQUIRES: - cmd.extend(['-r', p]) - - run_command(cmd, redirect_output=False) + run_command(['tools/with_venv.sh', 'pip', 'install', '-E', venv, '-r', + PIP_REQUIRES], redirect_output=False) # Tell the virtual env how to "import quantum" pthfile = os.path.join(venv, "lib", PY_VERSION, "site-packages", @@ -126,7 +110,7 @@ To activate the Quantum virtualenv for the extent of your current shell session you can run: - $ source .quantum-venv/bin/activate + $ source .venv/bin/activate Or, if you prefer, you can run commands in the virtualenv on a case by case basis by running: diff -Nru quantum-2012.1~e2/tools/pip-requires quantum-2012.1~e2+git20120112/tools/pip-requires --- quantum-2012.1~e2/tools/pip-requires 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/tools/pip-requires 2012-01-12 00:39:39.000000000 +0000 @@ -2,6 +2,7 @@ distribute>=0.6.24 eventlet>=0.9.12 Routes>=1.12.3 +lxml==2.3 nose nosexcover Paste diff -Nru quantum-2012.1~e2/tools/with_venv.sh quantum-2012.1~e2+git20120112/tools/with_venv.sh --- quantum-2012.1~e2/tools/with_venv.sh 2011-12-16 02:32:29.000000000 +0000 +++ quantum-2012.1~e2+git20120112/tools/with_venv.sh 2012-01-12 00:39:39.000000000 +0000 @@ -17,5 +17,5 @@ # under the License. TOOLS=`dirname $0` -VENV=$TOOLS/../.quantum-venv +VENV=$TOOLS/../.venv source $VENV/bin/activate && $@