Hello community,

here is the log from the commit of package openstack-nova for openSUSE:Factory 
checked in at 2013-01-29 06:46:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-nova (Old)
 and      /work/SRC/openSUSE:Factory/.openstack-nova.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openstack-nova", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova-doc.changes        
2013-01-17 15:16:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova-doc.changes   
2013-01-29 06:46:19.000000000 +0100
@@ -0,0 +1,24 @@
+-------------------------------------------------------------------
+Fri Jan 18 13:42:51 UTC 2013 - [email protected]
+
+- Update to version 2012.2.3+git.1358515929.3545a7d:
+  + Add NFS to the libvirt volume driver list
+  + Call plug_vifs() for all instances in init_host
+  + Fix addition of CPU features when running against legacy libvirt
+  + Fix typo in resource tracker audit message
+- Move back to "git_tarballs" source service.
+
+--------------------------------------------------------------------
+Thu Jan 17 15:22:36 UTC 2013 - [email protected]
+
+- Start using obs-service-github_tarballs
+
+--------------------------------------------------------------------
+Thu Jan 17 14:52:08 UTC 2013 - [email protected]
+
+- Update to version 2012.2.3+git.1358434328.a41b913:
+  + Provide better error message for aggregate-create
+  + Fix errors in used_limits extension
+  + Add an iptables mangle rule per-bridge for DHCP.
+  + Limit formatting routes when adding resources
+
--- /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova.changes    
2013-01-17 15:16:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova.changes       
2013-01-29 06:46:19.000000000 +0100
@@ -1,0 +2,24 @@
+Fri Jan 18 13:42:51 UTC 2013 - [email protected]
+
+- Update to version 2012.2.3+git.1358515929.3545a7d:
+  + Add NFS to the libvirt volume driver list
+  + Call plug_vifs() for all instances in init_host
+  + Fix addition of CPU features when running against legacy libvirt
+  + Fix typo in resource tracker audit message
+- Move back to "git_tarballs" source service.
+
+--------------------------------------------------------------------
+Thu Jan 17 15:22:36 UTC 2013 - [email protected]
+
+- Start using obs-service-github_tarballs
+
+--------------------------------------------------------------------
+Thu Jan 17 14:52:08 UTC 2013 - [email protected]
+
+- Update to version 2012.2.3+git.1358434328.a41b913:
+  + Provide better error message for aggregate-create
+  + Fix errors in used_limits extension
+  + Add an iptables mangle rule per-bridge for DHCP.
+  + Limit formatting routes when adding resources
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openstack-nova-doc.spec ++++++
--- /var/tmp/diff_new_pack.gyqtiv/_old  2013-01-29 06:46:21.000000000 +0100
+++ /var/tmp/diff_new_pack.gyqtiv/_new  2013-01-29 06:46:21.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package openstack-nova-doc
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,8 +20,8 @@
 %define majorversion 2012.2.3
 
 Name:           openstack-%{component}-doc
-Version:        2012.2.3+git.1357215468.451003e
-Release:        0
+Version:        2012.2.3+git.1358515929.3545a7d
+Release:        1
 License:        Apache-2.0
 Summary:        OpenStack Compute (Nova) - Documentation
 Url:            http://openstack.org/projects/compute/

++++++ openstack-nova.spec ++++++
--- /var/tmp/diff_new_pack.gyqtiv/_old  2013-01-29 06:46:21.000000000 +0100
+++ /var/tmp/diff_new_pack.gyqtiv/_new  2013-01-29 06:46:21.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package openstack-nova
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 # Copyright (c) 2011 B1 Systems GmbH, Vohburg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
@@ -17,20 +17,13 @@
 #
 
 
-#TODO/FIXME:
-#   - need to package websockify: https://github.com/kanaka/websockify
-#   - need to install novnc files in /usr/share/novnc
-#   - probably need to kill openstack-novncproxy (add
-#     provides/obsoletes?) and package https://github.com/kanaka/noVNC
-#     in a different way
-
 %define component nova
 %define groupname openstack-%{component}
 %define username openstack-%{component}
 
 Name:           openstack-%{component}
-Version:        2012.2.3+git.1357215468.451003e
-Release:        0
+Version:        2012.2.3+git.1358515929.3545a7d
+Release:        1
 License:        Apache-2.0
 Summary:        OpenStack Compute (Nova)
 Url:            https://launchpad.net/nova
@@ -307,7 +300,6 @@
   cp -a %{SOURCE9} 
%{buildroot}%{_localstatedir}/lib/polkit-1/localauthority/10-vendor.d/
 %endif
 
-
 %pre
 getent group %{groupname} >/dev/null || groupadd -r %{groupname}
 getent passwd %{username} >/dev/null || \

