Hello community, here is the log from the commit of package openstack-quantum for openSUSE:Factory checked in at 2013-04-02 12:33:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openstack-quantum (Old) and /work/SRC/openSUSE:Factory/.openstack-quantum.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "openstack-quantum", Maintainer is "radmanic@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/openstack-quantum/openstack-quantum.changes 2013-03-08 09:29:22.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.openstack-quantum.new/openstack-quantum.changes 2013-04-02 12:33:43.000000000 +0200 @@ -1,0 +2,13 @@ +Sun Mar 24 00:03:55 UTC 2013 - cloud-devel@suse.de + +- Update to version 2012.2.4+git.1364083435.a109f7e: + + Sets default MySql engine to InnoDB + + Ensure that l3 agent creates client session if necessary + +-------------------------------------------------------------------- +Mon Mar 11 12:57:52 UTC 2013 - cloud-devel@suse.de + +- Update to version 2012.2.4+git.1363006672.5a2ef81: + + Lock tables for update on allocation/deletion + +-------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openstack-quantum.spec ++++++ --- /var/tmp/diff_new_pack.jq6BJe/_old 2013-04-02 12:33:44.000000000 +0200 +++ /var/tmp/diff_new_pack.jq6BJe/_new 2013-04-02 12:33:44.000000000 +0200 @@ -21,7 +21,7 @@ %define username openstack-%{component} Name: openstack-%{component} -Version: 2012.2.4+git.1362583635.f94b149 +Version: 2012.2.4+git.1364083435.a109f7e Release: 1 License: Apache-2.0 Summary: OpenStack Virtual Network Service (Quantum) ++++++ quantum-stable-folsom.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/AUTHORS new/quantum-2012.2.4/AUTHORS --- old/quantum-2012.2.4/AUTHORS 2013-03-05 19:01:39.000000000 +0100 +++ new/quantum-2012.2.4/AUTHORS 2013-03-19 20:45:12.000000000 +0100 @@ -2,6 +2,7 @@ Aaron Rosen <arosen@nicira.com> Adam Gandelman <adamg@canonical.com> Akihiro MOTOKI <motoki@da.jp.nec.com> +Ante Karamatic <ante.karamatic@canonical.com> Armando Migliaccio <amigliaccio@internap.com> Arvind Somy <asomya@cisco.com> Bhuvan Arumugam <bhuvan@apache.org> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/ChangeLog new/quantum-2012.2.4/ChangeLog --- old/quantum-2012.2.4/ChangeLog 2013-03-05 19:01:39.000000000 +0100 +++ new/quantum-2012.2.4/ChangeLog 2013-03-19 20:45:12.000000000 +0100 @@ -1,3 +1,51 @@ +commit a109f7e47c2a52d2906471305230bc97396f003b +Author: Gary Kotton <gkotton@redhat.com> +Date: Tue Mar 19 07:45:45 2013 +0000 + + Ensure that l3 agent creates client session if necessary + + Fixes bug 1157090 + + Change-Id: I2ead0ef949d272bd512c913b3be992f66ee99437 + + quantum/agent/l3_agent.py | 24 ++++++++++++++++-------- + quantum/tests/unit/test_l3_agent.py | 2 ++ + 2 files changed, 18 insertions(+), 8 deletions(-) + +commit 913586b22b4825ea1919d171a6d5ac535cc66f8b +Author: Gary Kotton <gkotton@redhat.com> +Date: Mon Mar 11 13:46:41 2013 +0000 + + Sets default MySql engine to InnoDB + + Fixes bug 1153594 + + Change-Id: I4a3de87a99ca2d49b6a74d7104daf47f8f421a80 + + quantum/db/model_base.py | 1 + + 1 file changed, 1 insertion(+) + +commit 5a2ef81430a5c91feffc244382657c23b4db57d1 +Author: Ante Karamatic <ante.karamatic@canonical.com> +Date: Thu Feb 7 12:33:49 2013 +0100 + + Lock tables for update on allocation/deletion + + Allocating, creating and deleting port might happen + in parallel and we need to make sure we don't + assign same IP to multiple different requests. + + Added treatment for vlan tags and tunnel ID's + + Fixes: bug #1110807 + + Change-Id: Idbb04d3ce6eacd308b05536f1942a35a0792199e + + quantum/db/db_base_plugin_v2.py | 22 +++++++++++++-------- + quantum/plugins/linuxbridge/db/l2network_db_v2.py | 3 +++ + quantum/plugins/openvswitch/ovs_db_v2.py | 9 ++++++++- + 3 files changed, 25 insertions(+), 9 deletions(-) + commit f94b1491b8cb4701cd5064610d546db00d675c62 Author: Salvatore Orlando <salv.orlando@gmail.com> Date: Mon Mar 4 18:19:47 2013 +0100 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/agent/l3_agent.py new/quantum-2012.2.4/quantum/agent/l3_agent.py --- old/quantum-2012.2.4/quantum/agent/l3_agent.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/agent/l3_agent.py 2013-03-19 20:41:32.000000000 +0100 @@ -117,14 +117,7 @@ self.polling_interval = conf.polling_interval - self.qclient = client.Client( - username=self.conf.admin_user, - password=self.conf.admin_password, - tenant_name=self.conf.admin_tenant_name, - auth_url=self.conf.auth_url, - auth_strategy=self.conf.auth_strategy, - region_name=self.conf.auth_region - ) + self.qclient = None if self.conf.use_namespaces: self._destroy_router_namespaces(self.conf.router_id) @@ -168,16 +161,31 @@ ip_wrapper = ip_wrapper_root.ensure_namespace(ri.ns_name()) ip_wrapper.netns.execute(['sysctl', '-w', 'net.ipv4.ip_forward=1']) + def client_create(self): + self.qclient = client.Client( + username=self.conf.admin_user, + password=self.conf.admin_password, + tenant_name=self.conf.admin_tenant_name, + auth_url=self.conf.auth_url, + auth_strategy=self.conf.auth_strategy, + region_name=self.conf.auth_region + ) + LOG.debug(_("Client session established!")) + def daemon_loop(self): #TODO(danwent): this simple diff logic does not handle if # details of a router port (e.g., IP, mac) are changed behind # our back. Will fix this properly with update notifications. while True: + if not self.qclient: + self.client_create() + try: self.do_single_loop() except: LOG.exception("Error running l3_nat daemon_loop") + self.qclient = None time.sleep(self.polling_interval) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/db/db_base_plugin_v2.py new/quantum-2012.2.4/quantum/db/db_base_plugin_v2.py --- old/quantum-2012.2.4/quantum/db/db_base_plugin_v2.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/db/db_base_plugin_v2.py 2013-03-19 20:41:32.000000000 +0100 @@ -255,7 +255,8 @@ @staticmethod def _hold_ip(context, network_id, subnet_id, port_id, ip_address): - alloc_qry = context.session.query(models_v2.IPAllocation) + alloc_qry = context.session.query( + models_v2.IPAllocation).with_lockmode('update') allocated = alloc_qry.filter_by(network_id=network_id, port_id=port_id, ip_address=ip_address, @@ -278,7 +279,8 @@ if network_id in getattr(context, '_recycled_networks', set()): return - expired_qry = context.session.query(models_v2.IPAllocation) + expired_qry = context.session.query( + models_v2.IPAllocation).with_lockmode('update') expired_qry = expired_qry.filter_by(network_id=network_id, port_id=None) expired_qry = expired_qry.filter( @@ -301,7 +303,8 @@ subnet. """ # Grab all allocation pools for the subnet - pool_qry = context.session.query(models_v2.IPAllocationPool) + pool_qry = context.session.query( + models_v2.IPAllocationPool).with_lockmode('update') allocation_pools = pool_qry.filter_by(subnet_id=subnet_id).all() # Find the allocation pool for the IP to recycle pool_id = None @@ -322,7 +325,8 @@ # If 1 of the above holds true then the specific entry will be # modified. If both hold true then the two ranges will be merged. # If there are no entries then a single entry will be added. - range_qry = context.session.query(models_v2.IPAvailabilityRange) + range_qry = context.session.query( + models_v2.IPAvailabilityRange).with_lockmode('update') ip_first = str(netaddr.IPAddress(ip_address) + 1) ip_last = str(netaddr.IPAddress(ip_address) - 1) LOG.debug("Recycle %s", ip_address) @@ -401,7 +405,8 @@ # Delete the IP address from the IPAllocate table LOG.debug("Delete allocated IP %s (%s/%s)", ip_address, network_id, subnet_id) - alloc_qry = context.session.query(models_v2.IPAllocation) + alloc_qry = context.session.query( + models_v2.IPAllocation).with_lockmode('update') allocated = alloc_qry.filter_by(network_id=network_id, ip_address=ip_address, subnet_id=subnet_id).delete() @@ -415,7 +420,7 @@ """ range_qry = context.session.query( models_v2.IPAvailabilityRange).join( - models_v2.IPAllocationPool) + models_v2.IPAllocationPool).with_lockmode('update') for subnet in subnets: range = range_qry.filter_by(subnet_id=subnet['id']).first() if not range: @@ -443,7 +448,7 @@ range_qry = context.session.query( models_v2.IPAvailabilityRange, models_v2.IPAllocationPool).join( - models_v2.IPAllocationPool) + models_v2.IPAllocationPool).with_lockmode('update') results = range_qry.filter_by(subnet_id=subnet_id).all() for (range, pool) in results: first = int(netaddr.IPAddress(range['first_ip'])) @@ -1260,7 +1265,8 @@ def _delete_port(self, context, id): port = self._get_port(context, id) - allocated_qry = context.session.query(models_v2.IPAllocation) + allocated_qry = context.session.query( + models_v2.IPAllocation).with_lockmode('update') # recycle all of the IP's allocated = allocated_qry.filter_by(port_id=id).all() if allocated: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/db/model_base.py new/quantum-2012.2.4/quantum/db/model_base.py --- old/quantum-2012.2.4/quantum/db/model_base.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/db/model_base.py 2013-03-19 20:41:32.000000000 +0100 @@ -20,6 +20,7 @@ class QuantumBase(object): """Base class for Quantum Models.""" + __table_args__ = {'mysql_engine': 'InnoDB'} def __setitem__(self, key, value): setattr(self, key, value) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/plugins/linuxbridge/db/l2network_db_v2.py new/quantum-2012.2.4/quantum/plugins/linuxbridge/db/l2network_db_v2.py --- old/quantum-2012.2.4/quantum/plugins/linuxbridge/db/l2network_db_v2.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/plugins/linuxbridge/db/l2network_db_v2.py 2013-03-19 20:41:32.000000000 +0100 @@ -110,6 +110,7 @@ with session.begin(subtransactions=True): state = (session.query(l2network_models_v2.NetworkState). filter_by(allocated=False). + with_lockmode('update'). first()) if not state: raise q_exc.NoNetworkAvailable() @@ -125,6 +126,7 @@ state = (session.query(l2network_models_v2.NetworkState). filter_by(physical_network=physical_network, vlan_id=vlan_id). + with_lockmode('update'). one()) if state.allocated: if vlan_id == constants.FLAT_VLAN_ID: @@ -150,6 +152,7 @@ state = (session.query(l2network_models_v2.NetworkState). filter_by(physical_network=physical_network, vlan_id=vlan_id). + with_lockmode('update'). one()) state.allocated = False inside = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/plugins/openvswitch/ovs_db_v2.py new/quantum-2012.2.4/quantum/plugins/openvswitch/ovs_db_v2.py --- old/quantum-2012.2.4/quantum/plugins/openvswitch/ovs_db_v2.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/plugins/openvswitch/ovs_db_v2.py 2013-03-19 20:41:32.000000000 +0100 @@ -129,6 +129,7 @@ with session.begin(subtransactions=True): alloc = (session.query(ovs_models_v2.VlanAllocation). filter_by(allocated=False). + with_lockmode('update'). first()) if alloc: LOG.debug("reserving vlan %s on physical network %s from pool" % @@ -144,6 +145,7 @@ alloc = (session.query(ovs_models_v2.VlanAllocation). filter_by(physical_network=physical_network, vlan_id=vlan_id). + with_lockmode('update'). one()) if alloc.allocated: if vlan_id == constants.FLAT_VLAN_ID: @@ -169,6 +171,7 @@ alloc = (session.query(ovs_models_v2.VlanAllocation). filter_by(physical_network=physical_network, vlan_id=vlan_id). + with_lockmode('update'). one()) alloc.allocated = False inside = False @@ -227,6 +230,7 @@ try: alloc = (session.query(ovs_models_v2.TunnelAllocation). filter_by(tunnel_id=tunnel_id). + with_lockmode('update'). one()) return alloc except exc.NoResultFound: @@ -237,6 +241,7 @@ with session.begin(subtransactions=True): alloc = (session.query(ovs_models_v2.TunnelAllocation). filter_by(allocated=False). + with_lockmode('update'). first()) if alloc: LOG.debug("reserving tunnel %s from pool" % alloc.tunnel_id) @@ -250,6 +255,7 @@ try: alloc = (session.query(ovs_models_v2.TunnelAllocation). filter_by(tunnel_id=tunnel_id). + with_lockmode('update'). one()) if alloc.allocated: raise q_exc.TunnelIdInUse(tunnel_id=tunnel_id) @@ -267,6 +273,7 @@ try: alloc = (session.query(ovs_models_v2.TunnelAllocation). filter_by(tunnel_id=tunnel_id). + with_lockmode('update'). one()) alloc.allocated = False inside = False @@ -330,7 +337,7 @@ session = db.get_session() try: tunnel = (session.query(ovs_models_v2.TunnelEndpoint). - filter_by(ip_address=ip).one()) + filter_by(ip_address=ip).with_lockmode('update').one()) except exc.NoResultFound: id = _generate_tunnel_id(session) tunnel = ovs_models_v2.TunnelEndpoint(ip, id) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/tests/unit/test_l3_agent.py new/quantum-2012.2.4/quantum/tests/unit/test_l3_agent.py --- old/quantum-2012.2.4/quantum/tests/unit/test_l3_agent.py 2013-03-05 18:57:05.000000000 +0100 +++ new/quantum-2012.2.4/quantum/tests/unit/test_l3_agent.py 2013-03-19 20:41:32.000000000 +0100 @@ -179,6 +179,7 @@ def testProcessRouter(self): agent = l3_agent.L3NATAgent(self.conf) + agent.client_create() router_id = _uuid() ri = l3_agent.RouterInfo(router_id, self.conf.root_helper, self.conf.use_namespaces) @@ -231,6 +232,7 @@ def testSingleLoopRouterRemoval(self): agent = l3_agent.L3NATAgent(self.conf) + agent.client_create() self.client_inst.list_ports.return_value = {'ports': []} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/quantum-2012.2.4/quantum/vcsversion.py new/quantum-2012.2.4/quantum/vcsversion.py --- old/quantum-2012.2.4/quantum/vcsversion.py 2013-03-05 19:01:37.000000000 +0100 +++ new/quantum-2012.2.4/quantum/vcsversion.py 2013-03-19 20:45:11.000000000 +0100 @@ -2,6 +2,6 @@ # This file is automatically generated by setup.py, So don't edit it. :) version_info = { 'branch_nick': '(no', - 'revision_id': 'f94b1491b8cb4701cd5064610d546db00d675c62', - 'revno': 1387 + 'revision_id': 'a109f7e47c2a52d2906471305230bc97396f003b', + 'revno': 1390 } -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org