openSUSE Commits
Threads by month
- ----- 2024 -----
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2014
- 1 participants
- 1358 discussions
Hello community,
here is the log from the commit of package openstack-nova for openSUSE:Factory checked in at 2014-01-30 17:44:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-nova (Old)
and /work/SRC/openSUSE:Factory/.openstack-nova.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-nova"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova.changes 2014-01-23 15:50:42.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova.changes 2014-01-30 17:44:44.000000000 +0100
@@ -1,0 +2,56 @@
+Thu Jan 30 00:46:28 UTC 2014 - cloud-devel(a)suse.de
+
+- Rebased patches:
+ + 0001-Robustify-determination-of-root-directory.patch (only offset)
+ + nova-vmware-hypervisor-version.patch (only offset)
+ + 0001-Setup-destination-disk-from-virt_disk_size.patch (only offset)
+
+-------------------------------------------------------------------
+Thu Jan 30 00:46:23 UTC 2014 - opensuse-cloud(a)opensuse.org
+
+- Update to version 2013.2.2.dev24.g05dfdb9+git.1391042783.05dfdb9:
+ + Make test_different_fname_concurrency less racy
+ + support stevedore >= 0.14
+
+-------------------------------------------------------------------
+Wed Jan 29 09:12:33 UTC 2014 - speilicke(a)suse.com
+
+- Add refresh_patches source service
+
+-------------------------------------------------------------------
+Wed Jan 29 08:16:50 UTC 2014 - vuntz(a)suse.com
+
+- Use correct group name for directory ownerships.
+- Do not make /var/{cache,lock,run}/nova readable by others.
+
+-------------------------------------------------------------------
+Tue Jan 28 13:54:32 UTC 2014 - iartarisi(a)suse.com
+
+- Added python-xml dependency. The 'nova-manage db sync' command
+ requires the minidom python module which is part of the python-xml
+ package.
+
+-------------------------------------------------------------------
+Sat Jan 25 01:22:54 UTC 2014 - opensuse-cloud(a)opensuse.org
+
+- Update to version 2013.2.2.dev21.g1a3985c+git.1390612974.1a3985c:
+ + Enforce permissions in snapshots temporary dir
+ + Make test_poll_volume_usage_with_data more reliable
+ + Re-write sqlite BigInteger mapping test
+
+-------------------------------------------------------------------
+Wed Jan 22 08:29:31 UTC 2014 - bwiedemann(a)suse.com
+
+- ensure nova-manage.log is owned by nova user (bnc#859691)
+
+-------------------------------------------------------------------
+Tue Jan 21 15:11:01 UTC 2014 - dmueller(a)suse.com
+
+- fix libvirt_vif_driver default
+
+-------------------------------------------------------------------
+Sat Jan 18 16:25:56 UTC 2014 - dmueller(a)suse.com
+
+- add 0001-Fix-for-qemu-nbd-hang.patch
+
+-------------------------------------------------------------------
New:
----
0001-Fix-for-qemu-nbd-hang.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-nova-doc.spec ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -20,7 +20,7 @@
%define majorversion 2012.2.3
Name: openstack-%{component}-doc
-Version: 2013.2.2.dev15.ge7b2e3a+git.1388687916.e7b2e3a
+Version: 2013.2.2.dev24.g05dfdb9+git.1391042783.05dfdb9
Release: 0
Summary: OpenStack Compute (Nova) - Documentation
License: Apache-2.0
@@ -60,7 +60,7 @@
This package contains documentation files for openstack-nova.
%prep
-%setup -q -n nova-2013.2.2.dev15.ge7b2e3a
+%setup -q -n nova-2013.2.2.dev24.g05dfdb9
%openstack_cleanup_prep
%build
++++++ openstack-nova.spec ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -22,7 +22,7 @@
%define username openstack-%{component}
Name: openstack-%{component}
-Version: 2013.2.2.dev15.ge7b2e3a+git.1388687916.e7b2e3a
+Version: 2013.2.2.dev24.g05dfdb9+git.1391042783.05dfdb9
Release: 0
Summary: OpenStack Compute (Nova)
License: Apache-2.0
@@ -56,6 +56,7 @@
Patch13: 0001-Setup-destination-disk-from-virt_disk_size.patch
# Backports of several patches: https://review.openstack.org/#/c/52954/ https://review.openstack.org/#/c/56075/ https://review.openstack.org/#/c/56174/ https://review.openstack.org/#/c/59243/
Patch30: neutron-performance.patch
+Patch31: 0001-Fix-for-qemu-nbd-hang.patch
BuildRequires: crudini
BuildRequires: fdupes
BuildRequires: openstack-suse-macros
@@ -136,6 +137,7 @@
Requires: python-stevedore >= 0.10
Requires: python-suds >= 0.4
Requires: python-websockify >= 0.5.1
+Requires: python-xml
%description -n python-nova
This package contains the core Python module of OpenStack Nova.
@@ -293,7 +295,7 @@
OpenStack Nova and its components.
%prep
-%setup -q -n nova-2013.2.2.dev15.ge7b2e3a
+%setup -q -n nova-2013.2.2.dev24.g05dfdb9
%patch1 -p1
%patch2 -p1
%patch7 -p1
@@ -304,6 +306,7 @@
%patch12 -p1
%patch13 -p1
%patch30 -p1
+%patch31 -p1
%openstack_cleanup_prep
%build
@@ -398,7 +401,7 @@
crudini --set %{nova_conf} DEFAULT neutron_admin_username neutron
crudini --set %{nova_conf} DEFAULT neutron_admin_password '%%SERVICE_PASSWORD%%'
crudini --set %{nova_conf} DEFAULT neutron_admin_tenant_name '%%SERVICE_TENANT_NAME%%'
-crudini --set %{nova_conf} DEFAULT libvirt_vif_driver nova.virt.libvirt.vif.LibvirtBridgeDriver
+crudini --set %{nova_conf} DEFAULT libvirt_vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver
crudini --set %{nova_conf} DEFAULT state_path /var/lib/nova
crudini --set %{nova_conf} DEFAULT lock_path %{_localstatedir}/lock/nova
crudini --set %{nova_conf} DEFAULT service_neutron_metadata_proxy True
@@ -549,16 +552,16 @@
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config %{_sysconfdir}/sudoers.d/openstack-nova
%dir %{_sysconfdir}/nova
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/cache/nova
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/cache/nova
%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/nova/api-paste.ini
%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/nova/nova.conf
%config %attr(0640, root, %{groupname}) %{_sysconfdir}/nova/policy.json
%config %{_sysconfdir}/nova/rootwrap.conf
%dir %{_sysconfdir}/nova/rootwrap.d
-%dir %attr(0755, %{username}, root) %{_localstatedir}/lib/nova
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/nova
%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/log/nova
-%ghost %attr(0755, %{username}, root) %{_localstatedir}/lock/nova
-%ghost %dir %attr(0755, %{username}, root) %{_localstatedir}/run/nova
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/lock/nova
+%ghost %dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/run/nova
%{_bindir}/nova-all
%{_bindir}/nova-clear-rabbit-queues
%{_bindir}/nova-manage
++++++ 0001-Fix-for-qemu-nbd-hang.patch ++++++
>From 2e4e10609b132a0b8ffe2271b14b42f743037134 Mon Sep 17 00:00:00 2001
From: Davanum Srinivas <dims(a)linux.vnet.ibm.com>
Date: Sun, 29 Dec 2013 19:18:04 -0500
Subject: [PATCH] Fix for qemu-nbd hang
NBD device once used seem to run into intermittent trouble when
used with mount repeatedly. Adding code to explicitly flush the
device buffers using 'blockdev --flushbufs'.
NOTE(dmllr): Also merged regression fix:
Consolidate the blockdev related filters
Seeing a "/usr/local/bin/nova-rootwrap: Unauthorized command" error
in the logs when "blockdev --flushbufs" is executed because of the
existing blockdev in compute.filters. We need to merge both into a
single RegExpFilter
Change-Id: Ic323ff00e5c23786a6e376e67a4ad08f92708aef
Closes-Bug: #973413
Partial-Bug: #1254890
Change-Id: I2b7053b9a069d6e82f6f6baf9ad480efa4388d91
---
etc/nova/rootwrap.d/compute.filters | 4 ++++
nova/tests/virt/test_virt.py | 2 ++
nova/virt/disk/mount/api.py | 4 ++++
nova/virt/disk/mount/nbd.py | 9 +++++++++
4 files changed, 19 insertions(+)
diff --git a/etc/nova/rootwrap.d/compute.filters b/etc/nova/rootwrap.d/compute.filters
index e98c3f2..87f3d37 100644
--- a/etc/nova/rootwrap.d/compute.filters
+++ b/etc/nova/rootwrap.d/compute.filters
@@ -31,6 +31,10 @@ qemu-nbd: CommandFilter, qemu-nbd, root
# nova/virt/disk/mount/loop.py: 'losetup', '--detach', device
losetup: CommandFilter, losetup, root
+# nova/virt/libvirt/utils.py: 'blockdev', '--getsize64', path
+# nova/virt/disk/mount/nbd.py: 'blockdev', '--flushbufs', device
+blockdev: RegExpFilter, blockdev, root, blockdev, (--getsize64|--flushbufs), /dev/.*
+
# nova/virt/disk/vfs/localfs.py: 'tee', canonpath
tee: CommandFilter, tee, root
diff --git a/nova/tests/virt/test_virt.py b/nova/tests/virt/test_virt.py
index 5048fc7..6fa1a63 100644
--- a/nova/tests/virt/test_virt.py
+++ b/nova/tests/virt/test_virt.py
@@ -125,12 +125,14 @@ class TestVirtDisk(test.NoDBTestCase):
disk_api.teardown_container('/mnt/nbd/nopart')
expected_commands += [
+ ('blockdev', '--flushbufs', '/dev/nbd15'),
('umount', '/dev/nbd15'),
('qemu-nbd', '-d', '/dev/nbd15'),
]
disk_api.teardown_container('/mnt/nbd/part')
expected_commands += [
+ ('blockdev', '--flushbufs', '/dev/nbd15'),
('umount', '/dev/mapper/nbd15p1'),
('kpartx', '-d', '/dev/nbd15'),
('qemu-nbd', '-d', '/dev/nbd15'),
diff --git a/nova/virt/disk/mount/api.py b/nova/virt/disk/mount/api.py
index fb0ba8d..6a545b7 100644
--- a/nova/virt/disk/mount/api.py
+++ b/nova/virt/disk/mount/api.py
@@ -205,10 +205,14 @@ class Mount(object):
"""Unmount the device from the file system."""
if not self.mounted:
return
+ self.flush_dev()
LOG.debug(_("Umount %s") % self.mapped_device)
utils.execute('umount', self.mapped_device, run_as_root=True)
self.mounted = False
+ def flush_dev(self):
+ pass
+
def do_mount(self):
"""Call the get, map and mnt operations."""
status = False
diff --git a/nova/virt/disk/mount/nbd.py b/nova/virt/disk/mount/nbd.py
index 801e25e..cc33bc6 100644
--- a/nova/virt/disk/mount/nbd.py
+++ b/nova/virt/disk/mount/nbd.py
@@ -129,3 +129,12 @@ class NbdMount(api.Mount):
utils.execute('qemu-nbd', '-d', self.device, run_as_root=True)
self.linked = False
self.device = None
+
+ def flush_dev(self):
+ """flush NBD block device buffer."""
+ # Perform an explicit BLKFLSBUF to support older qemu-nbd(s).
+ # Without this flush, when a nbd device gets re-used the
+ # qemu-nbd intermittently hangs.
+ if self.device:
+ utils.execute('blockdev', '--flushbufs',
+ self.device, run_as_root=True)
--
1.8.4.1
++++++ 0001-Robustify-determination-of-root-directory.patch ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -14,11 +14,11 @@
nova/tests/virt/xenapi/test_xenapi.py | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
-diff --git a/nova/tests/virt/xenapi/test_xenapi.py b/nova/tests/virt/xenapi/test_xenapi.py
-index a121aa2..4eb3cee 100644
---- a/nova/tests/virt/xenapi/test_xenapi.py
-+++ b/nova/tests/virt/xenapi/test_xenapi.py
-@@ -3975,16 +3975,17 @@ class XenAPISessionTestCase(test.NoDBTestCase):
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/xenapi/test_xenapi.py
+===================================================================
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/tests/virt/xenapi/test_xenapi.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/xenapi/test_xenapi.py
+@@ -4011,16 +4011,17 @@ class XenAPISessionTestCase(test.NoDBTes
def test_verify_current_version_matches(self):
session = self._get_mock_xapisession({})
@@ -43,6 +43,3 @@
for line in plugin_file:
if "PLUGIN_VERSION = " in line:
print line
---
-1.8.4.1
-
++++++ 0001-Setup-destination-disk-from-virt_disk_size.patch ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -19,11 +19,11 @@
nova/virt/libvirt/driver.py | 4 ++--
2 files changed, 17 insertions(+), 9 deletions(-)
-diff --git a/nova/tests/virt/libvirt/test_libvirt.py b/nova/tests/virt/libvirt/test_libvirt.py
-index 5aa83fa..f8babf2 100644
---- a/nova/tests/virt/libvirt/test_libvirt.py
-+++ b/nova/tests/virt/libvirt/test_libvirt.py
-@@ -3155,24 +3155,32 @@ class LibvirtConnTestCase(test.TestCase):
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/libvirt/test_libvirt.py
+===================================================================
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/tests/virt/libvirt/test_libvirt.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/libvirt/test_libvirt.py
+@@ -3032,24 +3032,32 @@ class LibvirtConnTestCase(test.TestCase)
db.instance_destroy(self.context, instance_ref['uuid'])
@@ -63,11 +63,11 @@
def test_create_images_and_backing_disk_info_none(self):
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
self.mox.StubOutWithMock(conn, '_fetch_instance_kernel_ramdisk')
-diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
-index 960e7ce..9654f62 100644
---- a/nova/virt/libvirt/driver.py
-+++ b/nova/virt/libvirt/driver.py
-@@ -4378,7 +4378,7 @@ class LibvirtDriver(driver.ComputeDriver):
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/virt/libvirt/driver.py
+===================================================================
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/virt/libvirt/driver.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/virt/libvirt/driver.py
+@@ -4201,7 +4201,7 @@ class LibvirtDriver(driver.ComputeDriver
instance_disk = os.path.join(instance_dir, base)
if not info['backing_file'] and not os.path.exists(instance_disk):
libvirt_utils.create_image(info['type'], instance_disk,
@@ -76,7 +76,7 @@
elif info['backing_file']:
# Creating backing file follows same way as spawning instances.
cache_name = os.path.basename(info['backing_file'])
-@@ -4520,7 +4520,7 @@ class LibvirtDriver(driver.ComputeDriver):
+@@ -4342,7 +4342,7 @@ class LibvirtDriver(driver.ComputeDriver
over_commit_size = int(virt_size) - dk_size
else:
backing_file = ""
@@ -85,6 +85,3 @@
over_commit_size = 0
disk_info.append({'type': disk_type,
---
-1.8.4.1
-
++++++ _service ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -3,4 +3,8 @@
<param name="url">http://tarballs.openstack.org/nova/nova-stable-havana.tar.gz</param>
<param name="email">opensuse-cloud(a)opensuse.org</param>
</service>
+
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
</services>
++++++ nova-stable-havana.tar.gz ++++++
/work/SRC/openSUSE:Factory/openstack-nova/nova-stable-havana.tar.gz /work/SRC/openSUSE:Factory/.openstack-nova.new/nova-stable-havana.tar.gz differ: char 5, line 1
++++++ nova-vmware-hypervisor-version.patch ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -1,7 +1,7 @@
-Index: nova-2013.2.1.dev42.gf7cfc1c/nova/utils.py
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/utils.py
===================================================================
---- nova-2013.2.1.dev42.gf7cfc1c.orig/nova/utils.py
-+++ nova-2013.2.1.dev42.gf7cfc1c/nova/utils.py
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/utils.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/utils.py
@@ -1165,7 +1165,7 @@ def is_none_string(val):
@@ -11,11 +11,11 @@
def is_neutron():
-Index: nova-2013.2.1.dev42.gf7cfc1c/nova/tests/virt/vmwareapi/test_vmwareapi.py
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/vmwareapi/test_vmwareapi.py
===================================================================
---- nova-2013.2.1.dev42.gf7cfc1c.orig/nova/tests/virt/vmwareapi/test_vmwareapi.py
-+++ nova-2013.2.1.dev42.gf7cfc1c/nova/tests/virt/vmwareapi/test_vmwareapi.py
-@@ -1068,7 +1068,7 @@ class VMwareAPIVCDriverTestCase(VMwareAP
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/tests/virt/vmwareapi/test_vmwareapi.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/tests/virt/vmwareapi/test_vmwareapi.py
+@@ -1074,7 +1074,7 @@ class VMwareAPIVCDriverTestCase(VMwareAP
self.assertEquals(stats['memory_mb'], 1000)
self.assertEquals(stats['memory_mb_used'], 500)
self.assertEquals(stats['hypervisor_type'], 'VMware vCenter Server')
@@ -24,10 +24,10 @@
self.assertEquals(stats['hypervisor_hostname'], self.node_name)
self.assertEquals(stats['cpu_info'], jsonutils.dumps(cpu_info))
self.assertEquals(stats['supported_instances'],
-Index: nova-2013.2.1.dev42.gf7cfc1c/nova/virt/vmwareapi/host.py
+Index: nova-2013.2.2.dev24.g05dfdb9/nova/virt/vmwareapi/host.py
===================================================================
---- nova-2013.2.1.dev42.gf7cfc1c.orig/nova/virt/vmwareapi/host.py
-+++ nova-2013.2.1.dev42.gf7cfc1c/nova/virt/vmwareapi/host.py
+--- nova-2013.2.2.dev24.g05dfdb9.orig/nova/virt/vmwareapi/host.py
++++ nova-2013.2.2.dev24.g05dfdb9/nova/virt/vmwareapi/host.py
@@ -19,6 +19,7 @@ Management class for host-related functi
"""
++++++ openstack-nova-network-init-bnc777488.patch ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -28,7 +28,7 @@
case "$1" in
start)
if [ "$DAEMON" == "api" ]; then
-@@ -33,6 +54,7 @@
+@@ -34,6 +55,7 @@
fi
echo -n "Starting nova-$DAEMON"
@@ -36,7 +36,7 @@
/sbin/startproc -q -s -u $USER /usr/bin/nova-$DAEMON --config-file=$CONFFILE
rc_status -v
;;
-@@ -40,6 +62,7 @@
+@@ -41,6 +63,7 @@
echo -n "Shutting down nova-$DAEMON"
/sbin/killproc /usr/bin/nova-$DAEMON
rc_status -v
@@ -44,4 +44,3 @@
;;
restart)
$0 stop
-Binary files a/.openstack-nova-network.un~ and b/.openstack-nova-network.un~ differ
++++++ openstack-nova.init ++++++
--- /var/tmp/diff_new_pack.87GR8I/_old 2014-01-30 17:44:45.000000000 +0100
+++ /var/tmp/diff_new_pack.87GR8I/_new 2014-01-30 17:44:45.000000000 +0100
@@ -28,6 +28,7 @@
start)
if [ "$DAEMON" == "api" ]; then
echo -n "Checking for Nova API DB Migrations"
+ test -f /var/log/nova/nova-manage.log && chown $USER. /var/log/nova/nova-manage.log
su $USER -s /bin/sh -c "/usr/bin/nova-manage db sync"
rc_status -v
fi
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package openstack-heat for openSUSE:Factory checked in at 2014-01-30 17:44:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-heat (Old)
and /work/SRC/openSUSE:Factory/.openstack-heat.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-heat"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-heat/openstack-heat.changes 2014-01-23 15:50:35.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-heat.new/openstack-heat.changes 2014-01-30 17:44:06.000000000 +0100
@@ -1,0 +2,21 @@
+Wed Jan 29 09:12:32 UTC 2014 - speilicke(a)suse.com
+
+- Add refresh_patches source service
+
+-------------------------------------------------------------------
+Tue Jan 28 19:39:35 UTC 2014 - dmueller(a)suse.com
+
+- configure signing_dir / lock_path
+
+-------------------------------------------------------------------
+Tue Jan 21 16:27:06 UTC 2014 - dmueller(a)suse.com
+
+- fix running db migrations on start
+
+-------------------------------------------------------------------
+Sat Jan 18 01:19:16 UTC 2014 - opensuse-cloud(a)opensuse.org
+
+- Update to version 2013.2.2.dev4.g4ca7941:
+ + Make LoadBalancer nested stack template configurable
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-heat-doc.spec ++++++
--- /var/tmp/diff_new_pack.Vo9xtm/_old 2014-01-30 17:44:06.000000000 +0100
+++ /var/tmp/diff_new_pack.Vo9xtm/_new 2014-01-30 17:44:06.000000000 +0100
@@ -19,7 +19,7 @@
%define component heat
Name: openstack-%{component}-doc
-Version: 2013.2.2.dev3.g2beab02
+Version: 2013.2.2.dev4.g4ca7941
Release: 0
Summary: OpenStack Orchestration (Heat) - Documentation
License: Apache-2.0
@@ -65,7 +65,7 @@
This package contains documentation files for openstack-heat.
%prep
-%setup -q -n heat-2013.2.2.dev3.g2beab02
+%setup -q -n heat-2013.2.2.dev4.g4ca7941
%openstack_cleanup_prep
%build
++++++ openstack-heat.spec ++++++
--- /var/tmp/diff_new_pack.Vo9xtm/_old 2014-01-30 17:44:06.000000000 +0100
+++ /var/tmp/diff_new_pack.Vo9xtm/_new 2014-01-30 17:44:06.000000000 +0100
@@ -21,7 +21,7 @@
%define username openstack-%{component}
Name: openstack-%{component}
-Version: 2013.2.2.dev3.g2beab02
+Version: 2013.2.2.dev4.g4ca7941
Release: 0
Summary: Openstack Orchestration (Heat)
License: Apache-2.0
@@ -149,7 +149,7 @@
This package contains testsuite files for %{name}.
%prep
-%setup -q -n heat-2013.2.2.dev3.g2beab02
+%setup -q -n heat-2013.2.2.dev4.g4ca7941
%openstack_cleanup_prep
#NOTE(saschpe): Kill heat Sphinx extension, we're only building manpages:
sed -i "s|'heat.doc.resources'||" doc/source/conf.py
@@ -162,11 +162,11 @@
python setup.py install --prefix=%{_prefix} --root=%{buildroot}
### directories
-install -d -m 755 %{buildroot}%{_localstatedir}/{cache,lib,log,run}/%{component}
-install -d -m 755 %{buildroot}%{_sysconfdir}/%{component}
+install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{component}
+install -d -m 750 %{buildroot}%{_localstatedir}/{cache,log,lock,run}/%{component}
### configuration files
-install -d %{buildroot}%{_sysconfdir}/%{component}/
+install -d -m 755 %{buildroot}%{_sysconfdir}/%{component}/
mv etc/heat/heat.conf{.sample,}
install -p -m 644 etc/heat/*.{conf,json,ini} %{buildroot}%{_sysconfdir}/%{component}/
install -d -m 755 %{buildroot}%{_sysconfdir}/%{component}/{environment.d,templates}
@@ -178,6 +178,8 @@
crudini --set %{buildroot}/etc/%{component}/heat.conf DEFAULT log_dir /var/log/heat
crudini --set %{buildroot}/etc/%{component}/heat.conf DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
crudini --set %{buildroot}/etc/%{component}/heat.conf DEFAULT sql_connection 'sqlite:///var/lib/heat/heat.db'
+crudini --set %{buildroot}/etc/%{component}/heat.conf DEFAULT lock_path %{_localstatedir}/lock/%{component}
+crudini --set %{buildroot}/etc/%{component}/heat.conf keystone_authtoken signing_dir /var/cache/%component/keystone-signing
crudini --set %{buildroot}/etc/%{component}/heat.conf keystone_authtoken admin_tenant_name '%%SERVICE_TENANT_NAME%%'
crudini --set %{buildroot}/etc/%{component}/heat.conf keystone_authtoken admin_user heat
crudini --set %{buildroot}/etc/%{component}/heat.conf keystone_authtoken admin_password '%%SERVICE_PASSWORD%%'
@@ -252,8 +254,10 @@
%files
%defattr(-,root,root)
%doc LICENSE README.rst
-%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/cache/%{component}
%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/log/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/lock/%{component}
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/%{component}
%ghost %dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/run/%{component}
%dir %{_sysconfdir}/%{component}
%config %{_sysconfdir}/%{component}/policy.json
++++++ _service ++++++
--- /var/tmp/diff_new_pack.Vo9xtm/_old 2014-01-30 17:44:06.000000000 +0100
+++ /var/tmp/diff_new_pack.Vo9xtm/_new 2014-01-30 17:44:06.000000000 +0100
@@ -4,4 +4,8 @@
<param name="email">opensuse-cloud(a)opensuse.org</param>
<param name="plain-version">True</param>
</service>
+
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
</services>
++++++ heat-stable-havana.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/ChangeLog new/heat-2013.2.2.dev4.g4ca7941/ChangeLog
--- old/heat-2013.2.2.dev3.g2beab02/ChangeLog 2013-12-20 01:43:20.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/ChangeLog 2014-01-17 07:42:17.000000000 +0100
@@ -1,3 +1,27 @@
+commit 4ca7941a6526fafc9a68e19fe327da2057b3a1be
+Author: Steven Hardy <shardy(a)redhat.com>
+Date: Fri Jan 3 16:56:58 2014 +0000
+
+ Make LoadBalancer nested stack template configurable
+
+ Reviving work originally posted by Angus Salkeld under
+ https://review.openstack.org/#/c/21405/
+
+ This is to enable the various distros to easily override the
+ hard-coded default nested template (which currently only supports
+ Fedora 17) with a template approporate to their distro, and
+ enables deployers to specify their own template (although the
+ latter use-case will probably be catered for via a provider
+ template implementation long-term).
+
+ Conflicts:
+ heat/engine/resources/loadbalancer.py
+
+ Partial-Bug: #1234375
+ Co-Authored-By: Angus Salkeld <angus(a)salkeld.id.au>
+ (cherry picked from commit 746a0ed4ad2273d0e67b896efbb6d7a69f9f4c77)
+ Change-Id: I0a4eccb23b2eebbf31b7aabf0fe85ab31f0ca971
+
commit 2beab0228ab5476b2a13992f7f3acbeb09e01719
Merge: ff69011 4394de7
Author: Jenkins <jenkins(a)review.openstack.org>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/PKG-INFO new/heat-2013.2.2.dev4.g4ca7941/PKG-INFO
--- old/heat-2013.2.2.dev3.g2beab02/PKG-INFO 2013-12-20 01:43:21.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/PKG-INFO 2014-01-17 07:42:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: heat
-Version: 2013.2.2.dev3.g2beab02
+Version: 2013.2.2.dev4.g4ca7941
Summary: OpenStack Orchestration
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/etc/heat/heat.conf.sample new/heat-2013.2.2.dev4.g4ca7941/etc/heat/heat.conf.sample
--- old/heat-2013.2.2.dev3.g2beab02/etc/heat/heat.conf.sample 2013-12-20 01:40:47.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/etc/heat/heat.conf.sample 2014-01-17 07:40:59.000000000 +0100
@@ -121,6 +121,15 @@
#
+# Options defined in heat.engine.resources.loadbalancer
+#
+
+# Custom template for the built-in loadbalancer nested stack
+# (string value)
+#loadbalancer_template=<None>
+
+
+#
# Options defined in heat.openstack.common.db.sqlalchemy.session
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/heat/engine/resources/loadbalancer.py new/heat-2013.2.2.dev4.g4ca7941/heat/engine/resources/loadbalancer.py
--- old/heat-2013.2.2.dev3.g2beab02/heat/engine/resources/loadbalancer.py 2013-12-20 01:40:47.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/heat/engine/resources/loadbalancer.py 2014-01-17 07:40:59.000000000 +0100
@@ -12,7 +12,11 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+import os
+from oslo.config import cfg
+
+from heat.common import exception
from heat.common import template_format
from heat.engine import stack_resource
from heat.engine.resources import nova_utils
@@ -21,7 +25,7 @@
logger = logging.getLogger(__name__)
-lb_template = r'''
+lb_template_default = r'''
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Built in HAProxy server",
@@ -189,11 +193,15 @@
'''
-#
-# TODO(asalkeld) the above inline template _could_ be placed in an external
-# file at the moment this is because we will probably need to implement a
-# LoadBalancer based on keepalived as well (for for ssl support).
-#
+# Allow user to provide alternative nested stack template to the above
+loadbalancer_opts = [
+ cfg.StrOpt('loadbalancer_template',
+ default=None,
+ help='Custom template for the built-in '
+ 'loadbalancer nested stack')]
+cfg.CONF.register_opts(loadbalancer_opts)
+
+
class LoadBalancer(stack_resource.StackResource):
listeners_schema = {
@@ -361,8 +369,18 @@
return '%s%s%s%s\n' % (gl, frontend, backend, '\n'.join(servers))
+ def get_parsed_template(self):
+ if cfg.CONF.loadbalancer_template:
+ with open(cfg.CONF.loadbalancer_template) as templ_fd:
+ logger.info(_('Using custom loadbalancer template %s')
+ % cfg.CONF.loadbalancer_template)
+ contents = templ_fd.read()
+ else:
+ contents = lb_template_default
+ return template_format.parse(contents)
+
def handle_create(self):
- templ = template_format.parse(lb_template)
+ templ = self.get_parsed_template()
if self.properties['Instances']:
md = templ['Resources']['LB_instance']['Metadata']
@@ -388,7 +406,7 @@
rely on the cfn-hup to reconfigure HAProxy
'''
if 'Instances' in prop_diff:
- templ = template_format.parse(lb_template)
+ templ = self.get_parsed_template()
cfg = self._haproxy_config(templ, prop_diff['Instances'])
md = self.nested()['LB_instance'].metadata
@@ -408,6 +426,11 @@
if res:
return res
+ if cfg.CONF.loadbalancer_template and \
+ not os.access(cfg.CONF.loadbalancer_template, os.R_OK):
+ msg = _('Custom LoadBalancer template can not be found')
+ raise exception.StackValidationFailed(message=msg)
+
health_chk = self.properties['HealthCheck']
if health_chk:
if float(health_chk['Interval']) < float(health_chk['Timeout']):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/heat/tests/test_loadbalancer.py new/heat-2013.2.2.dev4.g4ca7941/heat/tests/test_loadbalancer.py
--- old/heat-2013.2.2.dev3.g2beab02/heat/tests/test_loadbalancer.py 2013-12-20 01:40:40.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/heat/tests/test_loadbalancer.py 2014-01-17 07:40:59.000000000 +0100
@@ -179,8 +179,9 @@
self.assertEqual('LoadBalancer', rsrc.FnGetRefId())
- templ = template_format.parse(lb.lb_template)
+ templ = template_format.parse(lb.lb_template_default)
ha_cfg = rsrc._haproxy_config(templ, rsrc.properties['Instances'])
+
self.assertRegexpMatches(ha_cfg, 'bind \*:80')
self.assertRegexpMatches(ha_cfg, 'server server1 1\.2\.3\.4:80 '
'check inter 30s fall 5 rise 3')
@@ -228,3 +229,15 @@
msg = '%s: %r not found in %r' % (msg,
expected_regexp.pattern, text)
raise self.failureException(msg)
+
+ def test_loadbalancer_validate_badtemplate(self):
+ cfg.CONF.set_override('loadbalancer_template', '/a/noexist/x.y')
+
+ t = template_format.parse(lb_template)
+ s = utils.parse_stack(t)
+ s.store()
+
+ rsrc = lb.LoadBalancer('LoadBalancer',
+ t['Resources']['LoadBalancer'],
+ s)
+ self.assertRaises(exception.StackValidationFailed, rsrc.validate)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/heat-2013.2.2.dev3.g2beab02/heat.egg-info/PKG-INFO new/heat-2013.2.2.dev4.g4ca7941/heat.egg-info/PKG-INFO
--- old/heat-2013.2.2.dev3.g2beab02/heat.egg-info/PKG-INFO 2013-12-20 01:43:20.000000000 +0100
+++ new/heat-2013.2.2.dev4.g4ca7941/heat.egg-info/PKG-INFO 2014-01-17 07:42:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: heat
-Version: 2013.2.2.dev3.g2beab02
+Version: 2013.2.2.dev4.g4ca7941
Summary: OpenStack Orchestration
Home-page: http://www.openstack.org/
Author: OpenStack
++++++ openstack-heat.init ++++++
--- /var/tmp/diff_new_pack.Vo9xtm/_old 2014-01-30 17:44:07.000000000 +0100
+++ /var/tmp/diff_new_pack.Vo9xtm/_new 2014-01-30 17:44:07.000000000 +0100
@@ -26,7 +26,7 @@
start)
if [ "$DAEMON" = "engine" ]; then
echo -n "Checking for DB Migrations"
- su $USER -s /bin/sh -c "heat-manage db_sync"
+ su $USER -s /bin/sh -c "heat-manage --config-file $CONFIGFILE db_sync"
rc_status -v
fi
echo -n "Starting heat-$DAEMON"
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package openstack-glance for openSUSE:Factory checked in at 2014-01-30 17:43:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-glance (Old)
and /work/SRC/openSUSE:Factory/.openstack-glance.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-glance"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-glance/openstack-glance.changes 2014-01-23 15:50:33.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-glance.new/openstack-glance.changes 2014-01-30 17:43:31.000000000 +0100
@@ -1,0 +2,19 @@
+Wed Jan 29 09:12:31 UTC 2014 - speilicke(a)suse.com
+
+- Add refresh_patches source service
+
+-------------------------------------------------------------------
+Wed Jan 29 08:14:09 UTC 2014 - vuntz(a)suse.com
+
+- Package /var/lock/glance, and set lock_path in config files.
+- Use correct group name for directory ownerships.
+- Do not make /var/run/glance readable by others.
+
+-------------------------------------------------------------------
+Tue Jan 28 07:12:07 UTC 2014 - vuntz(a)suse.com
+
+- Backport some rbd-related fix:
+ + 0001-RBD-add-now-returns-correct-size-if-given-zero.patch
+ Returns the correct size when adding image
+
+-------------------------------------------------------------------
New:
----
0001-RBD-add-now-returns-correct-size-if-given-zero.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-glance.spec ++++++
--- /var/tmp/diff_new_pack.ncaBPs/_old 2014-01-30 17:43:32.000000000 +0100
+++ /var/tmp/diff_new_pack.ncaBPs/_new 2014-01-30 17:43:32.000000000 +0100
@@ -33,6 +33,8 @@
Source5: %{name}.logrotate
# PATCH-FIX-OPENSUSE: speilicke(a)suse.com -- Don't test qpid functionality, we have no packages
Patch2: glance-dont-test-qpid.patch
+# https://review.openstack.org/#/c/59079/ https://bugs.launchpad.net/glance/+bug/1256044
+Patch3: 0001-RBD-add-now-returns-correct-size-if-given-zero.patch
BuildRequires: crudini
BuildRequires: fdupes
BuildRequires: openstack-suse-macros
@@ -139,6 +141,7 @@
%prep
%setup -q -n glance-2013.2.2.dev1.g5cd7a22
%patch2 -p1
+%patch3 -p1
%openstack_cleanup_prep
sed -i "s|^#!.*||" tools/migrate_image_owners.py # Fix non-executable script warning
# NOTE(saschpe): The following test contains a pesky (commented) race condition
@@ -156,6 +159,7 @@
install -d -m 755 %{buildroot}%{_localstatedir}/lib/glance
install -d -m 755 %{buildroot}%{_localstatedir}/lib/glance/images
install -d -m 755 %{buildroot}%{_localstatedir}/log/glance
+install -d -m 755 %{buildroot}%{_localstatedir}/lock/glance
install -d -m 755 %{buildroot}%{_localstatedir}/run/glance
### configuration files
@@ -192,7 +196,9 @@
done
#NOTE(saschpe): Needed for (at least) ceilometer to collect image counters stats:
crudini --set %{buildroot}%{_sysconfdir}/glance/glance-api.conf DEFAULT notifier_strategy rabbit
+crudini --set %{buildroot}%{_sysconfdir}/glance/glance-api.conf DEFAULT lock_path /var/lock/glance
crudini --set %{buildroot}%{_sysconfdir}/glance/glance-api.conf keystone_authtoken signing_dir /var/cache/%component/keystone-signing
+crudini --set %{buildroot}%{_sysconfdir}/glance/glance-scrubber.conf DEFAULT lock_path /var/lock/glance
### authentication cache dir
mkdir -p %{buildroot}%{_localstatedir}/cache/glance/api
@@ -217,10 +223,10 @@
%defattr(-,root,root)
%doc LICENSE README.rst
%dir %{_sysconfdir}/glance
-%config(noreplace) %attr(0640, root, %{username}) %{_sysconfdir}/glance/glance-api.conf
-%config(noreplace) %attr(0640, root, %{username}) %{_sysconfdir}/glance/glance-cache.conf
-%config(noreplace) %attr(0640, root, %{username}) %{_sysconfdir}/glance/glance-registry.conf
-%config(noreplace) %attr(0640, root, %{username}) %{_sysconfdir}/glance/glance-scrubber.conf
+%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/glance/glance-api.conf
+%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/glance/glance-cache.conf
+%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/glance/glance-registry.conf
+%config(noreplace) %attr(0640, root, %{groupname}) %{_sysconfdir}/glance/glance-scrubber.conf
%config %{_sysconfdir}/glance/glance-api-paste.ini
%config %{_sysconfdir}/glance/glance-registry-paste.ini
%config %{_sysconfdir}/glance/logging.cnf.sample
@@ -228,10 +234,11 @@
%config %{_sysconfdir}/glance/property-protections.conf.sample
%config %{_sysconfdir}/glance/schema-image.json
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/lib/glance
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/lib/glance/images
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/log/glance
-%ghost %dir %attr(0755, %{username}, root) %{_localstatedir}/run/glance
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/glance
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/glance/images
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/log/glance
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/lock/glance
+%ghost %dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/run/glance
%{_initddir}/openstack-glance-api
%{_initddir}/openstack-glance-registry
%{_sbindir}/rcopenstack-glance-api
@@ -255,7 +262,7 @@
%{_mandir}/man1/glance-manage.1%{?ext_man}
%{_mandir}/man1/glance-registry.1%{?ext_man}
%{_mandir}/man1/glance-scrubber.1%{?ext_man}
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/cache/glance
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/cache/glance
%files -n python-glance
%defattr(-,root,root,-)
++++++ 0001-RBD-add-now-returns-correct-size-if-given-zero.patch ++++++
>From 2119227b965eaea5062e544612fd986c51564ace Mon Sep 17 00:00:00 2001
From: Edward Hope-Morley <edward.hope-morley(a)canonical.com>
Date: Thu, 28 Nov 2013 17:11:41 +0000
Subject: [PATCH] RBD add() now returns correct size if given zero
If the RBD store add() is provided with image_size of zero, it
will calculate based on data provided and return the new size.
Change-Id: I06375bcfef7808905b466432e5ca100c942297eb
Closes-bug: 1256044
---
glance/store/rbd.py | 9 ++++++++-
glance/tests/unit/test_rbd_store.py | 27 +++++++++++++++++++++++----
2 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/glance/store/rbd.py b/glance/store/rbd.py
index c53df5f..ecfd733 100644
--- a/glance/store/rbd.py
+++ b/glance/store/rbd.py
@@ -327,6 +327,7 @@ class Store(glance.store.base.Store):
_('RBD image %s already exists') % image_id)
try:
with rbd.Image(ioctx, image_name) as image:
+ bytes_written = 0
offset = 0
chunks = utils.chunkreadable(image_file,
self.chunk_size)
@@ -336,7 +337,9 @@ class Store(glance.store.base.Store):
# be slower so setting a higher chunk size may
# speed things up a bit.
if image_size == 0:
- length = offset + len(chunk)
+ chunk_length = len(chunk)
+ length = offset + chunk_length
+ bytes_written += chunk_length
LOG.debug(_("resizing image to %s KiB") %
(length / 1024))
image.resize(length)
@@ -356,6 +359,10 @@ class Store(glance.store.base.Store):
raise exc
+ # Make sure we send back the image size whether provided or inferred.
+ if image_size == 0:
+ image_size = bytes_written
+
return (loc.get_uri(), image_size, checksum.hexdigest(), {})
def delete(self, location):
diff --git a/glance/tests/unit/test_rbd_store.py b/glance/tests/unit/test_rbd_store.py
index 23e055f..7eb799b 100644
--- a/glance/tests/unit/test_rbd_store.py
+++ b/glance/tests/unit/test_rbd_store.py
@@ -14,8 +14,12 @@
# under the License.
import StringIO
+
+import mock
+
from glance.common import exception
from glance.common import utils
+from glance.openstack.common import units
import glance.store.rbd as rbd_store
from glance.store.location import Location
from glance.store.rbd import StoreLocation
@@ -37,6 +41,20 @@ class TestStore(base.StoreClearingUnitTest):
self.store_specs = {'image': 'fake_image',
'snapshot': 'fake_snapshot'}
self.location = StoreLocation(self.store_specs)
+ # Provide enough data to get more than one chunk iteration.
+ self.data_len = 3 * units.Ki
+ self.data_iter = StringIO.StringIO('*' * self.data_len)
+
+ def test_add_w_image_size_zero(self):
+ """Assert that correct size is returned even though 0 was provided."""
+ self.store.chunk_size = units.Ki
+ with mock.patch.object(rbd_store.rbd.Image, 'resize') as resize:
+ with mock.patch.object(rbd_store.rbd.Image, 'write') as write:
+ ret = self.store.add('fake_image_id', self.data_iter, 0)
+
+ resize.assert_called()
+ write.assert_called()
+ self.assertEquals(ret[1], self.data_len)
def test_add_w_rbd_image_exception(self):
def _fake_create_image(*args, **kwargs):
@@ -54,7 +72,7 @@ class TestStore(base.StoreClearingUnitTest):
self.stubs.Set(mock_rbd.Image, '__enter__', _fake_enter)
self.assertRaises(exception.NotFound, self.store.add,
- 'fake_image_id', StringIO.StringIO('xx'), 2)
+ 'fake_image_id', self.data_iter, self.data_len)
self.called_commands_expected = ['create', 'delete']
@@ -65,7 +83,7 @@ class TestStore(base.StoreClearingUnitTest):
self.stubs.Set(self.store, '_create_image', _fake_create_image)
self.assertRaises(exception.Duplicate, self.store.add,
- 'fake_image_id', StringIO.StringIO('xx'), 2)
+ 'fake_image_id', self.data_iter, self.data_len)
self.called_commands_expected = ['create']
def test_delete(self):
@@ -136,9 +154,10 @@ class TestStore(base.StoreClearingUnitTest):
self.stubs.Set(mock_rbd.Image, 'write', _fake_write)
self.stubs.Set(self.store, '_delete_image', _fake_delete_image)
- data = utils.LimitingReader(StringIO.StringIO('abcd'), 4)
+ data = utils.LimitingReader(self.data_iter, self.data_len)
self.assertRaises(exception.ImageSizeLimitExceeded,
- self.store.add, 'fake_image_id', data, 5)
+ self.store.add, 'fake_image_id',
+ data, self.data_len + 1)
self.called_commands_expected = ['write', 'delete']
--
1.8.4
++++++ _service ++++++
--- /var/tmp/diff_new_pack.ncaBPs/_old 2014-01-30 17:43:32.000000000 +0100
+++ /var/tmp/diff_new_pack.ncaBPs/_new 2014-01-30 17:43:32.000000000 +0100
@@ -5,4 +5,8 @@
<param name="email">opensuse-cloud(a)opensuse.org</param>
<param name="plain-version">True</param>
</service>
+
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
</services>
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package openstack-cinder for openSUSE:Factory checked in at 2014-01-30 17:42:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-cinder (Old)
and /work/SRC/openSUSE:Factory/.openstack-cinder.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-cinder"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-cinder/openstack-cinder.changes 2014-01-23 15:50:28.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-cinder.new/openstack-cinder.changes 2014-01-30 17:42:14.000000000 +0100
@@ -1,0 +2,42 @@
+Thu Jan 30 10:23:19 UTC 2014 - speilicke(a)suse.com
+
+- Rebased patches:
+ + 0001-NetApp-fix-for-vsadmin-role-failure-for-ssc.patch (only offset)
+ + 0001-Robustify-skipactivation-detection.patch (manually)
+- Update to version 2013.2.2.dev16.g77fade5:
+ + NetApp fix free space as zero during 1st vol stats update
+
+-------------------------------------------------------------------
+Wed Jan 29 09:12:31 UTC 2014 - speilicke(a)suse.com
+
+- Add refresh_patches source service
+
+-------------------------------------------------------------------
+Tue Jan 28 19:33:04 UTC 2014 - dmueller(a)suse.com
+
+- configure lock_path
+
+-------------------------------------------------------------------
+Sun Jan 26 00:56:37 UTC 2014 - opensuse-cloud(a)opensuse.org
+
+- Update to version 2013.2.2.dev14.g3d967e0:
+ + NFS/GlusterFS: Skip incorrectly formatted shares
+ + Fixed a problem in iSCSI multipath
+
+-------------------------------------------------------------------
+Tue Jan 21 21:07:25 UTC 2014 - vuntz(a)suse.com
+
+- Only chown /var/log/cinder/cinder-manage.log if the file exists.
+
+-------------------------------------------------------------------
+Tue Jan 21 15:05:54 UTC 2014 - bwiedemann(a)suse.com
+
+- fix ownership of /var/log/cinder/cinder-manage.log (bnc#859691)
+
+-------------------------------------------------------------------
+Fri Jan 17 16:13:00 UTC 2014 - dmueller(a)suse.com
+
+- add 0001-NetApp-fix-for-vsadmin-role-failure-for-ssc.patch
+- add 0001-Deactivate-LV-before-removing.patch
+
+-------------------------------------------------------------------
New:
----
0001-Deactivate-LV-before-removing.patch
0001-NetApp-fix-for-vsadmin-role-failure-for-ssc.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-cinder-doc.spec ++++++
--- /var/tmp/diff_new_pack.pSXLFE/_old 2014-01-30 17:42:15.000000000 +0100
+++ /var/tmp/diff_new_pack.pSXLFE/_new 2014-01-30 17:42:15.000000000 +0100
@@ -19,7 +19,7 @@
%define component cinder
Name: openstack-%{component}-doc
-Version: 2013.2.2.dev11.gec8ce6c
+Version: 2013.2.2.dev16.g77fade5
Release: 0
Summary: OpenStack Block Storage (Cinder) - Documentation
License: Apache-2.0
@@ -62,7 +62,7 @@
This package contains documentation files for %{name}.
%prep
-%setup -q -n cinder-2013.2.2.dev11.gec8ce6c
+%setup -q -n cinder-2013.2.2.dev16.g77fade5
%openstack_cleanup_prep
%build
++++++ openstack-cinder.spec ++++++
--- /var/tmp/diff_new_pack.pSXLFE/_old 2014-01-30 17:42:15.000000000 +0100
+++ /var/tmp/diff_new_pack.pSXLFE/_new 2014-01-30 17:42:15.000000000 +0100
@@ -21,7 +21,7 @@
%define username openstack-%{component}
Name: openstack-%{component}
-Version: 2013.2.2.dev11.gec8ce6c
+Version: 2013.2.2.dev16.g77fade5
Release: 0
Summary: OpenStack Block Storage (Cinder)
License: Apache-2.0
@@ -34,6 +34,8 @@
Patch0: 0001-Avoid-using-GREENDNS-due-to-dnspython.patch
Patch1: 0001-Set-useful-vendor-product-id-in-Cinder-ISCSI-exports.patch
Patch2: 0001-Robustify-skipactivation-detection.patch
+Patch3: 0001-NetApp-fix-for-vsadmin-role-failure-for-ssc.patch
+Patch4: 0001-Deactivate-LV-before-removing.patch
BuildRequires: fdupes
BuildRequires: openstack-suse-macros
BuildRequires: openstack-suse-sudo
@@ -186,10 +188,12 @@
functionality of OpenStack Cinder.
%prep
-%setup -q -n cinder-2013.2.2.dev11.gec8ce6c
+%setup -q -n cinder-2013.2.2.dev16.g77fade5
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%openstack_cleanup_prep
%build
@@ -201,7 +205,7 @@
### directories
install -d -m 755 %{buildroot}%{_localstatedir}/{lib,log}/%{component}
-install -d -m 750 %{buildroot}%{_localstatedir}/{cache,run}/%{component}
+install -d -m 750 %{buildroot}%{_localstatedir}/{lock,cache,run}/%{component}
install -d -m 755 %{buildroot}%{_sysconfdir}/%{component}
### configuration files
@@ -254,6 +258,7 @@
#NOTE(saschpe): Can't hurt to set the default volume_group, only the LVM driver has a it otherwise:
crudini --set %{cinder_conf} DEFAULT volume_group cinder-volumes
crudini --set %{cinder_conf} keystone_authtoken signing_dir /var/cache/%component/keystone-signing
+crudini --set %{cinder_conf} DEFAULT lock_path /var/lock/%component
%pre
getent group %{groupname} >/dev/null || groupadd -r %{groupname}
@@ -304,6 +309,7 @@
%doc LICENSE README.rst
%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/%{component}
%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/cache/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/lock/%{component}
%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/log/%{component}
%ghost %dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/run/%{component}
%dir %{_sysconfdir}/%{component}
++++++ 0001-Deactivate-LV-before-removing.patch ++++++
>From 1f213111cf5be34b0aed52e7713f2be27ef6b5ea Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dirk(a)dmllr.de>
Date: Fri, 17 Jan 2014 16:45:32 +0100
Subject: [PATCH] Deactivate LV before removing
With certain versions of LVM2, removing an active LV can end up with
Unable to deactivate open XXX
libdevmapper exiting with 1 device(s) still suspended.
which causes any lvm command afterwards to hang endlessly on
trying to access the suspended volume. This seems to be caused
by a race with udev, so lets be conservative and do the deactivation,
then wait for udev and then finish the removal.
Closes-Bug: #1270192
Change-Id: I4703133180567090878ea5047dd29d9f97ad85ab
---
cinder/brick/local_dev/lvm.py | 48 +++++++++++++++++++++++++++++--------------
1 file changed, 33 insertions(+), 15 deletions(-)
Index: cinder-2013.2.2.dev11.gec8ce6c/cinder/brick/local_dev/lvm.py
===================================================================
--- cinder-2013.2.2.dev11.gec8ce6c.orig/cinder/brick/local_dev/lvm.py
+++ cinder-2013.2.2.dev11.gec8ce6c/cinder/brick/local_dev/lvm.py
@@ -511,26 +511,44 @@ class LVM(executor.Executor):
:param name: Name of LV to delete
"""
+
try:
- self._execute('lvremove',
- '-f',
- '%s/%s' % (self.vg_name, name),
- root_helper=self._root_helper, run_as_root=True)
- except putils.ProcessExecutionError as err:
- mesg = (_('Error reported running lvremove: CMD: %(command)s, '
- 'RESPONSE: %(response)s') %
- {'command': err.cmd, 'response': err.stderr})
- LOG.error(mesg)
+ need_force_remove = False
+ # LV removal seems to be a race with udev in
+ # some cases (see LP #1270192), so we do it in several steps:
+
+ # - Deactivate the LV/Snapshot, which triggers udev events
+ # - Wait for udev to finish its job with udevadmn settle
+ # - Remove the LV
+
+ try:
+ self._execute('lvchange', '-y', '-an',
+ '%s/%s' % (self.vg_name, name),
+ root_helper=self._root_helper, run_as_root=True)
+ except putils.ProcessExecutionError as err:
+ mesg = (_('Error during lvchange -an: CMD: %(command)s, '
+ 'RESPONSE: %(response)s') %
+ {'command': err.cmd, 'response': err.stderr})
+ LOG.debug(mesg)
+ need_force_remove = True
- LOG.warning(_('Attempting udev settle and retry of lvremove...'))
self._execute('udevadm', 'settle',
- root_helper=self._root_helper,
- run_as_root=True)
+ root_helper=self._root_helper, run_as_root=True,
+ check_exit_code=False)
+
+ cmd = ['lvremove', ]
- self._execute('lvremove',
- '-f',
- '%s/%s' % (self.vg_name, name),
+ # if deactivation failed, use the --force, lvm!
+ if need_force_remove:
+ cmd.append('-f')
+ cmd.append('%s/%s' % (self.vg_name, name))
+ self._execute(*cmd,
root_helper=self._root_helper, run_as_root=True)
+ except putils.ProcessExecutionError as err:
+ mesg = (_('Error during delete: CMD: %(command)s, '
+ 'RESPONSE: %(response)s') %
+ {'command': err.cmd, 'response': err.stderr})
+ LOG.info(mesg)
def revert(self, snapshot_name):
"""Revert an LV from snapshot.
++++++ 0001-NetApp-fix-for-vsadmin-role-failure-for-ssc.patch ++++++
++++ 662 lines (skipped)
++++++ 0001-Robustify-skipactivation-detection.patch ++++++
--- /var/tmp/diff_new_pack.pSXLFE/_old 2014-01-30 17:42:15.000000000 +0100
+++ /var/tmp/diff_new_pack.pSXLFE/_new 2014-01-30 17:42:15.000000000 +0100
@@ -12,11 +12,9 @@
cinder/brick/local_dev/lvm.py | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
-diff --git a/cinder/brick/local_dev/lvm.py b/cinder/brick/local_dev/lvm.py
-index 0037632..35a8fa7 100644
--- a/cinder/brick/local_dev/lvm.py
+++ b/cinder/brick/local_dev/lvm.py
-@@ -226,11 +226,16 @@ class LVM(executor.Executor):
+@@ -186,11 +186,16 @@ class LVM(executor.Executor):
if self._supports_lvchange_ignoreskipactivation is not None:
return self._supports_lvchange_ignoreskipactivation
@@ -36,6 +34,3 @@
lines = out.split('\n')
for line in lines:
if '-K' in line and '--ignoreactivationskip' in line:
---
-1.8.4.1
-
++++++ _service ++++++
--- /var/tmp/diff_new_pack.pSXLFE/_old 2014-01-30 17:42:15.000000000 +0100
+++ /var/tmp/diff_new_pack.pSXLFE/_new 2014-01-30 17:42:15.000000000 +0100
@@ -5,4 +5,8 @@
<param name="email">opensuse-cloud(a)opensuse.org</param>
<param name="plain-version">True</param>
</service>
+
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
</services>
++++++ cinder-stable-havana.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/ChangeLog new/cinder-2013.2.2.dev16.g77fade5/ChangeLog
--- old/cinder-2013.2.2.dev11.gec8ce6c/ChangeLog 2013-12-31 20:46:02.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/ChangeLog 2014-01-29 21:08:23.000000000 +0100
@@ -1,3 +1,47 @@
+commit 77fade503a4bc2ff45f43855d03125a361a43ffb
+Merge: 3d967e0 c07d60f
+Author: Jenkins <jenkins(a)review.openstack.org>
+Date: Wed Jan 29 20:06:01 2014 +0000
+
+ Merge "NetApp fix free space as zero during 1st vol stats update" into stable/havana
+
+commit 3d967e05ea082cbb755586e07e21f2b070d0bdb3
+Merge: 6687331 24f976c
+Author: Jenkins <jenkins(a)review.openstack.org>
+Date: Sat Jan 25 23:36:45 2014 +0000
+
+ Merge "Fixed a problem in iSCSI multipath" into stable/havana
+
+commit 24f976cd13d884e2c8604a5ace7ed4ed05334107
+Author: Xing Yang <xing.yang(a)emc.com>
+Date: Mon Jan 6 17:16:05 2014 -0500
+
+ Fixed a problem in iSCSI multipath
+
+ Multipathing during copy image to volume and copy volume to image
+ operations doesn't work properly if there are different targets
+ associated with different portals for a mulitpath device.
+
+ Change-Id: I65c93f3788020c944db0d3a55063a6415554ff11
+ Closes-Bug: #1266048
+ (cherry picked from commit 3e4f554f614c8cb6d5f014c72f3c635184a4dec2)
+
+commit 66873311e510aea5c349e64f7f9e9e94a662a453
+Author: Eric Harney <eharney(a)redhat.com>
+Date: Mon Dec 9 15:34:39 2013 -0500
+
+ NFS/GlusterFS: Skip incorrectly formatted shares
+
+ Shares should always be of the form address:/volume. If they are
+ not (i.e., are missing the '/'), then skip them and issue a warning
+ message. This will prevent us from sending incorrect connection_info
+ dicts to Nova.
+
+ Closes-Bug: #1267253
+
+ Change-Id: Ic40cd0cdc862b44b0a7d3e5b1d7c4fee8ea1b28d
+ (cherry picked from commit 21ebf2898e2f5fc8127b7a3bdc9743c49933f952)
+
commit ec8ce6cdf236154b4ba0b392202fa7bd7c7c9b61
Merge: 5228001 1b437d9
Author: Jenkins <jenkins(a)review.openstack.org>
@@ -436,6 +480,23 @@
Partial-Bug: #1197612
(cherry picked from commit bb2daca2864a5607635a3aa37f3874fdda22797b)
+commit c07d60fe456484b45cff543cfd08391b0e3ba9f2
+Author: Navneet Singh <singn(a)netapp.com>
+Date: Mon Nov 18 02:38:07 2013 +0530
+
+ NetApp fix free space as zero during 1st vol stats update
+
+ NetApp clustered ontap drivers report space as zero
+ till first 60 seconds of driver start. This is causing
+ discomfort for some performance sensitive deployements.
+ This was due to async nature of the NetApp stats collection job.
+ Job is changed to sync at driver start to improve customer
+ experience.
+
+ Change-Id: I7d5cbf590897a0d328ece3a60516c92c0ad0ee7f
+ Closes-bug: #1253660
+ (cherry picked from commit 585f34ff7798ad271121d432e0cae8820bc54389)
+
commit ad05556a2f3acf11e7ab633fa59bf23a6cad11da
Merge: 5f7d263 fb8db56
Author: Jenkins <jenkins(a)review.openstack.org>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/PKG-INFO new/cinder-2013.2.2.dev16.g77fade5/PKG-INFO
--- old/cinder-2013.2.2.dev11.gec8ce6c/PKG-INFO 2013-12-31 20:46:03.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/PKG-INFO 2014-01-29 21:08:24.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: cinder
-Version: 2013.2.2.dev11.gec8ce6c
+Version: 2013.2.2.dev16.g77fade5
Summary: OpenStack Block Storage
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/brick/initiator/connector.py new/cinder-2013.2.2.dev16.g77fade5/cinder/brick/initiator/connector.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/brick/initiator/connector.py 2013-12-31 20:44:23.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/brick/initiator/connector.py 2014-01-29 21:06:39.000000000 +0100
@@ -202,9 +202,10 @@
check_exit_code=[0, 255])[0] \
or ""
- for ip in self._get_target_portals_from_iscsiadm_output(out):
+ for ip, iqn in self._get_target_portals_from_iscsiadm_output(out):
props = connection_properties.copy()
props['target_portal'] = ip
+ props['target_iqn'] = iqn
self._connect_to_iscsi_portal(props)
self._rescan_iscsi()
@@ -256,12 +257,20 @@
target_iqn - iSCSI Qualified Name
target_lun - LUN id of the volume
"""
+ # Moved _rescan_iscsi and _rescan_multipath
+ # from _disconnect_volume_multipath_iscsi to here.
+ # Otherwise, if we do rescan after _linuxscsi.remove_multipath_device
+ # but before logging out, the removed devices under /dev/disk/by-path
+ # will reappear after rescan.
+ self._rescan_iscsi()
host_device = self._get_device_path(connection_properties)
multipath_device = None
if self.use_multipath:
+ self._rescan_multipath()
multipath_device = self._get_multipath_device_name(host_device)
if multipath_device:
- self._linuxscsi.remove_multipath_device(multipath_device)
+ device_realpath = os.path.realpath(host_device)
+ self._linuxscsi.remove_multipath_device(device_realpath)
return self._disconnect_volume_multipath_iscsi(
connection_properties, multipath_device)
@@ -326,14 +335,13 @@
**kwargs)
def _get_target_portals_from_iscsiadm_output(self, output):
- return [line.split()[0] for line in output.splitlines()]
+ # return both portals and iqns
+ return [line.split() for line in output.splitlines()]
def _disconnect_volume_multipath_iscsi(self, connection_properties,
multipath_name):
"""This removes a multipath device and it's LUNs."""
LOG.debug("Disconnect multipath device %s" % multipath_name)
- self._rescan_iscsi()
- self._rescan_multipath()
block_devices = self.driver.get_all_block_devices()
devices = []
for dev in block_devices:
@@ -344,17 +352,42 @@
if mpdev:
devices.append(mpdev)
+ # Do a discovery to find all targets.
+ # Targets for multiple paths for the same multipath device
+ # may not be the same.
+ out = self._run_iscsiadm_bare(['-m',
+ 'discovery',
+ '-t',
+ 'sendtargets',
+ '-p',
+ connection_properties['target_portal']],
+ check_exit_code=[0, 255])[0] \
+ or ""
+
+ ips_iqns = self._get_target_portals_from_iscsiadm_output(out)
+
if not devices:
# disconnect if no other multipath devices
- self._disconnect_mpath(connection_properties)
+ self._disconnect_mpath(connection_properties, ips_iqns)
return
+ # Get a target for all other multipath devices
other_iqns = [self._get_multipath_iqn(device)
for device in devices]
+ # Get all the targets for the current multipath device
+ current_iqns = [iqn for ip, iqn in ips_iqns]
- if connection_properties['target_iqn'] not in other_iqns:
+ in_use = False
+ for current in current_iqns:
+ if current in other_iqns:
+ in_use = True
+ break
+
+ # If no other multipath device attached has the same iqn
+ # as the current device
+ if not in_use:
# disconnect if no other multipath devices with same iqn
- self._disconnect_mpath(connection_properties)
+ self._disconnect_mpath(connection_properties, ips_iqns)
return
# else do not disconnect iscsi portals,
@@ -449,13 +482,11 @@
return []
return [entry for entry in devices if entry.startswith("ip-")]
- def _disconnect_mpath(self, connection_properties):
- entries = self._get_iscsi_devices()
- ips = [ip.split("-")[1] for ip in entries
- if connection_properties['target_iqn'] in ip]
- for ip in ips:
+ def _disconnect_mpath(self, connection_properties, ips_iqns):
+ for ip, iqn in ips_iqns:
props = connection_properties.copy()
props['target_portal'] = ip
+ props['target_iqn'] = iqn
self._disconnect_from_iscsi_portal(props)
self._rescan_multipath()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/brick/test_brick_connector.py new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/brick/test_brick_connector.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/brick/test_brick_connector.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/brick/test_brick_connector.py 2014-01-29 21:06:39.000000000 +0100
@@ -186,6 +186,8 @@
('iscsiadm -m node -T %s -p %s --op update'
' -n node.startup -v automatic' % (iqn,
location)),
+ ('iscsiadm -m node --rescan'),
+ ('iscsiadm -m session --rescan'),
('tee -a /sys/block/sdb/device/delete'),
('iscsiadm -m node -T %s -p %s --op update'
' -n node.startup -v manual' % (iqn, location)),
@@ -199,7 +201,6 @@
self.assertEqual(expected_commands, self.cmds)
def test_connect_volume_with_multipath(self):
-
location = '10.0.2.15:3260'
name = 'volume-00000001'
iqn = 'iqn.2010-10.org.openstack:%s' % name
@@ -213,7 +214,7 @@
lambda *args, **kwargs: "%s %s" % (location, iqn))
self.stubs.Set(self.connector_with_multipath,
'_get_target_portals_from_iscsiadm_output',
- lambda x: [location])
+ lambda x: [[location, iqn]])
self.stubs.Set(self.connector_with_multipath,
'_connect_to_iscsi_portal',
lambda x: None)
@@ -250,7 +251,9 @@
test_output = '''10.15.84.19:3260 iqn.1992-08.com.netapp:sn.33615311
10.15.85.19:3260 iqn.1992-08.com.netapp:sn.33615311'''
res = connector._get_target_portals_from_iscsiadm_output(test_output)
- expected = ['10.15.84.19:3260', '10.15.85.19:3260']
+ ip_iqn1 = ['10.15.84.19:3260', 'iqn.1992-08.com.netapp:sn.33615311']
+ ip_iqn2 = ['10.15.85.19:3260', 'iqn.1992-08.com.netapp:sn.33615311']
+ expected = [ip_iqn1, ip_iqn2]
self.assertEqual(expected, res)
def test_get_multipath_device_name(self):
@@ -288,12 +291,16 @@
def test_disconnect_volume_multipath_iscsi(self):
result = []
- def fake_disconnect_mpath(properties):
+ def fake_disconnect_from_iscsi_portal(properties):
result.append(properties)
iqn1 = 'iqn.2013-01.ro.com.netapp:node.netapp01'
iqn2 = 'iqn.2013-01.ro.com.netapp:node.netapp02'
iqns = [iqn1, iqn2]
- dev = ('ip-10.0.0.1:3260-iscsi-%s-lun-0' % iqn1)
+ portal = '10.0.0.1:3260'
+ dev = ('ip-%s-iscsi-%s-lun-0' % (portal, iqn1))
+ self.stubs.Set(self.connector,
+ '_get_target_portals_from_iscsiadm_output',
+ lambda x: [[portal, iqn1]])
self.stubs.Set(self.connector, '_rescan_iscsi', lambda: None)
self.stubs.Set(self.connector, '_rescan_multipath', lambda: None)
self.stubs.Set(self.connector.driver, 'get_all_block_devices',
@@ -302,27 +309,37 @@
lambda x: '/dev/mapper/md-3')
self.stubs.Set(self.connector, '_get_multipath_iqn',
lambda x: iqns.pop())
- self.stubs.Set(self.connector, '_disconnect_mpath',
- fake_disconnect_mpath)
- fake_property = {'target_iqn': "You'll-never-find-this-iqn"}
+ self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal',
+ fake_disconnect_from_iscsi_portal)
+ fake_property = {'target_portal': portal,
+ 'target_iqn': iqn1}
self.connector._disconnect_volume_multipath_iscsi(fake_property,
'fake/multipath')
- self.assertEqual([fake_property], result)
+ # Target in use by other mp devices, don't disconnect
+ self.assertEqual([], result)
def test_disconnect_volume_multipath_iscsi_without_other_mp_devices(self):
result = []
- def fake_disconnect_mpath(properties):
+ def fake_disconnect_from_iscsi_portal(properties):
result.append(properties)
+ portal = '10.0.2.15:3260'
+ name = 'volume-00000001'
+ iqn = 'iqn.2010-10.org.openstack:%s' % name
+ self.stubs.Set(self.connector,
+ '_get_target_portals_from_iscsiadm_output',
+ lambda x: [[portal, iqn]])
self.stubs.Set(self.connector, '_rescan_iscsi', lambda: None)
self.stubs.Set(self.connector, '_rescan_multipath', lambda: None)
self.stubs.Set(self.connector.driver, 'get_all_block_devices',
lambda: [])
- self.stubs.Set(self.connector, '_disconnect_mpath',
- fake_disconnect_mpath)
- fake_property = {'target_iqn': "You'll-never-find-this-iqn"}
+ self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal',
+ fake_disconnect_from_iscsi_portal)
+ fake_property = {'target_portal': portal,
+ 'target_iqn': iqn}
self.connector._disconnect_volume_multipath_iscsi(fake_property,
'fake/multipath')
+ # Target not in use by other mp devices, disconnect
self.assertEqual([fake_property], result)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_glusterfs.py new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_glusterfs.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_glusterfs.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_glusterfs.py 2014-01-29 21:06:39.000000000 +0100
@@ -289,6 +289,7 @@
config_data.append(self.TEST_EXPORT1)
config_data.append('#' + self.TEST_EXPORT2)
config_data.append(self.TEST_EXPORT2 + ' ' + self.TEST_EXPORT2_OPTIONS)
+ config_data.append('broken:share_format')
config_data.append('')
drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\
AndReturn(config_data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_netapp.py new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_netapp.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_netapp.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_netapp.py 2014-01-29 21:06:39.000000000 +0100
@@ -545,7 +545,8 @@
def _custom_setup(self):
self.stubs.Set(
- ssc_utils, 'refresh_cluster_ssc', lambda a, b, c: None)
+ ssc_utils, 'refresh_cluster_ssc',
+ lambda a, b, c, synchronous: None)
configuration = self._set_config(create_configuration())
driver = common.NetAppDriver(configuration=configuration)
self.stubs.Set(httplib, 'HTTPConnection',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_nfs.py new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_nfs.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/tests/test_nfs.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/tests/test_nfs.py 2014-01-29 21:06:39.000000000 +0100
@@ -280,6 +280,7 @@
config_data.append('')
config_data.append(self.TEST_NFS_EXPORT2 + ' ' +
self.TEST_NFS_EXPORT2_OPTIONS)
+ config_data.append('broken:share_format')
drv._read_config_file(self.TEST_SHARES_CONFIG_FILE).\
AndReturn(config_data)
mox.ReplayAll()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/iscsi.py new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/iscsi.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/iscsi.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/iscsi.py 2014-01-29 21:06:39.000000000 +0100
@@ -781,7 +781,6 @@
self.client.set_api_version(major, minor)
self.ssc_vols = None
self.stale_vols = set()
- ssc_utils.refresh_cluster_ssc(self, self.client, self.vserver)
def _create_lun_on_eligible_vol(self, name, size, metadata,
extra_specs=None):
@@ -1057,6 +1056,9 @@
def _update_cluster_vol_stats(self, data):
"""Updates vol stats with cluster config."""
+ sync = True if self.ssc_vols is None else False
+ ssc_utils.refresh_cluster_ssc(self, self.client, self.vserver,
+ synchronous=sync)
if self.ssc_vols:
data['netapp_mirrored'] = 'true'\
if self.ssc_vols['mirrored'] else 'false'
@@ -1090,7 +1092,6 @@
data['free_capacity_gb'] = 0
else:
LOG.warn(_("Cluster ssc is not updated. No volume stats found."))
- ssc_utils.refresh_cluster_ssc(self, self.client, self.vserver)
@utils.synchronized('update_stale')
def _update_stale_vols(self, volume=None, reset=False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/nfs.py new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/nfs.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/nfs.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/nfs.py 2014-01-29 21:06:39.000000000 +0100
@@ -714,7 +714,6 @@
self.ssc_enabled = True
LOG.info(_("Shares on vserver %s will only"
" be used for provisioning.") % (self.vserver))
- ssc_utils.refresh_cluster_ssc(self, self._client, self.vserver)
else:
self.ssc_enabled = False
LOG.warn(_("No vserver set in config. SSC will be disabled."))
@@ -881,6 +880,12 @@
def _update_cluster_vol_stats(self, data):
"""Updates vol stats with cluster config."""
+ if self.ssc_enabled:
+ sync = True if self.ssc_vols is None else False
+ ssc_utils.refresh_cluster_ssc(self, self._client, self.vserver,
+ synchronous=sync)
+ else:
+ LOG.warn(_("No vserver set in config. SSC will be disabled."))
if self.ssc_vols:
data['netapp_mirrored'] = 'true'\
if self.ssc_vols['mirrored'] else 'false'
@@ -914,10 +919,6 @@
elif self.ssc_enabled:
LOG.warn(_("No cluster ssc stats found."
" Wait for next volume stats update."))
- if self.ssc_enabled:
- ssc_utils.refresh_cluster_ssc(self, self._client, self.vserver)
- else:
- LOG.warn(_("No vserver set in config. SSC will be disabled."))
@utils.synchronized('update_stale')
def _update_stale_vols(self, volume=None, reset=False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/ssc_utils.py new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/ssc_utils.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/netapp/ssc_utils.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/netapp/ssc_utils.py 2014-01-29 21:06:39.000000000 +0100
@@ -434,6 +434,9 @@
vol_set = ssc_vols_copy[k]
vol_set.discard(vol)
backend.refresh_ssc_vols(ssc_vols_copy)
+ LOG.info(_('Successfully completed stale refresh job for'
+ ' %(server)s and vserver %(vs)s')
+ % {'server': na_server, 'vs': vserver})
refresh_stale_ssc()
finally:
@@ -464,13 +467,16 @@
ssc_vols = get_cluster_ssc(na_server, vserver)
backend.refresh_ssc_vols(ssc_vols)
backend.ssc_run_time = timeutils.utcnow()
+ LOG.info(_('Successfully completed ssc job for %(server)s'
+ ' and vserver %(vs)s')
+ % {'server': na_server, 'vs': vserver})
get_latest_ssc()
finally:
na_utils.set_safe_attr(backend, 'ssc_job_running', False)
-def refresh_cluster_ssc(backend, na_server, vserver):
+def refresh_cluster_ssc(backend, na_server, vserver, synchronous=False):
"""Refresh cluster ssc for backend."""
if not isinstance(backend, driver.VolumeDriver):
raise exception.InvalidInput(reason=_("Backend not a VolumeDriver."))
@@ -483,17 +489,23 @@
elif (getattr(backend, 'ssc_run_time', None) is None or
(backend.ssc_run_time and
timeutils.is_newer_than(backend.ssc_run_time, delta_secs))):
- t = Timer(0, get_cluster_latest_ssc,
- args=[backend, na_server, vserver])
- t.start()
+ if synchronous:
+ get_cluster_latest_ssc(backend, na_server, vserver)
+ else:
+ t = Timer(0, get_cluster_latest_ssc,
+ args=[backend, na_server, vserver])
+ t.start()
elif getattr(backend, 'refresh_stale_running', None):
LOG.warn(_('refresh stale ssc job in progress. Returning... '))
return
else:
if backend.stale_vols:
- t = Timer(0, refresh_cluster_stale_ssc,
- args=[backend, na_server, vserver])
- t.start()
+ if synchronous:
+ refresh_cluster_stale_ssc(backend, na_server, vserver)
+ else:
+ t = Timer(0, refresh_cluster_stale_ssc,
+ args=[backend, na_server, vserver])
+ t.start()
def get_volumes_for_specs(ssc_vols, specs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/nfs.py new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/nfs.py
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder/volume/drivers/nfs.py 2013-12-31 20:44:24.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder/volume/drivers/nfs.py 2014-01-29 21:06:39.000000000 +0100
@@ -17,6 +17,7 @@
import errno
import os
+import re
from oslo.config import cfg
@@ -294,6 +295,11 @@
share_address = share_info[0].strip().decode('unicode_escape')
share_opts = share_info[1].strip() if len(share_info) > 1 else None
+ if not re.match(r'.+:/.+', share_address):
+ LOG.warn("Share %s ignored due to invalid format. Must be of "
+ "form address:/export." % share_address)
+ continue
+
self.shares[share_address] = share_opts
LOG.debug("shares loaded: %s", self.shares)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cinder-2013.2.2.dev11.gec8ce6c/cinder.egg-info/PKG-INFO new/cinder-2013.2.2.dev16.g77fade5/cinder.egg-info/PKG-INFO
--- old/cinder-2013.2.2.dev11.gec8ce6c/cinder.egg-info/PKG-INFO 2013-12-31 20:46:03.000000000 +0100
+++ new/cinder-2013.2.2.dev16.g77fade5/cinder.egg-info/PKG-INFO 2014-01-29 21:08:23.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: cinder
-Version: 2013.2.2.dev11.gec8ce6c
+Version: 2013.2.2.dev16.g77fade5
Summary: OpenStack Block Storage
Home-page: http://www.openstack.org/
Author: OpenStack
++++++ openstack-cinder.init ++++++
--- /var/tmp/diff_new_pack.pSXLFE/_old 2014-01-30 17:42:16.000000000 +0100
+++ /var/tmp/diff_new_pack.pSXLFE/_new 2014-01-30 17:42:16.000000000 +0100
@@ -25,6 +25,7 @@
case "$1" in
start)
echo -n "Checking for DB Migrations"
+ test -f /var/log/cinder/cinder-manage.log && chown $USER. /var/log/cinder/cinder-manage.log
su $USER -s /bin/sh -c "/usr/bin/cinder-manage db sync"
rc_status -v
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package openstack-ceilometer for openSUSE:Factory checked in at 2014-01-30 17:41:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-ceilometer (Old)
and /work/SRC/openSUSE:Factory/.openstack-ceilometer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-ceilometer"
Changes:
--------
--- /work/SRC/openSUSE:Factory/openstack-ceilometer/openstack-ceilometer.changes 2014-01-23 15:50:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-ceilometer.new/openstack-ceilometer.changes 2014-01-30 17:41:20.000000000 +0100
@@ -1,0 +2,43 @@
+Thu Jan 30 01:18:33 UTC 2014 - cloud-devel(a)suse.de
+
+- Rebased patches:
+ + 0001-Skip-tests-against-real-DB.patch (only offset)
+
+-------------------------------------------------------------------
+Wed Jan 29 09:12:30 UTC 2014 - speilicke(a)suse.com
+
+- Add refresh_patches source service
+
+-------------------------------------------------------------------
+Wed Jan 29 08:13:29 UTC 2014 - vuntz(a)suse.com
+
+- Use correct group name for directory ownerships.
+
+-------------------------------------------------------------------
+Tue Jan 28 19:39:35 UTC 2014 - dmueller(a)suse.com
+
+- configure signing_dir / lock_path
+
+-------------------------------------------------------------------
+Tue Jan 28 15:13:19 UTC 2014 - dmueller(a)suse.com
+
+- add 0001-enable-sql-metadata-query.patch
+
+-------------------------------------------------------------------
+Mon Jan 27 17:08:06 UTC 2014 - vuntz(a)suse.com
+
+- Fix ownership of /var/log/ceilometer/ceilometer-dbsync.log
+ (bnc#860598).
+
+-------------------------------------------------------------------
+Mon Jan 27 10:26:51 UTC 2014 - dmueller(a)suse.com
+
+- fix typo in logrotate script
+
+-------------------------------------------------------------------
+Sun Jan 19 01:28:56 UTC 2014 - opensuse-cloud(a)opensuse.org
+
+- Update to version 2013.2.2.dev6.g16eb199:
+ + Update ceilometer.conf.sample
+
+-------------------------------------------------------------------
New:
----
0001-enable-sql-metadata-query.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-ceilometer-doc.spec ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:20.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:20.000000000 +0100
@@ -19,7 +19,7 @@
%define component ceilometer
Name: openstack-%{component}-doc
-Version: 2013.2.2.dev5.gef71dc6
+Version: 2013.2.2.dev6.g16eb199
Release: 0
Summary: OpenStack Metering (Ceilometer) - Documentation
License: Apache-2.0
@@ -70,7 +70,7 @@
This package contains documentation files for openstack-ceilometer.
%prep
-%setup -q -n ceilometer-2013.2.2.dev5.gef71dc6
+%setup -q -n ceilometer-2013.2.2.dev6.g16eb199
%openstack_cleanup_prep
sed -i "s|'sphinxcontrib.autohttp.flask',||" doc/source/conf.py
++++++ openstack-ceilometer.spec ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:20.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:20.000000000 +0100
@@ -22,7 +22,7 @@
%define username openstack-%{component}
Name: openstack-%{component}
-Version: 2013.2.2.dev5.gef71dc6
+Version: 2013.2.2.dev6.g16eb199
Release: 0
Summary: OpenStack Metering (Ceilometer)
License: Apache-2.0
@@ -35,6 +35,7 @@
Source13: openstack-ceilometer-polkit.rules
# PATCH-FIX-SUSE: Skip testing against DB2 and Mongodb
Patch0: 0001-Skip-tests-against-real-DB.patch
+Patch1: 0001-enable-sql-metadata-query.patch
BuildRequires: crudini
BuildRequires: fdupes
BuildRequires: openstack-suse-macros
@@ -188,8 +189,9 @@
This package contains testsuite files for %{name}.
%prep
-%setup -q -n ceilometer-2013.2.2.dev5.gef71dc6
+%setup -q -n ceilometer-2013.2.2.dev6.g16eb199
%patch0 -p1
+%patch1 -p1
%openstack_cleanup_prep
%build
@@ -203,9 +205,8 @@
### directories
#TODO: Check what we need:
-install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{component}
-install -d -m 755 %{buildroot}%{_localstatedir}/log/%{component}
-install -d -m 755 %{buildroot}%{_localstatedir}/run/%{component}
+install -d -m 755 %{buildroot}%{_localstatedir}/{lib,log}/%{component}
+install -d -m 750 %{buildroot}%{_localstatedir}/{lock,cache,run}/%{component}
### configuration files
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{component}
@@ -249,6 +250,8 @@
crudini --set %{ceilometer_conf} DEFAULT verbose True
#NOTE(saschpe): Don't set 'log_file', each ceilometer deamon will create it's own if only 'log_dir' is set:
crudini --set %{ceilometer_conf} DEFAULT log_dir %{_localstatedir}/log/%{component}
+crudini --set %{ceilometer_conf} DEFAULT lock_path %{_localstatedir}/lock/%{component}
+crudini --set %{ceilometer_conf} keystone_authtoken signing_dir /var/cache/%component/keystone-signing
crudini --set %{ceilometer_conf} DEFAULT policy_file %{_sysconfdir}/%{component}/policy.json
### authentication cache dir
@@ -330,10 +333,11 @@
%config %{_sysconfdir}/%{component}/sources.json
%config %{_sysconfdir}/%{component}/policy.json
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
-%dir %attr(0755, %{username}, %{username}) %{_localstatedir}/lib/%{component}
-%dir %attr(0750, %{username}, %{username}) %{_localstatedir}/log/%{component}
-%dir %attr(0700, %{username}, %{username}) %{_localstatedir}/cache/ceilometer
-%ghost %dir %attr(0755, %{username}, root) %{_localstatedir}/run/%{component}
+%dir %attr(0755, %{username}, %{groupname}) %{_localstatedir}/lib/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/cache/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/lock/%{component}
+%dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/log/%{component}
+%ghost %dir %attr(0750, %{username}, %{groupname}) %{_localstatedir}/run/%{component}
%files -n python-ceilometer
%defattr(-,root,root,-)
++++++ 0001-Skip-tests-against-real-DB.patch ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:20.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:20.000000000 +0100
@@ -10,11 +10,11 @@
tests/api/v2/test_statistics_scenarios.py | 5 +----
3 files changed, 2 insertions(+), 17 deletions(-)
-Index: ceilometer-2014.1.a67.g125411e/ceilometer/tests/db.py
+Index: ceilometer-2013.2.2.dev6.g16eb199/ceilometer/tests/db.py
===================================================================
---- ceilometer-2014.1.a67.g125411e.orig/ceilometer/tests/db.py
-+++ ceilometer-2014.1.a67.g125411e/ceilometer/tests/db.py
-@@ -84,7 +84,4 @@ class MixinTestsWithBackendScenarios(obj
+--- ceilometer-2013.2.2.dev6.g16eb199.orig/ceilometer/tests/db.py
++++ ceilometer-2013.2.2.dev6.g16eb199/ceilometer/tests/db.py
+@@ -83,7 +83,4 @@ class MixinTestsWithBackendScenarios(obj
scenarios = [
('sqlalchemy', dict(database_connection='sqlite://')),
@@ -22,10 +22,10 @@
- ('hbase', dict(database_connection='hbase://__test__')),
- ('db2', dict(database_connection=DB2FakeConnectionUrl())),
]
-Index: ceilometer-2014.1.a67.g125411e/tests/api/v2/test_app.py
+Index: ceilometer-2013.2.2.dev6.g16eb199/tests/api/v2/test_app.py
===================================================================
---- ceilometer-2014.1.a67.g125411e.orig/tests/api/v2/test_app.py
-+++ ceilometer-2014.1.a67.g125411e/tests/api/v2/test_app.py
+--- ceilometer-2013.2.2.dev6.g16eb199.orig/tests/api/v2/test_app.py
++++ ceilometer-2013.2.2.dev6.g16eb199/tests/api/v2/test_app.py
@@ -66,19 +66,10 @@ class TestApp(base.TestCase):
os.unlink(tmpfile)
@@ -47,10 +47,10 @@
no_lang_translated_error = 'No lang translated error'
en_US_translated_error = 'en-US translated error'
-Index: ceilometer-2014.1.a67.g125411e/tests/api/v2/test_statistics_scenarios.py
+Index: ceilometer-2013.2.2.dev6.g16eb199/tests/api/v2/test_statistics_scenarios.py
===================================================================
---- ceilometer-2014.1.a67.g125411e.orig/tests/api/v2/test_statistics_scenarios.py
-+++ ceilometer-2014.1.a67.g125411e/tests/api/v2/test_statistics_scenarios.py
+--- ceilometer-2013.2.2.dev6.g16eb199.orig/tests/api/v2/test_statistics_scenarios.py
++++ ceilometer-2013.2.2.dev6.g16eb199/tests/api/v2/test_statistics_scenarios.py
@@ -1234,10 +1234,7 @@ class TestGroupBySource(base.FunctionalT
# tests.
++++++ 0001-enable-sql-metadata-query.patch ++++++
>From 02d93a52fa68d2ed75f0fbb1cb00f9aebaa5069c Mon Sep 17 00:00:00 2001
From: Gordon Chung <chungg(a)ca.ibm.com>
Date: Wed, 2 Oct 2013 15:45:26 -0400
Subject: [PATCH] enable sql metadata query
explode metadata key/values to their own tables/rows (based on type).
build a key string using dot notation similar to other nosql db
and filter based on that.
Blueprint: sqlalchemy-metadata-query
Related-Bug: #1093625
Change-Id: I2076e67b79448f98124a57b62b5bfed7aa8ae2ad
(cherry picked from commit 1570462507eae1478123de25dbadc64b09c82af3)
---
ceilometer/storage/impl_sqlalchemy.py | 79 +++++++++++++++++++---
.../versions/020_add_metadata_tables.py | 78 +++++++++++++++++++++
ceilometer/storage/sqlalchemy/models.py | 48 +++++++++++++
ceilometer/utils.py | 24 +++++++
doc/source/install/dbreco.rst | 4 +-
tests/api/v2/test_list_meters_scenarios.py | 1 +
tests/test_utils.py | 16 +++++
7 files changed, 239 insertions(+), 11 deletions(-)
create mode 100644 ceilometer/storage/sqlalchemy/migrate_repo/versions/020_add_metadata_tables.py
diff --git a/ceilometer/storage/impl_sqlalchemy.py b/ceilometer/storage/impl_sqlalchemy.py
index 08ffb47..9ede0f3 100644
--- a/ceilometer/storage/impl_sqlalchemy.py
+++ b/ceilometer/storage/impl_sqlalchemy.py
@@ -18,10 +18,12 @@
"""SQLAlchemy storage backend."""
from __future__ import absolute_import
-
import datetime
import operator
import os
+import types
+
+from sqlalchemy import and_
from sqlalchemy import func
from sqlalchemy import desc
from sqlalchemy.orm import aliased
@@ -39,6 +41,10 @@ from ceilometer.storage.sqlalchemy.models import AlarmChange
from ceilometer.storage.sqlalchemy.models import Base
from ceilometer.storage.sqlalchemy.models import Event
from ceilometer.storage.sqlalchemy.models import Meter
+from ceilometer.storage.sqlalchemy.models import MetaBool
+from ceilometer.storage.sqlalchemy.models import MetaFloat
+from ceilometer.storage.sqlalchemy.models import MetaInt
+from ceilometer.storage.sqlalchemy.models import MetaText
from ceilometer.storage.sqlalchemy.models import Project
from ceilometer.storage.sqlalchemy.models import Resource
from ceilometer.storage.sqlalchemy.models import Source
@@ -100,7 +106,40 @@ class SQLAlchemyStorage(base.StorageEngine):
return Connection(conf)
-def make_query_from_filter(query, sample_filter, require_meter=True):
+META_TYPE_MAP = {bool: MetaBool,
+ str: MetaText,
+ unicode: MetaText,
+ types.NoneType: MetaText,
+ int: MetaInt,
+ long: MetaInt,
+ float: MetaFloat}
+
+
+def apply_metaquery_filter(session, query, metaquery):
+ """Apply provided metaquery filter to existing query.
+
+ :param session: session used for original query
+ :param query: Query instance
+ :param metaquery: dict with metadata to match on.
+ """
+
+ for k, v in metaquery.iteritems():
+ key = k[9:] # strip out 'metadata.' prefix
+ try:
+ _model = META_TYPE_MAP[type(v)]
+ except KeyError:
+ raise NotImplementedError(_('Query on %(key)s is of %(value)s '
+ 'type and is not supported') %
+ {"key": k, "value": type(v)})
+ else:
+ meta_q = session.query(_model).\
+ filter(and_(_model.meta_key == key,
+ _model.value == v)).subquery()
+ query = query.filter_by(id=meta_q.c.id)
+ return query
+
+
+def make_query_from_filter(session, query, sample_filter, require_meter=True):
"""Return a query dictionary based on the settings in the filter.
:param filter: SampleFilter instance
@@ -134,7 +173,8 @@ def make_query_from_filter(query, sample_filter, require_meter=True):
query = query.filter_by(resource_id=sample_filter.resource)
if sample_filter.metaquery:
- raise NotImplementedError(_('metaquery not implemented'))
+ query = apply_metaquery_filter(session, query,
+ sample_filter.metaquery)
return query
@@ -229,6 +269,21 @@ class Connection(base.Connection):
meter.message_signature = data['message_signature']
meter.message_id = data['message_id']
+ if rmetadata:
+ if isinstance(rmetadata, dict):
+ for key, v in utils.dict_to_keyval(rmetadata):
+ try:
+ _model = META_TYPE_MAP[type(v)]
+ except KeyError:
+ LOG.warn(_("Unknown metadata type. Key (%s) will "
+ "not be queryable."), key)
+ else:
+ session.add(_model(id=meter.id,
+ meta_key=key,
+ value=v))
+
+ session.flush()
+
@staticmethod
def clear_expired_metering_data(ttl):
"""Clear expired data from the backend storage system according to the
@@ -306,8 +361,6 @@ class Connection(base.Connection):
# just fail.
if pagination:
raise NotImplementedError(_('Pagination not implemented'))
- if metaquery:
- raise NotImplementedError(_('metaquery not implemented'))
# (thomasm) We need to get the max timestamp first, since that's the
# most accurate. We also need to filter down in the subquery to
@@ -331,6 +384,11 @@ class Connection(base.Connection):
ts_subquery = ts_subquery.filter(
Meter.sources.any(id=source))
+ if metaquery:
+ ts_subquery = apply_metaquery_filter(session,
+ ts_subquery,
+ metaquery)
+
# Here we limit the samples being used to a specific time period,
# if requested.
if start_timestamp:
@@ -397,8 +455,6 @@ class Connection(base.Connection):
if pagination:
raise NotImplementedError(_('Pagination not implemented'))
- if metaquery:
- raise NotImplementedError(_('metaquery not implemented'))
session = sqlalchemy_session.get_session()
@@ -422,6 +478,11 @@ class Connection(base.Connection):
query_meter = session.query(Meter).\
join(subquery_meter, Meter.id == subquery_meter.c.id)
+ if metaquery:
+ query_meter = apply_metaquery_filter(session,
+ query_meter,
+ metaquery)
+
alias_meter = aliased(Meter, query_meter.subquery())
query = session.query(Resource, alias_meter).join(
alias_meter, Resource.id == alias_meter.resource_id)
@@ -457,7 +518,7 @@ class Connection(base.Connection):
session = sqlalchemy_session.get_session()
query = session.query(Meter)
- query = make_query_from_filter(query, sample_filter,
+ query = make_query_from_filter(session, query, sample_filter,
require_meter=False)
if limit:
query = query.limit(limit)
@@ -509,7 +570,7 @@ class Connection(base.Connection):
if groupby:
query = query.group_by(*group_attributes)
- return make_query_from_filter(query, sample_filter)
+ return make_query_from_filter(session, query, sample_filter)
@staticmethod
def _stats_result_to_model(result, period, period_start,
diff --git a/ceilometer/storage/sqlalchemy/migrate_repo/versions/020_add_metadata_tables.py b/ceilometer/storage/sqlalchemy/migrate_repo/versions/020_add_metadata_tables.py
new file mode 100644
index 0000000..085cd6b
--- /dev/null
+++ b/ceilometer/storage/sqlalchemy/migrate_repo/versions/020_add_metadata_tables.py
@@ -0,0 +1,78 @@
+#
+# Copyright 2013 OpenStack Foundation
+# 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.
+import json
+
+from sqlalchemy import Boolean
+from sqlalchemy import Column
+from sqlalchemy import Float
+from sqlalchemy import ForeignKey
+from sqlalchemy import Integer
+from sqlalchemy import MetaData
+from sqlalchemy import String
+from sqlalchemy import Table
+from sqlalchemy import Text
+from sqlalchemy.sql import select
+
+from ceilometer import utils
+
+tables = [('metadata_text', Text, True),
+ ('metadata_bool', Boolean, False),
+ ('metadata_int', Integer, False),
+ ('metadata_float', Float, False)]
+
+
+def upgrade(migrate_engine):
+ meta = MetaData(bind=migrate_engine)
+ meter = Table('meter', meta, autoload=True)
+ meta_tables = {}
+ for t_name, t_type, t_nullable in tables:
+ meta_tables[t_name] = Table(
+ t_name, meta,
+ Column('id', Integer, ForeignKey('meter.id'), primary_key=True),
+ Column('meta_key', String(255), index=True, primary_key=True),
+ Column('value', t_type, nullable=t_nullable),
+ mysql_engine='InnoDB',
+ mysql_charset='utf8',
+ )
+ meta_tables[t_name].create()
+
+ for row in select([meter]).execute():
+ meter_id = row['id']
+ rmeta = json.loads(row['resource_metadata'])
+ for key, v in utils.dict_to_keyval(rmeta):
+ if isinstance(v, basestring) or v is None:
+ meta_tables['metadata_text'].insert().values(id=meter_id,
+ meta_key=key,
+ value=v)
+ elif isinstance(v, bool):
+ meta_tables['metadata_bool'].insert().values(id=meter_id,
+ meta_key=key,
+ value=v)
+ elif isinstance(v, (int, long)):
+ meta_tables['metadata_int'].insert().values(id=meter_id,
+ meta_key=key,
+ value=v)
+ elif isinstance(v, float):
+ meta_tables['metadata_float'].insert().values(id=meter_id,
+ meta_key=key,
+ value=v)
+
+
+def downgrade(migrate_engine):
+ meta = MetaData(bind=migrate_engine)
+ for t in tables:
+ table = Table(t[0], meta, autoload=True)
+ table.drop()
diff --git a/ceilometer/storage/sqlalchemy/models.py b/ceilometer/storage/sqlalchemy/models.py
index 45f98cb..8f890b3 100644
--- a/ceilometer/storage/sqlalchemy/models.py
+++ b/ceilometer/storage/sqlalchemy/models.py
@@ -141,6 +141,54 @@ class Source(Base):
id = Column(String(255), primary_key=True)
+class MetaText(Base):
+ """Metering text metadata."""
+
+ __tablename__ = 'metadata_text'
+ __table_args__ = (
+ Index('ix_meta_text_key', 'meta_key'),
+ )
+ id = Column(Integer, ForeignKey('meter.id'), primary_key=True)
+ meta_key = Column(String(255), primary_key=True)
+ value = Column(Text)
+
+
+class MetaBool(Base):
+ """Metering boolean metadata."""
+
+ __tablename__ = 'metadata_bool'
+ __table_args__ = (
+ Index('ix_meta_bool_key', 'meta_key'),
+ )
+ id = Column(Integer, ForeignKey('meter.id'), primary_key=True)
+ meta_key = Column(String(255), primary_key=True)
+ value = Column(Boolean)
+
+
+class MetaInt(Base):
+ """Metering integer metadata."""
+
+ __tablename__ = 'metadata_int'
+ __table_args__ = (
+ Index('ix_meta_int_key', 'meta_key'),
+ )
+ id = Column(Integer, ForeignKey('meter.id'), primary_key=True)
+ meta_key = Column(String(255), primary_key=True)
+ value = Column(Integer, default=False)
+
+
+class MetaFloat(Base):
+ """Metering float metadata."""
+
+ __tablename__ = 'metadata_float'
+ __table_args__ = (
+ Index('ix_meta_float_key', 'meta_key'),
+ )
+ id = Column(Integer, ForeignKey('meter.id'), primary_key=True)
+ meta_key = Column(String(255), primary_key=True)
+ value = Column(Float, default=False)
+
+
class Meter(Base):
"""Metering data."""
diff --git a/ceilometer/utils.py b/ceilometer/utils.py
index 07faf29..0bc7dfc 100644
--- a/ceilometer/utils.py
+++ b/ceilometer/utils.py
@@ -90,3 +90,27 @@ def stringify_timestamps(data):
isa_timestamp = lambda v: isinstance(v, datetime.datetime)
return dict((k, v.isoformat() if isa_timestamp(v) else v)
for (k, v) in data.iteritems())
+
+
+def dict_to_keyval(value, key_base=None):
+ """Expand a given dict to its corresponding key-value pairs.
+
+ Generated keys are fully qualified, delimited using dot notation.
+ ie. key = 'key.child_key.grandchild_key[0]'
+ """
+ val_iter, key_func = None, None
+ if isinstance(value, dict):
+ val_iter = value.iteritems()
+ key_func = lambda k: key_base + '.' + k if key_base else k
+ elif isinstance(value, (tuple, list)):
+ val_iter = enumerate(value)
+ key_func = lambda k: key_base + '[%d]' % k
+
+ if val_iter:
+ for k, v in val_iter:
+ key_gen = key_func(k)
+ if isinstance(v, dict) or isinstance(v, (tuple, list)):
+ for key_gen, v in dict_to_keyval(v, key_gen):
+ yield key_gen, v
+ else:
+ yield key_gen, v
diff --git a/doc/source/install/dbreco.rst b/doc/source/install/dbreco.rst
index fe60329..249cdc7 100644
--- a/doc/source/install/dbreco.rst
+++ b/doc/source/install/dbreco.rst
@@ -43,8 +43,8 @@ The following is a table indicating the status of each database drivers:
Driver API querying API statistics Alarms
================== ============================= =================== ======
MongoDB Yes Yes Yes
-MySQL Yes, except metadata querying Yes Yes
-PostgreSQL Yes, except metadata querying Yes Yes
+MySQL Yes Yes Yes
+PostgreSQL Yes Yes Yes
HBase Yes Yes, except groupby No
DB2 Yes Yes No
================== ============================= =================== ======
diff --git a/tests/api/v2/test_list_meters_scenarios.py b/tests/api/v2/test_list_meters_scenarios.py
index fe2c5b7..3381e15 100644
--- a/tests/api/v2/test_list_meters_scenarios.py
+++ b/tests/api/v2/test_list_meters_scenarios.py
@@ -252,6 +252,7 @@ class TestListMeters(FunctionalTest,
set(['meter.mine']))
self.assertEqual(set(r['resource_metadata']['is_public'] for r
in data), set(['False']))
+ # FIXME(gordc): verify no false positive (Bug#1236496)
def test_list_meters_query_string_metadata(self):
data = self.get_json('/meters/meter.test',
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 90e06d6..ec60542 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -84,3 +84,19 @@ class TestUtils(tests_base.TestCase):
def test_decimal_to_dt_with_none_parameter(self):
self.assertEqual(utils.decimal_to_dt(None), None)
+
+ def test_dict_to_kv(self):
+ data = {'a': 'A',
+ 'b': 'B',
+ 'nested': {'a': 'A',
+ 'b': 'B',
+ },
+ 'nested2': [{'c': 'A'}, {'c': 'B'}]
+ }
+ pairs = list(utils.dict_to_keyval(data))
+ self.assertEqual(pairs, [('a', 'A'),
+ ('b', 'B'),
+ ('nested2[0].c', 'A'),
+ ('nested2[1].c', 'B'),
+ ('nested.a', 'A'),
+ ('nested.b', 'B')])
--
1.8.4.1
++++++ _service ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:21.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:21.000000000 +0100
@@ -4,4 +4,8 @@
<param name="email">opensuse-cloud(a)opensuse.org</param>
<param name="plain-version">True</param>
</service>
+
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
</services>
++++++ ceilometer-stable-havana.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceilometer-2013.2.2.dev5.gef71dc6/AUTHORS new/ceilometer-2013.2.2.dev6.g16eb199/AUTHORS
--- old/ceilometer-2013.2.2.dev5.gef71dc6/AUTHORS 2014-01-11 15:17:37.000000000 +0100
+++ new/ceilometer-2013.2.2.dev6.g16eb199/AUTHORS 2014-01-18 11:10:06.000000000 +0100
@@ -35,6 +35,7 @@
Guangyu Suo <guangyu(a)unitedstack.com>
Haomeng, Wang <whaom(a)cn.ibm.com>
Harri Hämäläinen <hhamalai(a)iki.fi>
+Ildiko Vancsa <ildiko.vancsa(a)ericsson.com>
Ionuț Arțăriși <iartarisi(a)suse.cz>
Jake Liu <jake(a)unitedstack.com>
Jason Zhang <zhesen(a)nttmcl.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceilometer-2013.2.2.dev5.gef71dc6/ChangeLog new/ceilometer-2013.2.2.dev6.g16eb199/ChangeLog
--- old/ceilometer-2013.2.2.dev5.gef71dc6/ChangeLog 2014-01-11 15:17:37.000000000 +0100
+++ new/ceilometer-2013.2.2.dev6.g16eb199/ChangeLog 2014-01-18 11:10:05.000000000 +0100
@@ -1,3 +1,15 @@
+commit 16eb199124e73df48a15193ad31b681e382becc8
+Author: Ildiko Vancsa <ildiko.vancsa(a)ericsson.com>
+Date: Mon Jan 13 20:26:07 2014 +0100
+
+ Update ceilometer.conf.sample
+
+ Due to python-keystoneclient update.
+
+ Change-Id: Ie683d3fbf8086d2be6a2fbe19374b8d31abaf976
+ Closes-bug: #1268614
+ (cherry picked from commit 76c06e03eaef0c66689c62aece24baee0b372644)
+
commit ef71dc6a11ab624e756bfb61ec974e9f6096bc30
Author: Eoghan Glynn <eglynn(a)redhat.com>
Date: Thu Jan 9 11:11:43 2014 +0000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceilometer-2013.2.2.dev5.gef71dc6/PKG-INFO new/ceilometer-2013.2.2.dev6.g16eb199/PKG-INFO
--- old/ceilometer-2013.2.2.dev5.gef71dc6/PKG-INFO 2014-01-11 15:17:37.000000000 +0100
+++ new/ceilometer-2013.2.2.dev6.g16eb199/PKG-INFO 2014-01-18 11:10:07.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ceilometer
-Version: 2013.2.2.dev5.gef71dc6
+Version: 2013.2.2.dev6.g16eb199
Summary: OpenStack Metering
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceilometer-2013.2.2.dev5.gef71dc6/ceilometer.egg-info/PKG-INFO new/ceilometer-2013.2.2.dev6.g16eb199/ceilometer.egg-info/PKG-INFO
--- old/ceilometer-2013.2.2.dev5.gef71dc6/ceilometer.egg-info/PKG-INFO 2014-01-11 15:17:37.000000000 +0100
+++ new/ceilometer-2013.2.2.dev6.g16eb199/ceilometer.egg-info/PKG-INFO 2014-01-18 11:10:06.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ceilometer
-Version: 2013.2.2.dev5.gef71dc6
+Version: 2013.2.2.dev6.g16eb199
Summary: OpenStack Metering
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceilometer-2013.2.2.dev5.gef71dc6/etc/ceilometer/ceilometer.conf.sample new/ceilometer-2013.2.2.dev6.g16eb199/etc/ceilometer/ceilometer.conf.sample
--- old/ceilometer-2013.2.2.dev5.gef71dc6/etc/ceilometer/ceilometer.conf.sample 2014-01-11 15:15:01.000000000 +0100
+++ new/ceilometer-2013.2.2.dev6.g16eb199/etc/ceilometer/ceilometer.conf.sample 2014-01-18 11:04:22.000000000 +0100
@@ -817,6 +817,12 @@
# value)
#memcache_secret_key=<None>
+# (optional) indicate whether to set the X-Service-Catalog
+# header. If False, middleware will not ask for service
+# catalog on token validation and will not set the X-Service-
+# Catalog header. (boolean value)
+#include_service_catalog=true
+
[collector]
++++++ openstack-ceilometer.init ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:21.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:21.000000000 +0100
@@ -28,6 +28,7 @@
start)
if [ "$DAEMON" == "api" ]; then
echo -n "Checking DB Migrations for ceilometer"
+ test -f /var/log/ceilometer/ceilometer-dbsync.log && chown $USER. /var/log/ceilometer/ceilometer-dbsync.log
su $USER -s /bin/sh -c "ceilometer-dbsync --config-file=$CONFFILE" > /dev/null
rc_status -v
fi
++++++ openstack-ceilometer.logrotate ++++++
--- /var/tmp/diff_new_pack.RwyFt0/_old 2014-01-30 17:41:21.000000000 +0100
+++ /var/tmp/diff_new_pack.RwyFt0/_new 2014-01-30 17:41:21.000000000 +0100
@@ -6,7 +6,7 @@
weekly
dateext
missingok
- notifyempty
+ notifempty
su openstack-ceilometer openstack-ceilometer
copytruncate
sharedscripts
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libraw for openSUSE:Factory checked in at 2014-01-30 17:41:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libraw (Old)
and /work/SRC/openSUSE:Factory/.libraw.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libraw"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libraw/libraw.changes 2013-09-09 19:44:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libraw.new/libraw.changes 2014-01-30 17:41:13.000000000 +0100
@@ -1,0 +2,21 @@
+Thu Jan 30 13:52:19 UTC 2014 - pgajdos(a)suse.com
+
+- updated to 0.16.0:
+ * removed 0001-build-fix-return-of-random-data.patch (upstreamed)
+ * Support for new cameras:
+ Baumer TXG14
+ Blackmagic Cinema
+ Canon EOS 70D, C500, S120, G16
+ Fujifilm X-M1, X-A1, XE2, XQ1
+ Hasselblad Lunar, Stellar
+ Leica C, X VARIO
+ Nikon D5200, P7800, D5300, D610, Df, 1 AW1
+ Nokia Lumia 1020, 1520
+ Olympus E-P5,E-M1, STYLUS1
+ OmniVision OV5647 (Raspberry Pi)
+ Panasonic LF1, GX7, GF6, GM1
+ Pentax K-50, K-500, Q7,K-3
+ Richon GR
+ Samsung NX300, NX1100, NX2000, Galaxy NX (EK-GN120)
+
+-------------------------------------------------------------------
Old:
----
0001-build-fix-return-of-random-data.patch
LibRaw-0.15.4.tar.gz
New:
----
LibRaw-0.16.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libraw.spec ++++++
--- /var/tmp/diff_new_pack.rXO7MA/_old 2014-01-30 17:41:14.000000000 +0100
+++ /var/tmp/diff_new_pack.rXO7MA/_new 2014-01-30 17:41:14.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libraw
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 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
@@ -19,8 +19,8 @@
%define tar_name LibRaw
Name: libraw
-%define lname libraw9
-Version: 0.15.4
+%define lnum 10
+Version: 0.16.0
Release: 0
Summary: Library for reading RAW files obtained from digital photo cameras
License: CDDL-1.0 or LGPL-2.1
@@ -30,7 +30,6 @@
#Freecode-URL: http://freecode.com/projects/libraw
#Git-Clone: git://github.com/LibRaw/LibRaw
Source: http://www.libraw.org/data/%{tar_name}-%{version}.tar.gz
-Patch2: 0001-build-fix-return-of-random-data.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libjasper-devel
@@ -57,11 +56,11 @@
LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.
-%package -n %lname
+%package -n libraw%{lnum}
Summary: Library for reading RAW files obtained from digital photo cameras
Group: System/Libraries
-%description -n %lname
+%description -n libraw%{lnum}
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).
@@ -71,7 +70,7 @@
%package devel
Summary: Development files for %{name}
Group: Development/Libraries/C and C++
-Requires: %lname = %version
+Requires: libraw%{lnum} = %{version}
%description devel
LibRaw is a library for reading RAW files obtained from digital photo
@@ -97,7 +96,6 @@
%prep
%setup -q -n %{tar_name}-%{version}
-%patch2 -p1
%build
CXXFLAGS="%{optflags} -fPIC" \
@@ -117,9 +115,9 @@
rm -rf %{buildroot}%{_datadir}/doc
%fdupes %buildroot/%_prefix
-%post -n %lname -p /sbin/ldconfig
+%post -n libraw%{lnum} -p /sbin/ldconfig
-%postun -n %lname -p /sbin/ldconfig
+%postun -n libraw%{lnum} -p /sbin/ldconfig
%files tools
%defattr(-,root,root,-)
@@ -144,10 +142,10 @@
%{_libdir}/libraw.so
%{_libdir}/libraw_r.so
-%files -n %lname
+%files -n libraw%{lnum}
%defattr(-,root,root,-)
-%{_libdir}/libraw.so.9*
-%{_libdir}/libraw_r.so.9*
+%{_libdir}/libraw.so.%{lnum}*
+%{_libdir}/libraw_r.so.%{lnum}*
%files devel-static
%defattr(-,root,root,-)
++++++ LibRaw-0.15.4.tar.gz -> LibRaw-0.16.0.tar.gz ++++++
++++ 19808 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package jemalloc for openSUSE:Factory checked in at 2014-01-30 17:41:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jemalloc (Old)
and /work/SRC/openSUSE:Factory/.jemalloc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jemalloc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/jemalloc/jemalloc.changes 2013-10-23 10:08:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.jemalloc.new/jemalloc.changes 2014-01-30 17:41:10.000000000 +0100
@@ -1,0 +2,55 @@
+Wed Jan 29 12:24:21 UTC 2014 - idonmez(a)suse.com
+
+- Add jemalloc-fix-32bit-tests.patch to fix test failures on i586
+
+-------------------------------------------------------------------
+Fri Jan 24 12:02:33 UTC 2014 - idonmez(a)suse.com
+
+- Update to version 3.5.0
+ * Add the *allocx() API, which is a successor to the experimental *allocm()
+ API. The *allocx() functions are slightly simpler to use because they have
+ fewer parameters, they directly return the results of primary interest, and
+ mallocx()/rallocx() avoid the strict aliasing pitfall that
+ allocm()/rallocx() share with posix_memalign(). Note that *allocm() is
+ slated for removal in the next non-bugfix release.
+ * Add support for LinuxThreads.
+
+ * Unless heap profiling is enabled, disable floating point code and don't link
+ with libm. This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64
+ systems, makes it possible to completely disable floating point register
+ use. Some versions of glibc neglect to save/restore caller-saved floating
+ point registers during dynamic lazy symbol loading, and the symbol loading
+ code uses whatever malloc the application happens to have linked/loaded
+ with, the result being potential floating point register corruption.
+ * Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling
+ backtrace creation in imemalign(). This bug impacted posix_memalign() and
+ aligned_alloc().
+ * Fix a file descriptor leak in a prof_dump_maps() error path.
+ * Fix prof_dump() to close the dump file descriptor for all relevant error
+ paths.
+ * Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for
+ allocation, not just deallocation.
+ * Fix a data race for large allocation stats counters.
+ * Fix a potential infinite loop during thread exit. This bug occurred on
+ Solaris, and could affect other platforms with similar pthreads TSD
+ implementations.
+ * Don't junk-fill reallocations unless usable size changes. This fixes a
+ violation of the *allocx()/*allocm() semantics.
+ * Fix growing large reallocation to junk fill new space.
+ * Fix huge deallocation to junk fill when munmap is disabled.
+ * Change the default private namespace prefix from empty to je_, and change
+ --with-private-namespace-prefix so that it prepends an additional prefix
+ rather than replacing je_. This reduces the likelihood of applications
+ which statically link jemalloc experiencing symbol name collisions.
+ * Add missing private namespace mangling (relevant when
+ --with-private-namespace is specified).
+ * Add and use JEMALLOC_INLINE_C so that static inline functions are marked as
+ static even for debug builds.
+ * Add a missing mutex unlock in a malloc_init_hard() error path. In practice
+ this error path is never executed.
+ * Fix numerous bugs in malloc_strotumax() error handling/reporting. These
+ bugs had no impact except for malformed inputs.
+ * Fix numerous bugs in malloc_snprintf(). These bugs were not exercised by
+ existing calls, so they had no impact.
+
+-------------------------------------------------------------------
Old:
----
jemalloc-3.4.1.tar.bz2
New:
----
jemalloc-3.5.0.tar.bz2
jemalloc-fix-32bit-tests.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jemalloc.spec ++++++
--- /var/tmp/diff_new_pack.3spH6V/_old 2014-01-30 17:41:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3spH6V/_new 2014-01-30 17:41:10.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package jemalloc
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 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
@@ -17,7 +17,7 @@
Name: jemalloc
-Version: 3.4.1
+Version: 3.5.0
Release: 0
%define lname libjemalloc1
Summary: General-purpose scalable concurrent malloc implementation
@@ -27,6 +27,7 @@
#Git-Clone: git://canonware.com/jemalloc
Source: http://www.canonware.com/download/jemalloc/jemalloc-%{version}.tar.bz2
+Patch1: jemalloc-fix-32bit-tests.patch
BuildRequires: docbook-xsl-stylesheets
BuildRequires: libxslt
Requires: %lname = %{version}
@@ -64,17 +65,19 @@
%prep
%setup -q
+%patch1 -p1
%build
-export CFLAGS="%{optflags} -g2";
-%configure
-make %{?_smp_mflags};
+export EXTRA_CFLAGS="%{optflags} -std=gnu99"
+%configure --enable-cc-silence
+make %{?_smp_mflags}
%install
b=%{buildroot};
-make install DESTDIR="$b";
+make install DESTDIR="$b"
+
+chmod -x "%{buildroot}/%{_libdir}"/*.a
-chmod -x "%{buildroot}/%{_libdir}"/*.a;
if [ "%_docdir" != "%{_datadir}/doc" ]; then
# stupid Makefile does not allow to set it
mkdir -p "$b/%_docdir";
@@ -84,6 +87,7 @@
mv %{buildroot}/%{_bindir}/pprof %{buildroot}/%{_bindir}/pprof-jemalloc
%check
+export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
make check
%files
++++++ jemalloc-3.4.1.tar.bz2 -> jemalloc-3.5.0.tar.bz2 ++++++
++++ 24299 lines of diff (skipped)
++++++ jemalloc-fix-32bit-tests.patch ++++++
diff --git a/test/integration/aligned_alloc.c b/test/integration/aligned_alloc.c
index 17c2151..6090014 100644
--- a/test/integration/aligned_alloc.c
+++ b/test/integration/aligned_alloc.c
@@ -47,10 +47,10 @@ TEST_BEGIN(test_oom_errors)
#if LG_SIZEOF_PTR == 3
alignment = UINT64_C(0x4000000000000000);
- size = UINT64_C(0x8400000000000001);
+ size = UINT64_C(0xc000000000000001);
#else
alignment = 0x40000000LU;
- size = 0x84000001LU;
+ size = 0xc0000001LU;
#endif
set_errno(0);
p = aligned_alloc(alignment, size);
diff --git a/test/integration/mallocx.c b/test/integration/mallocx.c
index c26f6c5..f37a74b 100644
--- a/test/integration/mallocx.c
+++ b/test/integration/mallocx.c
@@ -34,26 +34,6 @@ TEST_BEGIN(test_basic)
}
TEST_END
-TEST_BEGIN(test_alignment_errors)
-{
- void *p;
- size_t nsz, sz, alignment;
-
-#if LG_SIZEOF_PTR == 3
- alignment = UINT64_C(0x4000000000000000);
- sz = UINT64_C(0x8400000000000001);
-#else
- alignment = 0x40000000LU;
- sz = 0x84000001LU;
-#endif
- nsz = nallocx(sz, MALLOCX_ALIGN(alignment));
- assert_zu_ne(nsz, 0, "Unexpected nallocx() error");
- p = mallocx(sz, MALLOCX_ALIGN(alignment));
- assert_ptr_null(p, "Expected error for mallocx(%zu, %#x)", sz,
- MALLOCX_ALIGN(alignment));
-}
-TEST_END
-
TEST_BEGIN(test_alignment_and_size)
{
size_t nsz, rsz, sz, alignment, total;
@@ -114,6 +94,5 @@ main(void)
return (test(
test_basic,
- test_alignment_errors,
test_alignment_and_size));
}
diff --git a/test/integration/posix_memalign.c b/test/integration/posix_memalign.c
index c88a4dc..19741c6 100644
--- a/test/integration/posix_memalign.c
+++ b/test/integration/posix_memalign.c
@@ -43,10 +43,10 @@ TEST_BEGIN(test_oom_errors)
#if LG_SIZEOF_PTR == 3
alignment = UINT64_C(0x4000000000000000);
- size = UINT64_C(0x8400000000000001);
+ size = UINT64_C(0xc000000000000001);
#else
alignment = 0x40000000LU;
- size = 0x84000001LU;
+ size = 0xc0000001LU;
#endif
assert_d_ne(posix_memalign(&p, alignment, size), 0,
"Expected error for posix_memalign(&p, %zu, %zu)",
diff --git a/test/unit/stats.c b/test/unit/stats.c
index 6cd9773..03a55c7 100644
--- a/test/unit/stats.c
+++ b/test/unit/stats.c
@@ -31,21 +31,25 @@ TEST_END
TEST_BEGIN(test_stats_chunks)
{
- size_t current, total, high;
- size_t sz = sizeof(size_t);
+ size_t current, high;
+ uint64_t total;
+ size_t sz;
int expected = config_stats ? 0 : ENOENT;
+ sz = sizeof(size_t);
assert_d_eq(mallctl("stats.chunks.current", ¤t, &sz, NULL, 0),
expected, "Unexpected mallctl() result");
+ sz = sizeof(uint64_t);
assert_d_eq(mallctl("stats.chunks.total", &total, &sz, NULL, 0),
expected, "Unexpected mallctl() result");
+ sz = sizeof(size_t);
assert_d_eq(mallctl("stats.chunks.high", &high, &sz, NULL, 0), expected,
"Unexpected mallctl() result");
if (config_stats) {
assert_zu_le(current, high,
"current should be no larger than high");
- assert_zu_le(high, total,
+ assert_u64_le((uint64_t)high, total,
"high should be no larger than total");
}
}
@@ -247,9 +251,9 @@ TEST_BEGIN(test_stats_arenas_bins)
{
unsigned arena;
void *p;
- size_t sz, allocated;
+ size_t sz, allocated, curruns;
uint64_t epoch, nmalloc, ndalloc, nrequests, nfills, nflushes;
- uint64_t nruns, nreruns, curruns;
+ uint64_t nruns, nreruns;
int expected = config_stats ? 0 : ENOENT;
arena = 0;
@@ -287,6 +291,7 @@ TEST_BEGIN(test_stats_arenas_bins)
NULL, 0), expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.arenas.0.bins.0.nreruns", &nreruns, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(size_t);
assert_d_eq(mallctl("stats.arenas.0.bins.0.curruns", &curruns, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
@@ -307,7 +312,7 @@ TEST_BEGIN(test_stats_arenas_bins)
}
assert_u64_gt(nruns, 0,
"At least one run should have been allocated");
- assert_u64_gt(curruns, 0,
+ assert_zu_gt(curruns, 0,
"At least one run should be currently allocated");
}
@@ -319,8 +324,8 @@ TEST_BEGIN(test_stats_arenas_lruns)
{
unsigned arena;
void *p;
- uint64_t epoch, nmalloc, ndalloc, nrequests, curruns;
- size_t sz = sizeof(uint64_t);
+ uint64_t epoch, nmalloc, ndalloc, nrequests;
+ size_t curruns, sz;
int expected = config_stats ? 0 : ENOENT;
arena = 0;
@@ -333,12 +338,14 @@ TEST_BEGIN(test_stats_arenas_lruns)
assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
"Unexpected mallctl() failure");
+ sz = sizeof(uint64_t);
assert_d_eq(mallctl("stats.arenas.0.lruns.0.nmalloc", &nmalloc, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.arenas.0.lruns.0.ndalloc", &ndalloc, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.arenas.0.lruns.0.nrequests", &nrequests, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(size_t);
assert_d_eq(mallctl("stats.arenas.0.lruns.0.curruns", &curruns, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
diff --git a/test/integration/allocm.c b/test/integration/allocm.c
index bd7a3ca..66ecf86 100644
--- a/test/integration/allocm.c
+++ b/test/integration/allocm.c
@@ -39,28 +39,6 @@ TEST_BEGIN(test_basic)
}
TEST_END
-TEST_BEGIN(test_alignment_errors)
-{
- void *p;
- size_t nsz, rsz, sz, alignment;
-
-#if LG_SIZEOF_PTR == 3
- alignment = UINT64_C(0x4000000000000000);
- sz = UINT64_C(0x8400000000000001);
-#else
- alignment = 0x40000000LU;
- sz = 0x84000001LU;
-#endif
- nsz = 0;
- assert_d_eq(nallocm(&nsz, sz, ALLOCM_ALIGN(alignment)), ALLOCM_SUCCESS,
- "Unexpected nallocm() error");
- rsz = 0;
- assert_d_ne(allocm(&p, &rsz, sz, ALLOCM_ALIGN(alignment)),
- ALLOCM_SUCCESS, "Expected error for allocm(&p, %zu, %#x)",
- sz, ALLOCM_ALIGN(alignment));
-}
-TEST_END
-
TEST_BEGIN(test_alignment_and_size)
{
int r;
@@ -126,6 +104,5 @@ main(void)
return (test(
test_basic,
- test_alignment_errors,
test_alignment_and_size));
}
diff --git a/test/unit/prof_accum.c b/test/unit/prof_accum.c
index cf3f287..08be419 100644
--- a/test/unit/prof_accum.c
+++ b/test/unit/prof_accum.c
@@ -22,10 +22,10 @@ prof_dump_open_intercept(bool propagate_err, const char *filename)
}
#define alloc_n_proto(n) \
-static void *alloc_##n(unsigned bits);
+JEMALLOC_NOINLINE static void *alloc_##n(unsigned bits);
#define alloc_n_gen(n) \
-static void * \
+JEMALLOC_NOINLINE static void * \
alloc_##n(unsigned bits) \
{ \
void *p; \
diff --git a/include/jemalloc/internal/prof.h b/include/jemalloc/internal/prof.h
index db056fc..6f162d2 100644
--- a/include/jemalloc/internal/prof.h
+++ b/include/jemalloc/internal/prof.h
@@ -8,7 +8,11 @@ typedef struct prof_ctx_s prof_ctx_t;
typedef struct prof_tdata_s prof_tdata_t;
/* Option defaults. */
-#define PROF_PREFIX_DEFAULT "jeprof"
+#ifdef JEMALLOC_PROF
+# define PROF_PREFIX_DEFAULT "jeprof"
+#else
+# define PROF_PREFIX_DEFAULT ""
+#endif
#define LG_PROF_SAMPLE_DEFAULT 19
#define LG_PROF_INTERVAL_DEFAULT -1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package gnucash for openSUSE:Factory checked in at 2014-01-30 17:41:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnucash (Old)
and /work/SRC/openSUSE:Factory/.gnucash.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnucash"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnucash/gnucash.changes 2014-01-23 15:44:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gnucash.new/gnucash.changes 2014-01-30 17:41:03.000000000 +0100
@@ -1,0 +2,6 @@
+Thu Jan 23 21:07:35 UTC 2014 - dimstar(a)opensuse.org
+
+- Do not remove %{_datadir}/doc: the about Dialog explicitly
+ references LICENSE, AUTHORS and DOCUMENTS in this location.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnucash.spec ++++++
--- /var/tmp/diff_new_pack.Q8i8xf/_old 2014-01-30 17:41:03.000000000 +0100
+++ /var/tmp/diff_new_pack.Q8i8xf/_new 2014-01-30 17:41:03.000000000 +0100
@@ -159,7 +159,6 @@
%install
%makeinstall
-rm -rf %{buildroot}%{_datadir}/doc/gnucash/
%suse_update_desktop_file gnucash
%find_lang gnucash %{?no_lang_C}
%fdupes %{buildroot}%{_datadir}
@@ -195,8 +194,9 @@
%dir %{_datadir}/appdata
%{_datadir}/appdata/gnucash.appdata.xml
%{_datadir}/applications/*.desktop
+%{_datadir}/doc/gnucash/
%{_datadir}/glib-2.0/schemas/org.gnucash.*.xml
-%{_datadir}/gnucash
+%{_datadir}/gnucash/
%{_datadir}/icons/hicolor/*/apps/gnucash-icon.png
%{_datadir}/icons/hicolor/scalable/apps/gnucash-icon.svg
%{_libdir}/*.so.*
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package u-boot for openSUSE:Factory checked in at 2014-01-30 15:21:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/u-boot (Old)
and /work/SRC/openSUSE:Factory/.u-boot.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "u-boot"
Changes:
--------
--- /work/SRC/openSUSE:Factory/u-boot/u-boot-am335xevm.changes 2014-01-29 22:22:39.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.u-boot.new/u-boot-am335xevm.changes 2014-01-30 15:21:35.000000000 +0100
@@ -1,0 +2,7 @@
+Thu Jan 30 06:46:45 UTC 2014 - afaerber(a)suse.de
+
+- Drop 0006-ARMV7-hardfp-build-fix.patch:
+ v2014.01 checks if -msoft-float compiles okay, and
+ U-Boot is soft-float according to Tom Rini
+
+-------------------------------------------------------------------
u-boot-arndale.changes: same change
u-boot-colibrit20iris.changes: same change
u-boot-cubieboard.changes: same change
u-boot-highbank.changes: same change
u-boot-hyundaia7hd.changes: same change
u-boot-melea1000.changes: same change
u-boot-mx53loco.changes: same change
u-boot-omap3beagle.changes: same change
u-boot-omap4panda.changes: same change
u-boot-paz00.changes: same change
u-boot-rpib.changes: same change
u-boot.changes: same change
Old:
----
0006-ARMV7-hardfp-build-fix.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ u-boot-am335xevm.spec ++++++
--- /var/tmp/diff_new_pack.lo0xUv/_old 2014-01-30 15:21:37.000000000 +0100
+++ /var/tmp/diff_new_pack.lo0xUv/_new 2014-01-30 15:21:37.000000000 +0100
@@ -34,7 +34,6 @@
Source1: openSUSE_panda.txt
Source2: arndale-bl1.img
Source300: rpmlintrc
-Patch1: 0006-ARMV7-hardfp-build-fix.patch
Patch2: mlo-ext2.patch
Patch3: ti_common_initrd_support.patch
Patch4: beagle-bootscr.patch
@@ -74,7 +73,6 @@
# is non-free licensed, and we don't need it (bnc#773824)
rm -rf board/Marvell
# Any custom patches to be applied on top of mainline u-boot
-%patch1
%patch2 -p1
%patch3
%patch4
u-boot-arndale.spec: same change
u-boot-colibrit20iris.spec: same change
u-boot-cubieboard.spec: same change
u-boot-highbank.spec: same change
u-boot-hyundaia7hd.spec: same change
u-boot-melea1000.spec: same change
u-boot-mx53loco.spec: same change
u-boot-omap3beagle.spec: same change
u-boot-omap4panda.spec: same change
u-boot-paz00.spec: same change
u-boot-rpib.spec: same change
++++++ u-boot.spec.in ++++++
--- /var/tmp/diff_new_pack.lo0xUv/_old 2014-01-30 15:21:37.000000000 +0100
+++ /var/tmp/diff_new_pack.lo0xUv/_new 2014-01-30 15:21:37.000000000 +0100
@@ -34,7 +34,6 @@
Source1: openSUSE_panda.txt
Source2: arndale-bl1.img
Source300: rpmlintrc
-Patch1: 0006-ARMV7-hardfp-build-fix.patch
Patch2: mlo-ext2.patch
Patch3: ti_common_initrd_support.patch
Patch4: beagle-bootscr.patch
@@ -74,7 +73,6 @@
# is non-free licensed, and we don't need it (bnc#773824)
rm -rf board/Marvell
# Any custom patches to be applied on top of mainline u-boot
-%patch1
%patch2 -p1
%patch3
%patch4
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-gdata for openSUSE:Factory checked in at 2014-01-30 15:11:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gdata (Old)
and /work/SRC/openSUSE:Factory/.python-gdata.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gdata"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gdata/python-gdata.changes 2013-10-25 11:16:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-gdata.new/python-gdata.changes 2014-01-30 15:11:36.000000000 +0100
@@ -1,0 +2,22 @@
+Sat Jan 25 02:48:26 UTC 2014 - os-dev(a)jacraig.com
+
+- Update to 2.0.18:
+ * Numerous changes, see REALEASE_NOTES.txt. Major changes below.
+ * Fixing identifier_exists attribute for product items.
+ * Fixing multipack attribute.
+ * Various changes related to products.
+ * Various changes related to OAuth.
+ * Added support for various feeds in Content API.
+- Changes from 2.0.17 also numers, major ones listed here:
+ * Fixing behavior in atom.http_core.Uri._get_query_string for query
+ parameters with no parameter value.
+ * Fixed batch function issues in content api for shopping client.
+ * Fixing bug in recent change to the Email Settings API client library.
+ * Fix issues 590/591: Contact's gender XML element was wrong.
+ * Fixing issue 587. Wrong URL used for batch ACL changes.
+ * Various changes related to OAuth.
+ * Added various sample code.
+- Update source URL.
+- Fix more EOL and exec permissions issues in %prep.
+
+-------------------------------------------------------------------
Old:
----
gdata-2.0.16.tar.gz
New:
----
gdata-2.0.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-gdata.spec ++++++
--- /var/tmp/diff_new_pack.mdR89M/_old 2014-01-30 15:11:37.000000000 +0100
+++ /var/tmp/diff_new_pack.mdR89M/_new 2014-01-30 15:11:37.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-gdata
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 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
@@ -17,13 +17,13 @@
Name: python-gdata
-Version: 2.0.16
+Version: 2.0.18
Release: 0
Url: http://code.google.com/p/gdata-python-client
Summary: Python library to access data through Google Data APIs
License: Apache-2.0
Group: Development/Libraries/Python
-Source: http://gdata-python-client.googlecode.com/files/gdata-%{version}.tar.gz
+Source: https://gdata-python-client.googlecode.com/files/gdata-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python-devel
BuildRequires: python-setuptools
@@ -44,8 +44,9 @@
%prep
%setup -q -n gdata-%{version}
-find samples/oauth src/gdata -type f -name "*.py" -exec sed -i 's|\r||' {} \; # Fix wrong EOL encoding
+find samples/oauth src/gdata samples/apps/marketplace_sample -type f -name "*.py" -exec sed -i 's|\r||' {} \; # Fix wrong EOL encoding
find samples -type f -name "*.py" -exec chmod 0644 {} \; # Remove executable perms on samples
+find samples/apps/marketplace_sample -type f \( -name "*.c" -o -name "*.txt" \) -exec chmod 0644 {} \; # Remove executable perms on samples
# Remove unnecessary Python shebangs
find . -type f -exec sed -i -r '1s|^#! *(.+)/python(.*)$||' {} \;
find . -type f -exec sed -i -r '1s|^#! */usr/bin/env +python.*$||' {} \;
++++++ gdata-2.0.16.tar.gz -> gdata-2.0.18.tar.gz ++++++
++++ 77576 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0