++++++ _service ++++++
--- /var/tmp/diff_new_pack.gyqtiv/_old  2013-01-29 06:46:21.000000000 +0100
+++ /var/tmp/diff_new_pack.gyqtiv/_new  2013-01-29 06:46:21.000000000 +0100
@@ -1,9 +1,6 @@
 <services>
-  <service name="github_tarballs" mode="disabled">
+  <service name="git_tarballs" mode="disabled">
     <param 
name="url">http://tarballs.openstack.org/nova/nova-stable-folsom.tar.gz</param>
     <param name="email">[email protected]</param>
-    <param name="repo_owner">openstack</param>
-    <param name="repo_name">nova</param>
-    <param name="target">stable/folsom</param>
   </service>
 </services>

++++++ nova-stable-folsom.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/AUTHORS new/nova-2012.2.3/AUTHORS
--- old/nova-2012.2.3/AUTHORS   2012-12-19 13:20:23.000000000 +0100
+++ new/nova-2012.2.3/AUTHORS   2013-01-18 00:55:37.000000000 +0100
@@ -47,6 +47,7 @@
 Brian Lamar <[email protected]>
 Brian Schott <[email protected]>
 Brian Waldon <[email protected]>
+Carlos Goncalves <[email protected]>
 Chiradeep Vittal <[email protected]>
 Chmouel Boudjnah <[email protected]>
 Chris Behrens <[email protected]>
@@ -111,6 +112,7 @@
 Gaurav Gupta <[email protected]>
 Ghe Rivero <[email protected]>
 Greg Althaus <[email protected]>
+Hans Lindgren <[email protected]>
 Hengqing Hu <[email protected]>
 Hisaharu Ishii <[email protected]>
 Hisaki Ohara <[email protected]>
@@ -208,6 +210,7 @@
 Mohammed Naser <[email protected]>
 Monsyne Dragon <[email protected]>
 Monty Taylor <[email protected]>
+Morgan Fainberg <[email protected]>
 MotoKen <[email protected]>
 Muneyuki Noguchi <[email protected]>
 NTT PF Lab. <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/ChangeLog new/nova-2012.2.3/ChangeLog
