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
Adam Gandelman
Akihiro MOTOKI
+Ante Karamatic
Armando Migliaccio
Arvind Somy
Bhuvan Arumugam
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
+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
+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
+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
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