--- old/nova-2012.2.3/ChangeLog 2012-12-19 13:20:23.000000000 +0100
+++ new/nova-2012.2.3/ChangeLog 2013-01-18 00:55:36.000000000 +0100
@@ -1,3 +1,194 @@
+commit 3545a7d77d4d9abbb193d6bc35ec0a10fb8f5ce0
+Merge: 02ff13b fcaab43
+Author: Jenkins <[email protected]>
+Date:   Thu Jan 17 23:31:43 2013 +0000
+
+    Merge "Add NFS to the libvirt volume driver list" into stable/folsom
+
+commit 02ff13bf91f9e968f10d53ddd8bc45d6b349b5f1
+Merge: 0489db9 796216e
+Author: Jenkins <[email protected]>
+Date:   Thu Jan 17 23:27:46 2013 +0000
+
+    Merge "Call plug_vifs() for all instances in init_host" into stable/folsom
+
+commit 0489db9a4ced453e0a32cca31ab1a15cd7514fa3
+Merge: d4064eb b3c2f61
+Author: Jenkins <[email protected]>
+Date:   Thu Jan 17 23:25:39 2013 +0000
+
+    Merge "Fix typo in resource tracker audit message" into stable/folsom
+
+commit d4064eb6b449308d1b7ebac1b11a30e997ecadca
+Merge: a41b913 1789d26
+Author: Jenkins <[email protected]>
+Date:   Thu Jan 17 23:17:59 2013 +0000
+
+    Merge "Fix addition of CPU features when running against legacy libvirt" 
into stable/folsom
+
+commit fcaab435d966a4ab97e5e375d6c8b3e2367d56b9
+Author: Carlos Goncalves <[email protected]>
+Date:   Thu Dec 6 13:15:24 2012 +0000
+
+    Add NFS to the libvirt volume driver list
+    
+    Fixes bug 1087252
+    
+    Change-Id: I01511d4ef7763cbe622b10ee340342eb692afcdd
+    (cherry picked from commit f6c394cce473f58da704bc1c5230c57ca80f299d)
+
+ nova/virt/libvirt/driver.py |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit a41b9132f445220d3435a28eac40ef2ced25d3ff
+Merge: 6003350 eff17b4
+Author: Jenkins <[email protected]>
+Date:   Wed Jan 16 23:16:54 2013 +0000
+
+    Merge "Provide better error message for aggregate-create" into 
stable/folsom
+
+commit 60033507695c45488ff8abb3f69e1385f391e29c
+Merge: 9bcda4a 63fd557
+Author: Jenkins <[email protected]>
+Date:   Wed Jan 16 23:04:32 2013 +0000
+
+    Merge "Limit formatting routes when adding resources" into stable/folsom
+
+commit 796216e935781809e049c6a084962f73c7e0a23c
+Author: Morgan Fainberg <[email protected]>
+Date:   Tue Nov 27 13:00:48 2012 -0800
+
+    Call plug_vifs() for all instances in init_host
+    
+    Remove the assumption that we are using the "flat" networking model
+    and there is a single bridge interface for all instances on a given
+    compute node.  Instead simply call plug_vifs() for each instance in
+    init_host.
+    
+    Fixes bug 1083784
+    
+    Change-Id: I4b367deb6851c06c80a4bdf0bd806cf5e867bb0a
+    (cherry picked from commit 77e38b7cfc2206ef4ac528d3c9faaa09adbf7f58)
+
+ nova/compute/manager.py |    9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit 9bcda4a40678461628fd52ca4c1916333fed4111
+Merge: 4bfc8f1 f864a4e
+Author: Jenkins <[email protected]>
+Date:   Wed Jan 16 17:40:42 2013 +0000
+
+    Merge "Fix errors in used_limits extension" into stable/folsom
+
+commit 1789d2604312e0e9f8c25918d0d0029586829797
+Author: Daniel P. Berrange <[email protected]>
+Date:   Mon Dec 17 15:35:06 2012 +0000
+
+    Fix addition of CPU features when running against legacy libvirt
+    
+    When running against an libvirt < 0.9.10 which lacks support for the
+    'host-model' CPU type, we must fake it by copying the host CPU
+    model and features. Unfortunately the code was forgetting to
+    append the new features to the CPU object feature list
+    
+    Bug: 1099527
+    Signed-off-by: Daniel P. Berrange <[email protected]>
+    (cherry picked from commit 82b55c97d10a55e6a825261397816f6a7ad00fd7)
+    
+    Change-Id: Ib5e6a173f1ae7d421435af45bf327f5b36c94dd0
+
+ nova/tests/test_libvirt.py  |    6 ++++++
+ nova/virt/libvirt/driver.py |    1 +
+ 2 files changed, 7 insertions(+)
+
+commit b3c2f61d8d54b0e8c0afe3da529b3ec7c12f461b
+Author: Hans Lindgren <[email protected]>
+Date:   Fri Jan 11 13:40:25 2013 +0100
+
+    Fix typo in resource tracker audit message
+    
+    Resolves bug 1092418.
+    
+    Change-Id: Ia51f1ee78bc612743095759fef6067c93fbcd222
+
+ nova/compute/resource_tracker.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 63fd557ec42ea59aa77a2d4aca3c4f9c301320fd
+Author: Vishvananda Ishaya <[email protected]>
+Date:   Wed Nov 7 23:28:28 2012 -0800
+
+    Limit formatting routes when adding resources
+    
+    By default, routes.mapper.Mapper.resource adds a bunch of formatted
+    routes that accept anything after a '.'. Our spec says only .xml
+    and .json are accepted so limit the formatting to those valuse.
+    
+    This allows identifiers with a '.' in urls. A few tests were added
+    to the extensions test to prove that .xml and .json are stripped
+    but other values are not.
+    
+    Fixes bug 1027788
+    
+    Change-Id: Ic888aa5d75050d6b14763c2a787ac8c8d5ab1f69
+    (cherry picked from commit 8935c3bde9e9635f65522488c1aca5df5b03050d)
+
+ nova/api/openstack/__init__.py                     |    9 +++++++
+ .../tests/api/openstack/compute/test_extensions.py |   28 ++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+
+commit 4bfc8f1165b05c2cc7c5506641b9b85fa8e1e144
+Author: Adam Gandelman <[email protected]>
+Date:   Tue Dec 18 09:50:46 2012 -0800
+
+    Add an iptables mangle rule per-bridge for DHCP.
+    
+    When vhost-net is present on a host, and DHCP services are
+    run on the same system as guests (multi_host), an iptables
+    rule is needed to fill packet checksums.  This adds a rule
+    per-bridge for multi_host networks when vhost-net is present,
+    similar to how newer versions of libvirt handle the issue for
+    bridges/networks that it manages.
+    
+    Fixes LP: #1029430
+    
+    EDIT: Updated tests and pep8.
+    
+    (Backported from commit 901a3dacb6f2d36cbe8d23707dba75452e91df33)
+    
+    Change-Id: I1a51c1d808fa47a77e713dbfe384ffad183d6031
+
+ nova/network/linux_net.py  |   29 +++++++++++++++++++++++++++--
+ nova/tests/test_libvirt.py |   16 ++++++++++++++++
+ 2 files changed, 43 insertions(+), 2 deletions(-)
+
+commit 451003e0670b854bc833f32c67bb7ad646d3ac89
+Merge: 9e62846 f9eacd4
+Author: Jenkins <[email protected]>
+Date:   Wed Dec 19 12:16:25 2012 +0000
+
+    Merge "Fix a crash when launching qcow2 images containing snapshots" into 
stable/folsom
+
+commit f864a4e2e2a3cc5383e7dce6ad91f42880a64d1a
+Author: Mark McLoughlin <[email protected]>
+Date:   Thu Dec 13 11:21:18 2012 +0000
+
+    Fix errors in used_limits extension
+    
+    Fixes bug #1062049
+    
+    There was a typo mapping the security groups resource to floating IPs.
+    
+    Key pairs don't work with the extension because of bug #1089877.
+    
+    (cherry picked from commit 6c9d9ab)
+    
+    Change-Id: Ifd694b21fef1dc95e67c07dcef0cd6ea3daa8d53
+
+ nova/api/openstack/compute/contrib/used_limits.py  |    4 ++--
+ .../openstack/compute/contrib/test_used_limits.py  |    4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
 commit 9e62846722a174ffd74f15ea2d45f27bf6509f1f
 Author: Mark McLoughlin <[email protected]>
 Date:   Thu Dec 13 20:32:12 2012 +0000
@@ -24,6 +215,24 @@
  nova/version.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
+commit f9eacd416360f1c37fd7cb4177f6026eb939cb0b
+Author: Joshua Harlow <[email protected]>
+Date:   Tue Oct 23 13:14:22 2012 -0700
+
+    Fix a crash when launching qcow2 images containing snapshots
+    
+    Break out of the loop when we encounter 'Snapshot list:'
+    in the output from `qemu-img info` instead of failing
+    to parse and crashing.
+    
+    Fixes bug: 1070088
+    Change-Id: I5f501c599b94e0ac13892c97d60ec740ac7e641d
+    cherry-picked: b4b897e7acebea1ccff336a5fad9313fd3f51326
+
+ nova/tests/test_image_utils.py |   69 ++++++++++++++++++++++++++++++++++++++++
+ nova/virt/images.py            |   16 ++++++++--
+ 2 files changed, 82 insertions(+), 3 deletions(-)
+
 commit a99a802e008eed18e39fc1d98170edc495cbd354
 Author: Pádraig Brady <[email protected]>
 Date:   Fri Nov 23 14:59:13 2012 +0000
@@ -63,6 +272,27 @@
  nova/flags.py |    3 +++
  1 file changed, 3 insertions(+)
 
+commit eff17b4b1888d3d56bb1ede59e382b8430e2afa9
+Author: Joe Gordon <[email protected]>
+Date:   Mon Nov 26 22:55:19 2012 +0000
+
+    Provide better error message for aggregate-create
+    
+    For an InvalidAggregateAction exception:
+    Before: 'ERROR: There was a conflict when trying to complete your request 
(HTTP 409)'
+    After: 'ERROR: Cannot perform action 'create_aggregate' on aggregate 
'N/A'. Reason: invalid zone. (HTTP 400)'
+    
+    docImpact
+    
+    Fix bug 1083353
+    
+    Change-Id: I26e30059fe5bbc30eecc52cccec4eba2a57d00db
+    (cherry picked from commit 4e43747037058522087e6eb71ef3bcce266d55cc)
+
+ nova/api/openstack/compute/contrib/aggregates.py   |    9 +++++----
+ .../openstack/compute/contrib/test_aggregates.py   |    8 ++++++--
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
 commit b55014ca51dae9078fd68c7e4e380922b80d466d
 Author: Mark McLoughlin <[email protected]>
 Date:   Thu Nov 29 21:14:46 2012 +0000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/api/openstack/__init__.py 
new/nova-2012.2.3/nova/api/openstack/__init__.py
--- old/nova-2012.2.3/nova/api/openstack/__init__.py    2012-12-19 
13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/api/openstack/__init__.py    2013-01-18 
00:51:37.000000000 +0100
@@ -87,6 +87,15 @@
             return result[0], result[1]
         return routes.Mapper.routematch(self, url, environ)
 
+    def connect(self, *args, **kargs):
+        # NOTE(vish): Default the format part of a route to only accept json
+        #             and xml so it doesn't eat all characters after a '.'
+        #             in the url.
+        kargs.setdefault('requirements', {})
+        if not kargs['requirements'].get('format'):
+            kargs['requirements']['format'] = 'json|xml'
+        return routes.Mapper.connect(self, *args, **kargs)
+
 
 class ProjectMapper(APIMapper):
     def resource(self, member_name, collection_name, **kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nova-2012.2.3/nova/api/openstack/compute/contrib/aggregates.py 
new/nova-2012.2.3/nova/api/openstack/compute/contrib/aggregates.py
--- old/nova-2012.2.3/nova/api/openstack/compute/contrib/aggregates.py  
2012-12-19 13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/api/openstack/compute/contrib/aggregates.py  
2013-01-18 00:51:37.000000000 +0100
@@ -71,11 +71,12 @@
 
         try:
             aggregate = self.api.create_aggregate(context, name, avail_zone)
-        except (exception.AggregateNameExists,
-                exception.InvalidAggregateAction):
-            LOG.info(_("Cannot create aggregate with name %(name)s and "
-                            "availability zone %(avail_zone)s") % locals())
+        except exception.AggregateNameExists as e:
+            LOG.info(e)
             raise exc.HTTPConflict
+        except exception.InvalidAggregateAction as e:
+            LOG.info(e)
+            raise
         return self._marshall_aggregate(aggregate)
 
     def show(self, req, id):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nova-2012.2.3/nova/api/openstack/compute/contrib/used_limits.py 
new/nova-2012.2.3/nova/api/openstack/compute/contrib/used_limits.py
--- old/nova-2012.2.3/nova/api/openstack/compute/contrib/used_limits.py 
2012-12-19 13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/api/openstack/compute/contrib/used_limits.py 
2013-01-18 00:51:37.000000000 +0100
@@ -51,8 +51,8 @@
             'totalInstancesUsed': 'instances',
             'totalVolumesUsed': 'volumes',
             'totalVolumeGigabytesUsed': 'gigabytes',
-            'totalSecurityGroupsUsed': 'floating_ips',
-            'totalKeyPairsUsed': 'key_pairs',
+            'totalFloatingIpsUsed': 'floating_ips',
+            'totalSecurityGroupsUsed': 'security_groups',
         }
         used_limits = {}
         for display_name, quota in quota_map.iteritems():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/compute/manager.py 
new/nova-2012.2.3/nova/compute/manager.py
--- old/nova-2012.2.3/nova/compute/manager.py   2012-12-19 13:16:56.000000000 
+0100
+++ new/nova-2012.2.3/nova/compute/manager.py   2013-01-18 00:51:40.000000000 
+0100
@@ -271,7 +271,7 @@
             self.driver.filter_defer_apply_on()
 
         try:
-            for count, instance in enumerate(instances):
+            for instance in instances:
                 db_state = instance['power_state']
                 drv_state = self._get_power_state(context, instance)
                 closing_vm_states = (vm_states.DELETED,
@@ -291,10 +291,9 @@
                 net_info = compute_utils.get_nw_info_for_instance(instance)
 
                 # We're calling plug_vifs to ensure bridge and iptables
-                # filters are present, calling it once is enough.
-                if count == 0:
-                    legacy_net_info = self._legacy_nw_info(net_info)
-                    self.driver.plug_vifs(instance, legacy_net_info)
+                # rules exist. This needs to be called for each instance.
+                legacy_net_info = self._legacy_nw_info(net_info)
+                self.driver.plug_vifs(instance, legacy_net_info)
 
                 if ((expect_running and FLAGS.resume_guests_state_on_host_boot)
                      or FLAGS.start_guests_on_host_boot):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/compute/resource_tracker.py 
new/nova-2012.2.3/nova/compute/resource_tracker.py
--- old/nova-2012.2.3/nova/compute/resource_tracker.py  2012-12-19 
13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/compute/resource_tracker.py  2013-01-18 
00:51:40.000000000 +0100
@@ -227,7 +227,7 @@
                 "%(free_mem)d MB") % dict(
                         total_mem=self.compute_node['memory_mb'],
                         used_mem=self.compute_node['memory_mb_used'],
-                        free_mem=self.compute_node['local_gb_used'])
+                        free_mem=self.compute_node['free_ram_mb'])
         LOG.audit(msg)
 
         if memory_mb_limit is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/network/linux_net.py 
new/nova-2012.2.3/nova/network/linux_net.py
--- old/nova-2012.2.3/nova/network/linux_net.py 2012-12-19 13:16:56.000000000 
+0100
+++ new/nova-2012.2.3/nova/network/linux_net.py 2013-01-18 00:51:37.000000000 
+0100
@@ -277,7 +277,8 @@
             self.execute = execute
 
         self.ipv4 = {'filter': IptablesTable(),
-                     'nat': IptablesTable()}
+                     'nat': IptablesTable(),
+                     'mangle': IptablesTable()}
         self.ipv6 = {'filter': IptablesTable()}
 
         self.iptables_apply_deferred = False
@@ -298,7 +299,8 @@
 
         # Wrap the built-in chains
         builtin_chains = {4: {'filter': ['INPUT', 'OUTPUT', 'FORWARD'],
-                              'nat': ['PREROUTING', 'OUTPUT', 'POSTROUTING']},
+                              'nat': ['PREROUTING', 'OUTPUT', 'POSTROUTING'],
+                              'mangle': ['POSTROUTING']},
                           6: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']}}
 
         for ip_version in builtin_chains:
@@ -732,6 +734,24 @@
     iptables_manager.apply()
 
 
+def _add_dhcp_mangle_rule(dev):
+    if not os.path.exists('/dev/vhost-net'):
+        return
+    table = iptables_manager.ipv4['mangle']
+    table.add_rule('POSTROUTING',
+                   '-o %s -p udp -m udp --dport 68 -j CHECKSUM '
+                   '--checksum-fill' % dev)
+    iptables_manager.apply()
+
+
+def _remove_dhcp_mangle_rule(dev):
+    table = iptables_manager.ipv4['mangle']
+    table.remove_rule('POSTROUTING',
+                      '-o %s -p udp -m udp --dport 68 -j CHECKSUM '
+                      '--checksum-fill' % dev)
+    iptables_manager.apply()
+
+
 def get_dhcp_opts(context, network_ref):
     """Get network's hosts config in dhcp-opts format."""
     hosts = []
@@ -788,6 +808,8 @@
         else:
             LOG.debug(_('Pid %d is stale, skip killing dnsmasq'), pid)
 
+    _remove_dhcp_mangle_rule(dev)
+
 
 # NOTE(ja): Sending a HUP only reloads the hostfile, so any
 #           configuration options (like dchp-range, vlan, ...)
@@ -809,6 +831,9 @@
         write_to_file(optsfile, get_dhcp_opts(context, network_ref))
         os.chmod(optsfile, 0644)
 
+    if network_ref['multi_host']:
+        _add_dhcp_mangle_rule(dev)
+
     # Make sure dnsmasq can actually read it (it setuid()s to "nobody")
     os.chmod(conffile, 0644)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_aggregates.py 
new/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_aggregates.py
--- 
old/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_aggregates.py   
    2012-12-19 13:16:56.000000000 +0100
+++ 
new/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_aggregates.py   
    2013-01-18 00:51:37.000000000 +0100
@@ -88,11 +88,15 @@
 
     def test_create_with_incorrect_availability_zone(self):
         def stub_create_aggregate(context, name, availability_zone):
-            raise exception.InvalidAggregateAction
+            raise exception.InvalidAggregateAction(action='create_aggregate',
+                                                   aggregate_id="'N/A'",
+                                                   reason='invalid zone')
+
         self.stubs.Set(self.controller.api, "create_aggregate",
                        stub_create_aggregate)
 
-        self.assertRaises(exc.HTTPConflict, self.controller.create,
+        self.assertRaises(exception.InvalidAggregateAction,
+                          self.controller.create,
                           self.req, {"aggregate":
                                      {"name": "test",
                                       "availability_zone": "nova_bad"}})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_used_limits.py 
new/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_used_limits.py
--- 
old/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_used_limits.py  
    2012-12-19 13:16:56.000000000 +0100
+++ 
new/nova-2012.2.3/nova/tests/api/openstack/compute/contrib/test_used_limits.py  
    2013-01-18 00:51:37.000000000 +0100
@@ -52,8 +52,8 @@
             'totalInstancesUsed': 'instances',
             'totalVolumesUsed': 'volumes',
             'totalVolumeGigabytesUsed': 'gigabytes',
-            'totalSecurityGroupsUsed': 'floating_ips',
-            'totalKeyPairsUsed': 'key_pairs',
+            'totalFloatingIpsUsed': 'floating_ips',
+            'totalSecurityGroupsUsed': 'security_groups',
         }
         limits = {}
         for display_name, q in quota_map.iteritems():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nova-2012.2.3/nova/tests/api/openstack/compute/test_extensions.py 
new/nova-2012.2.3/nova/tests/api/openstack/compute/test_extensions.py
--- old/nova-2012.2.3/nova/tests/api/openstack/compute/test_extensions.py       
2012-12-19 13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/tests/api/openstack/compute/test_extensions.py       
2013-01-18 00:51:37.000000000 +0100
@@ -667,3 +667,31 @@
                     self.assertEqual(link_nodes[i].get(key), value)
 
         xmlutil.validate_schema(root, 'extensions')
+
+
+class ExtensionControllerIdFormatTest(test.TestCase):
+
+    def _bounce_id(self, test_id):
+
+        class BounceController(object):
+            def show(self, req, id):
+                return id
+        res_ext = base_extensions.ResourceExtension('bounce',
+                                                    BounceController())
+        manager = StubExtensionManager(res_ext)
+        app = compute.APIRouter(manager)
+        request = webob.Request.blank("/fake/bounce/%s" % test_id)
+        response = request.get_response(app)
+        return response.body
+
+    def test_id_with_xml_format(self):
+        result = self._bounce_id('foo.xml')
+        self.assertEqual(result, 'foo')
+
+    def test_id_with_json_format(self):
+        result = self._bounce_id('foo.json')
+        self.assertEqual(result, 'foo')
+
+    def test_id_with_bad_format(self):
+        result = self._bounce_id('foo.bad')
+        self.assertEqual(result, 'foo.bad')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/tests/test_image_utils.py 
new/nova-2012.2.3/nova/tests/test_image_utils.py
--- old/nova-2012.2.3/nova/tests/test_image_utils.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/nova-2012.2.3/nova/tests/test_image_utils.py    2013-01-18 
00:51:38.000000000 +0100
@@ -0,0 +1,69 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+#    Copyright (C) 2012 Yahoo! Inc. All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from nova import test
+from nova import utils
+
+from nova.virt import images
+
+
+class ImageUtilsTestCase(test.TestCase):
+    def test_qemu_info(self):
+        path = "disk.config"
+        example_output = """image: disk.config
+file format: raw
+virtual size: 64M (67108864 bytes)
+cluster_size: 65536
+disk size: 96K
+blah BLAH: bb
+"""
+        self.mox.StubOutWithMock(utils, 'execute')
+        utils.execute('env', 'LC_ALL=C', 'LANG=C',
+                      'qemu-img', 'info', path).AndReturn((example_output, ''))
+        self.mox.ReplayAll()
+        image_info = images.qemu_img_info(path)
+        self.assertEquals('disk.config', image_info['image'])
+        self.assertEquals('raw', image_info['file format'])
+        self.assertEquals('64M (67108864 bytes)', image_info['virtual size'])
+        self.assertEquals('96K', image_info['disk size'])
+        self.assertEquals('bb', image_info['blah blah'])
+        self.assertEquals("65536", image_info['cluster_size'])
+
+    def test_qemu_info_snap(self):
+        path = "disk.config"
+        example_output = """image: disk.config
+file format: raw
+virtual size: 64M (67108864 bytes)
+cluster_size: 65536
+disk size: 96K
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1     d9a9784a500742a7bb95627bb3aace38      0 2012-08-20 10:52:46 00:00:00.000
+"""
+        self.mox.StubOutWithMock(utils, 'execute')
+        utils.execute('env', 'LC_ALL=C', 'LANG=C',
+                      'qemu-img', 'info', path).AndReturn((example_output, ''))
+        self.mox.ReplayAll()
+        image_info = images.qemu_img_info(path)
+        self.assertEquals('disk.config', image_info['image'])
+        self.assertEquals('raw', image_info['file format'])
+        self.assertEquals('64M (67108864 bytes)', image_info['virtual size'])
+        self.assertEquals('96K', image_info['disk size'])
+        self.assertEquals("65536", image_info['cluster_size'])
+        # This would be triggered if the split encountered this section
+        self.assertNotIn('snapshot list', image_info)
+        bad_cap = '1     d9a9784a500742a7bb95627bb3aace38      0 2012-08-20 10'
+        self.assertNotIn(bad_cap, image_info)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/tests/test_libvirt.py 
new/nova-2012.2.3/nova/tests/test_libvirt.py
--- old/nova-2012.2.3/nova/tests/test_libvirt.py        2012-12-19 
13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/tests/test_libvirt.py        2013-01-18 
00:51:38.000000000 +0100
@@ -815,6 +815,9 @@
             cpu.model = "Opteron_G4"
             cpu.vendor = "AMD"
 
+            cpu.features.append(config.LibvirtConfigGuestCPUFeature("tm2"))
+            cpu.features.append(config.LibvirtConfigGuestCPUFeature("ht"))
+
             caps = config.LibvirtConfigCaps()
             caps.host = config.LibvirtConfigCapsHost()
             caps.host.cpu = cpu
@@ -838,6 +841,9 @@
         self.assertEquals(conf.cpu.mode, None)
         self.assertEquals(conf.cpu.model, "Opteron_G4")
         self.assertEquals(conf.cpu.vendor, "AMD")
+        self.assertEquals(len(conf.cpu.features), 2)
+        self.assertEquals(conf.cpu.features[0].name, "tm2")
+        self.assertEquals(conf.cpu.features[1].name, "ht")
 
     def test_get_guest_cpu_config_custom_old(self):
         def get_lib_version_stub(self):
@@ -3099,6 +3105,20 @@
       ':POSTROUTING ACCEPT [5063:386098]',
     ]
 
+    in_mangle_rules = [
+        '# Generated by iptables-save v1.4.12 on Tue Dec 18 15:50:25 201;',
+        '*mangle',
+        ':PREROUTING ACCEPT [241:39722]',
+        ':INPUT ACCEPT [230:39282]',
+        ':FORWARD ACCEPT [0:0]',
+        ':OUTPUT ACCEPT [266:26558]',
+        ':POSTROUTING ACCEPT [267:26590]',
+        '-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM '
+        '--checksum-fill',
+        'COMMIT',
+        '# Completed on Tue Dec 18 15:50:25 2012',
+    ]
+
     in_filter_rules = [
       '# Generated by iptables-save v1.4.4 on Mon Dec  6 11:54:13 2010',
       '*filter',
@@ -3200,6 +3220,8 @@
                 return '\n'.join(self.in_filter_rules), None
             if cmd == ('iptables-save', '-c', '-t', 'nat'):
                 return '\n'.join(self.in_nat_rules), None
+            if cmd == ('iptables-save', '-c', '-t', 'mangle'):
+                return '\n'.join(self.in_mangle_rules), None
             if cmd == ('iptables-restore', '-c',):
                 lines = process_input.split('\n')
                 if '*filter' in lines:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/virt/images.py 
new/nova-2012.2.3/nova/virt/images.py
--- old/nova-2012.2.3/nova/virt/images.py       2012-12-19 13:16:56.000000000 
+0100
+++ new/nova-2012.2.3/nova/virt/images.py       2013-01-18 00:51:38.000000000 
+0100
@@ -50,11 +50,21 @@
                              'qemu-img', 'info', path)
 
     # output of qemu-img is 'field: value'
+    # except when its in the snapshot listing mode
     data = {}
     for line in out.splitlines():
-        field, val = line.split(':', 1)
-        if val[0] == " ":
-            val = val[1:]
+        pieces = line.split(':', 1)
+        if len(pieces) != 2:
+            continue
+        (field, val) = pieces
+        field = field.strip().lower()
+        val = val.strip()
+        if field == 'snapshot list':
+            # Skip everything after the snapshot list
+            # which is safe to do since the code prints
+            # these out at the end and nobody currently
+            # uses this information in openstack as-is.
+            break
         data[field] = val
 
     return data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova/virt/libvirt/driver.py 
new/nova-2012.2.3/nova/virt/libvirt/driver.py
--- old/nova-2012.2.3/nova/virt/libvirt/driver.py       2012-12-19 
13:16:56.000000000 +0100
+++ new/nova-2012.2.3/nova/virt/libvirt/driver.py       2013-01-18 
00:51:40.000000000 +0100
@@ -148,7 +148,8 @@
                   'local=nova.virt.libvirt.volume.LibvirtVolumeDriver',
                   'fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver',
                   'rbd=nova.virt.libvirt.volume.LibvirtNetVolumeDriver',
-                  'sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver'
+                  'sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver',
+                  'nfs=nova.virt.libvirt.volume_nfs.NfsVolumeDriver'
                   ],
                 help='Libvirt handlers for remote volumes.'),
     cfg.StrOpt('libvirt_disk_prefix',
@@ -1516,6 +1517,7 @@
         for hostfeat in hostcpu.features:
             guestfeat = config.LibvirtConfigGuestCPUFeature(hostfeat.name)
             guestfeat.policy = "require"
+            guestcpu.features.append(guestfeat)
 
         return guestcpu
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nova-2012.2.3/nova.egg-info/SOURCES.txt 
new/nova-2012.2.3/nova.egg-info/SOURCES.txt
--- old/nova-2012.2.3/nova.egg-info/SOURCES.txt 2012-12-19 13:20:24.000000000 
+0100
+++ new/nova-2012.2.3/nova.egg-info/SOURCES.txt 2013-01-18 00:55:42.000000000 
+0100
@@ -729,6 +729,7 @@
 nova/tests/test_fakelibvirt.py
 nova/tests/test_flags.py
 nova/tests/test_hypervapi.py
+nova/tests/test_image_utils.py
 nova/tests/test_imagebackend.py
 nova/tests/test_imagecache.py
 nova/tests/test_instance_types.py

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to