Hello community,
here is the log from the commit of package openstack-glance for openSUSE:Factory checked in at 2012-01-27 15:22:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-glance (Old)
and /work/SRC/openSUSE:Factory/.openstack-glance.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-glance", Maintainer is ""
Changes:
--------
New Changes file:
--- /dev/null 2010-08-26 16:28:41.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.openstack-glance.new/openstack-glance.changes 2012-01-27 15:22:58.000000000 +0100
@@ -0,0 +1,178 @@
+-------------------------------------------------------------------
+Tue Dec 13 14:38:44 UTC 2011 - vuntz@opensuse.org
+
+- Merge changes to enable build from git:
+ + The work was done by Christopher Hofmann .
+ + Add from_vcs and no_from_vcs bconds, that can be used in
+ addition to the BUILD_FROM_VCS macro to decide what to build.
+ + Add some warning to summary of packages is building from VCS.
+ + Do not apply patches for the git package.
+ + Package files that are new in git.
+
+-------------------------------------------------------------------
+Mon Dec 5 11:06:37 UTC 2011 - prusnak@opensuse.org
+
+- spec cleanup
+- added preun/postun sections for initscript handling
+
+-------------------------------------------------------------------
+Fri Sep 23 10:01:53 UTC 2011 - bwiedemann@suse.com
+
+- update to 2011.3 (Diablo)
+
+-------------------------------------------------------------------
+Wed Jun 1 16:16:26 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 139
+- fixed version
+- fixed URL
+
+-------------------------------------------------------------------
+Thu Apr 21 23:33:02 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 123
+ - modified documentation to show more first-time user friendly examples on using glance.
+ - Require user confirmation for "bin/glance clear" and "bin/glance delete <id>"
+ - Allow for override with -f/--force command-line option
+ - Adds a test case for updating an image's Name attribute. glance update was not regarding 'name' as a top-level modifiable attribute...
+ - Mark image properties as deleted when deleting images.
+ - Added a unit test to verify public images and their properties get deleted when running a 'glance clear' command.
+ - Add log_file to example glance.conf
+ - Make sure we use get_option() when dealing with boolean values read from configuration files...otherwise "False" is True :(
+
+-------------------------------------------------------------------
+Tue Apr 19 12:09:08 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 116
+ - start of diablo release
+ - Fake merge with ancient trunk. This is only so that people who "accidentally" have been following lp:~hudson-openstack/glance/trunk will not have problems updating to this.
+
+-------------------------------------------------------------------
+Fri Apr 15 13:38:35 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 114
+ - Final versioning for Cactus
+- updated version to 2011.2
+
+-------------------------------------------------------------------
+Thu Apr 14 08:14:17 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 113
+
+-------------------------------------------------------------------
+Tue Apr 12 15:22:32 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 108
+
+-------------------------------------------------------------------
+Mon Apr 4 14:13:12 CEST 2011 - berendt@b1-systems.de
+
+- update to bzr rev 100
+
+- Updates to the Registry API such that only external requests to
+- update image properties purge existing properties. The update_image
+- call now contains an extra flag to purge_props which is set to
+- True for external requests but False internally.
+- This resolves with revision 99 where Glance API incidentally deleted image metadata when uploading new images.
+- Update the glance registry so that it marks properties as deleted if they are no longer exist when images are updated.
+- Simple one.. just add back the Changelog I removed by accident in r94. Fixes bug #742353
+- Adds checksumming to Glance.
+- The ETag header is now properly set to the image's checksum now for all GET /images/<ID>, HEAD /images/<ID>, POST /images and PUT /images/<ID> operations.
+- Adds unit tests verifying the checksumming behaviour in the API, and in the Swift and Filesystem backend stores.
+- Includes migration script.
+- NOTE: This does not include the DB migration script. Separate bug will be filed for that.
+- Add migration testing and migration for disk_format/container_format
+- Start eventlet WSGI server with a logger to avoid stdout output.
+- Adds robust functional testing to Glance.
+- Removed glance-combined. Fixed README
+- Change #!/usr/bin/python to #!/usr/bin/env python.
+- Removes glance-combined and fixes TypeError from bad function calls in glance-manage.
+- Support account:user:key in Swift URIs. Adds unit tests for various calls to parse_swift_tokens()
+- Adds documentation on configuring logging and a unit test for checking simple log output
+- A quick patch to allow running the test suite on an alternate db backend.
+
+-------------------------------------------------------------------
+Thu Mar 17 10:21:43 CET 2011 - berendt@b1-systems.de
+
+- added new configuration files
+- replaced hardcoded paths in spec file with variables
+
+-------------------------------------------------------------------
+Fri Mar 11 08:19:22 CET 2011 - berendt@b1-systems.de
+
+- renamed package python-glance to openstack-glance
+
+-------------------------------------------------------------------
+Thu Mar 10 07:32:23 CET 2011 - berendt@b1-systems.de
+
+- update to bzr rev 86
+ - Fixes client update_image to work like create_image.
+ - Adds disk_format and container_format to Image, and
+ removes the type column.
+ - Adds ability for Swift to be used as a full-fledged backend.
+ - Adds POST/PUT capabilities to the SwiftBackend
+ - Fixes passing of None values in metadata by turning them into strings
+ - fixes the passing of the deleted column by converting it to and from a bool
+ - Add Glance CLI tool
+
+-------------------------------------------------------------------
+Thu Mar 3 18:14:54 CET 2011 - berendt@b1-systems.de
+
+- update to bzr rev 79
+ - Makes --kernel and --ramdisk required arguments for glance-upload
+ since Nova currently requires them
+ - Add sys.path mangling to glance-upload
+ - Reverts Image `type` back to the old behavior of being nullable
+ - Work around Eventlet exception clearing by memorizing exception
+ context and re-raising using 3-arg form
+
+-------------------------------------------------------------------
+Wed Feb 23 10:04:09 UTC 2011 - seife+obs@b1-systems.com
+
+- update to bzr rev 74:
+ - add vhd as recognized image type
+
+-------------------------------------------------------------------
+Wed Feb 16 21:00:25 UTC 2011 - seife+obs@b1-systems.com
+
+- start tracking development releases
+- update to bzr rev 73
+ * lots of fixes, see changelog
+- glance changed the versioning scheme similar to nova
+
+-------------------------------------------------------------------
+Mon Feb 14 19:34:14 UTC 2011 - seife+obs@b1-systems.com
+
+- fix init script configuration parsing
+
+-------------------------------------------------------------------
+Fri Feb 11 14:34:43 UTC 2011 - seife+obs@b1-systems.com
+
+- add requires for python-eventlet,-webob,-sqlalchemy,-mysql
+
+-------------------------------------------------------------------
+Wed Feb 9 14:37:13 UTC 2011 - seife+obs@b1-systems.com
+
+- add init script to start / stop the glance services
+
+-------------------------------------------------------------------
+Thu Feb 3 09:54:11 UTC 2011 - seife+obs@b1-systems.com
+
+- official bexar release
+ * bump version to 0.1.7
+
+-------------------------------------------------------------------
+Tue Feb 1 17:20:39 CET 2011 - berendt@b1-systems.de
+
+- bumped to version 0.1.6 (bexar-rc, released on 2011-01-28)
+- fixed required packages:
+ + python-gflags
+ + python-daemon
+ + python-routes
+ + python-argparse
+
+-------------------------------------------------------------------
+Wed Jan 26 10:57:30 UTC 2011 - seife+obs@b1-systems.com
+
+- initial package of python-glance
+
New:
----
glance-2011.3.patch
glance-2011.3.tar.gz
lp_845788_glance_client_zero_length.patch
lp_850425_remote_swift_image_streaming.patch
openstack-glance.changes
openstack-glance.init
openstack-glance.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-glance.spec ++++++
# spec file for package openstack-glance
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2011 B1 Systems GmbH, Vohburg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# options to forcefully build with/without vcs
%bcond_with from_vcs
%bcond_with no_from_vcs
%if %{with from_vcs}
%define BUILD_FROM_VCS 1
%endif
%if %{with no_from_vcs}
%define BUILD_FROM_VCS 0
%endif
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%if 0%{?BUILD_FROM_VCS}
%define vcs_summary_warn -- Git Snapshot
%else
%define vcs_summary_warn %null
%endif
%define shortname glance
Name: openstack-glance
Version: 2011.3
%if 0%{?BUILD_FROM_VCS}
%define _version git-master
%else
%define _version 2011.3
%endif
Release: 1
License: ASL 2.0
Summary: Discover, Register and Retrieve virtual machine images %{vcs_summary_warn}
Url: http://glance.openstack.org/
Group: Development/Libraries/Python
Source0: glance-%{_version}.tar.gz
Source1: openstack-glance.init
Patch0: glance-2011.3.patch
Patch1: lp_845788_glance_client_zero_length.patch
Patch2: lp_850425_remote_swift_image_streaming.patch
BuildRequires: fdupes
BuildRequires: intltool
BuildRequires: python-Sphinx
BuildRequires: python-devel
BuildRequires: python-distribute
BuildRequires: python-distutils-extra
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: openstack-swift
Requires: python-PasteDeploy
Requires: python-anyjson
Requires: python-argparse
Requires: python-boto
Requires: python-eventlet
Requires: python-greenlet
Requires: python-httplib2
Requires: python-kombu
Requires: python-routes
Requires: python-sqlalchemy
Requires: python-sqlalchemy-migrate
Requires: python-webob
Requires: python-wsgiref
Requires: python-xattr
%if 0%{?suse_version} > 1110
Requires(pre): pwdutils
%else
Requires(pre): shadow-utils
%endif
%define sharedstatedir %{_localstatedir}/lib
%description
The Glance project provides services for discovering, registering, and retrieving virtual machine images. Glance has a RESTful API that allows querying of VM image metadata as well as retrieval of the actual image.
%package -n python-glance
Summary: OpenStack glance python files %{vcs_summary_warn}
Group: Development/Languages/Python
%description -n python-glance
This package contains the python files for glance.
%prep
%setup -q -n %{shortname}-%{_version}
%if !(0%{?BUILD_FROM_VCS})
%patch0
%patch1 -p1
%patch2 -p1
%endif
%build
mkdir etc/glance
mv etc/*.conf etc/glance/
mv etc/*.sample etc/glance/
python setup.py build
%install
python setup.py install --prefix=%{_prefix} --root=%{buildroot}
mkdir -p %{buildroot}%{_initrddir}
mkdir -p %{buildroot}%{_sbindir}
install -m 755 %{SOURCE1} %{buildroot}%{_initrddir}/openstack-glance
ln -s ../..%{_initrddir}/openstack-glance %{buildroot}%{_sbindir}/rcopenstack-glance
install -d -m 755 %{buildroot}%{sharedstatedir}/glance
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}/run/glance
rm -rf %{buildroot}%{_datadir}/doc/glance
%pre
getent group glance >/dev/null || groupadd -r glance
getent passwd glance >/dev/null || useradd -r -g glance -d %{sharedstatedir}/glance -s /sbin/nologin -c "OpenStack glance Daemons" glance
exit 0
%preun
%stop_on_removal openstack-glance
%postun
%restart_on_update openstack-glance
%insserv_cleanup openstack-glance
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%doc README
%{_initrddir}/openstack-glance
%{_sbindir}/rcopenstack-glance
%dir %{_sysconfdir}/glance
%config(noreplace) %{_sysconfdir}/glance/glance-api.conf
%if 0%{?BUILD_FROM_VCS}
%config(noreplace) %{_sysconfdir}/glance/glance-cache.conf
%else
%config(noreplace) %{_sysconfdir}/glance/glance-prefetcher.conf
%config(noreplace) %{_sysconfdir}/glance/glance-pruner.conf
%config(noreplace) %{_sysconfdir}/glance/glance-reaper.conf
%endif
%config(noreplace) %{_sysconfdir}/glance/glance-registry.conf
%config(noreplace) %{_sysconfdir}/glance/glance-scrubber.conf
%config(noreplace) %{_sysconfdir}/glance/logging.cnf.sample
%dir %attr(0755, glance, root) %{_localstatedir}/lib/glance
%dir %attr(0755, glance, root) %{_localstatedir}/lib/glance/images
%dir %attr(0755, glance, root) %{_localstatedir}/log/glance
%ghost %dir %attr(0755, glance, root) %{_localstatedir}/run/glance
%{_bindir}/glance
%{_bindir}/glance-api
%{_bindir}/glance-cache-prefetcher
%{_bindir}/glance-cache-pruner
%if 0%{?BUILD_FROM_VCS}
%{_bindir}/glance-cache-cleaner
%{_bindir}/glance-cache-manage
%{_bindir}/glance-cache-queue-image
%else
%{_bindir}/glance-cache-reaper
%endif
%{_bindir}/glance-control
%{_bindir}/glance-manage
%{_bindir}/glance-registry
%{_bindir}/glance-scrubber
%if !(0%{?BUILD_FROM_VCS})
%{_bindir}/glance-upload
%endif
%files -n python-glance
%defattr(-,root,root,-)
%{python_sitelib}
%changelog
++++++ glance-2011.3.patch ++++++
Index: etc/glance-api.conf
===================================================================
--- etc/glance-api.conf.orig
+++ etc/glance-api.conf
@@ -132,9 +132,9 @@ image_cache_stall_timeout = 86400
delayed_delete = False
[pipeline:glance-api]
-pipeline = versionnegotiation context apiv1app
+# pipeline = versionnegotiation context apiv1app
# NOTE: use the following pipeline for keystone
-# pipeline = versionnegotiation authtoken context apiv1app
+pipeline = versionnegotiation authtoken context apiv1app
# To enable Image Cache Management API replace pipeline with below:
# pipeline = versionnegotiation context imagecache apiv1app
@@ -165,7 +165,7 @@ service_protocol = http
service_host = 127.0.0.1
service_port = 5000
auth_host = 127.0.0.1
-auth_port = 5001
+auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/
admin_token = 999888777666
Index: etc/glance-registry.conf
===================================================================
--- etc/glance-registry.conf.orig
+++ etc/glance-registry.conf
@@ -21,7 +21,7 @@ use_syslog = False
# SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqla...
-sql_connection = sqlite:///glance.sqlite
+sql_connection = sqlite:////var/lib/glance/glance.sqlite
# Period in seconds after which SQLAlchemy should reestablish its connection
# to the database.
@@ -41,9 +41,9 @@ api_limit_max = 1000
limit_param_default = 25
[pipeline:glance-registry]
-pipeline = context registryapp
+# pipeline = context registryapp
# NOTE: use the following pipeline for keystone
-# pipeline = authtoken keystone_shim context registryapp
+pipeline = authtoken keystone_shim context registryapp
[app:registryapp]
paste.app_factory = glance.registry.server:app_factory
@@ -58,7 +58,7 @@ service_protocol = http
service_host = 127.0.0.1
service_port = 5000
auth_host = 127.0.0.1
-auth_port = 5001
+auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/
admin_token = 999888777666
Index: etc/glance-scrubber.conf
===================================================================
--- etc/glance-scrubber.conf.orig
+++ etc/glance-scrubber.conf
@@ -24,7 +24,7 @@ wakeup_time = 300
# SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqla...
-sql_connection = sqlite:///glance.sqlite
+sql_connection = sqlite:////var/lib/glance/glance.sqlite
# Period in seconds after which SQLAlchemy should reestablish its connection
# to the database.
++++++ lp_845788_glance_client_zero_length.patch ++++++
Origin: upstream, https://github.com/openstack/glance/commit/6cfff16f2dc22a870bfe3808a7895dfbb...
Bug: https://bugs.launchpad.net/glance/+bug/845788
commit 6cfff16f2dc22a870bfe3808a7895dfbbaa11369
Author: Jay Pipes
Date: Fri Sep 9 13:03:19 2011 -0400
Fixes LP Bug#845788
glance.client.image_update needed to calculate size so that Glance's Swift
driver can do chunking properly for large objects.
Change-Id: Iafe8034a710cff53a0caa3ae5e9ee3a3adda19f8
--- a/glance/client.py
+++ b/glance/client.py
@@ -96,6 +96,33 @@ class V1Client(base_client.BaseClient):
image = utils.get_image_meta_from_headers(res)
return image
+ def _get_image_size(self, image_data):
+ """
+ Analyzes the incoming image file and attempts to determine
+ its size.
+
+ :param image_data: The input to the client, typically a file
+ redirected from stdin.
+ :retval The image file's size or None if it cannot be determined.
+ """
+ # For large images, we need to supply the size of the
+ # image file. See LP Bugs #827660 and #845788.
+ if hasattr(image_data, 'seek') and hasattr(image_data, 'tell'):
+ try:
+ image_data.seek(0, os.SEEK_END)
+ image_size = image_data.tell()
+ image_data.seek(0)
+ return image_size
+ except IOError, e:
+ if e.errno == errno.ESPIPE:
+ # Illegal seek. This means the user is trying
+ # to pipe image data to the client, e.g.
+ # echo testdata | bin/glance add blah..., or
+ # that stdin is empty
+ return None
+ else:
+ raise
+
def add_image(self, image_meta=None, image_data=None):
"""
Tells Glance about an image's metadata as well
@@ -114,24 +141,10 @@ class V1Client(base_client.BaseClient):
if image_data:
body = image_data
headers['content-type'] = 'application/octet-stream'
- # For large images, we need to supply the size of the
- # image file. See LP Bug #827660.
- if hasattr(image_data, 'seek') and hasattr(image_data, 'tell'):
- try:
- image_data.seek(0, os.SEEK_END)
- image_size = image_data.tell()
- image_data.seek(0)
- headers['x-image-meta-size'] = image_size
- headers['content-length'] = image_size
- except IOError, e:
- if e.errno == errno.ESPIPE:
- # Illegal seek. This means the user is trying
- # to pipe image data to the client, e.g.
- # echo testdata | bin/glance add blah..., or
- # that stdin is empty
- pass
- else:
- raise
+ image_size = self._get_image_size(image_data)
+ if image_size:
+ headers['x-image-meta-size'] = image_size
+ headers['content-length'] = image_size
else:
body = None
@@ -151,6 +164,10 @@ class V1Client(base_client.BaseClient):
if image_data:
body = image_data
headers['content-type'] = 'application/octet-stream'
+ image_size = self._get_image_size(image_data)
+ if image_size:
+ headers['x-image-meta-size'] = image_size
+ headers['content-length'] = image_size
else:
body = None
++++++ lp_850425_remote_swift_image_streaming.patch ++++++
Description: Make streaming from swift actually work.
Author: Brian Waldon
Commit: 4847ceb59fe35481fd42ddc9369b7d3814eca721
diff -Naurp glance-2011.3.orig//glance/store/swift.py glance-2011.3//glance/store/swift.py
--- glance-2011.3.orig//glance/store/swift.py 2011-09-21 16:46:35.000000000 -0400
+++ glance-2011.3//glance/store/swift.py 2011-09-27 14:26:46.231166002 -0400
@@ -260,7 +260,7 @@ class Store(glance.store.base.Store):
# "Expected %s byte file, Swift has %s bytes" %
# (expected_size, obj_size))
- return (resp_body, None)
+ return (resp_body, resp_headers.get('content-length'))
def _make_swift_connection(self, auth_url, user, key):
"""
diff -Naurp glance-2011.3.orig//glance/tests/functional/test_swift.py glance-2011.3//glance/tests/functional/test_swift.py
--- glance-2011.3.orig//glance/tests/functional/test_swift.py 2011-09-21 16:46:35.000000000 -0400
+++ glance-2011.3//glance/tests/functional/test_swift.py 2011-09-27 14:26:46.231166002 -0400
@@ -385,3 +385,86 @@ class TestSwift(test_api.TestApi):
hashlib.md5("*" * FIVE_MB).hexdigest())
self.stop_servers()
+
+ @skip_if_disabled
+ def test_remote_image(self):
+ """
+ Ensure we can retrieve an image that was not stored by glance itself
+ """
+ self.cleanup()
+
+ self.start_servers(**self.__dict__.copy())
+
+ api_port = self.api_port
+ registry_port = self.registry_port
+
+ # POST /images with public image named Image1
+ image_data = "*" * FIVE_MB
+ headers = {'Content-Type': 'application/octet-stream',
+ 'X-Image-Meta-Name': 'Image1',
+ 'X-Image-Meta-Is-Public': 'True'}
+ path = "http://%s:%d/v1/images" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'POST', headers=headers,
+ body=image_data)
+ self.assertEqual(response.status, 201, content)
+ data = json.loads(content)
+ self.assertEqual(data['image']['checksum'],
+ hashlib.md5(image_data).hexdigest())
+ self.assertEqual(data['image']['size'], FIVE_MB)
+ self.assertEqual(data['image']['name'], "Image1")
+ self.assertEqual(data['image']['is_public'], True)
+
+ # GET /images/1 and make sure data was uploaded
+ path = "http://%s:%d/v1/images/1" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'GET')
+ self.assertEqual(response.status, 200)
+ self.assertEqual(response['content-length'], str(FIVE_MB))
+
+ self.assertEqual(content, "*" * FIVE_MB)
+ self.assertEqual(hashlib.md5(content).hexdigest(),
+ hashlib.md5("*" * FIVE_MB).hexdigest())
+
+ # use this header as the location for the next image
+ swift_location = response['x-image-meta-location']
+
+ # POST /images with public image named Image1 without uploading data
+ image_data = "*" * FIVE_MB
+ headers = {'Content-Type': 'application/octet-stream',
+ 'X-Image-Meta-Name': 'Image1',
+ 'X-Image-Meta-Is-Public': 'True',
+ 'X-Image-Meta-Location': swift_location}
+ path = "http://%s:%d/v1/images" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'POST', headers=headers)
+ self.assertEqual(response.status, 201, content)
+ data = json.loads(content)
+ self.assertEqual(data['image']['checksum'], None)
+ self.assertEqual(data['image']['size'], 0)
+ self.assertEqual(data['image']['name'], "Image1")
+ self.assertEqual(data['image']['is_public'], True)
+
+ # GET /images/2 ensuring the data already in swift is accessible
+ path = "http://%s:%d/v1/images/2" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'GET')
+ self.assertEqual(response.status, 200)
+ self.assertEqual(response['content-length'], str(FIVE_MB))
+
+ self.assertEqual(content, "*" * FIVE_MB)
+ self.assertEqual(hashlib.md5(content).hexdigest(),
+ hashlib.md5("*" * FIVE_MB).hexdigest())
+
+ # DELETE /images/1 and /image/2
+ # Verify image and all chunks are gone...
+ path = "http://%s:%d/v1/images/1" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'DELETE')
+ self.assertEqual(response.status, 200)
+ path = "http://%s:%d/v1/images/2" % ("0.0.0.0", self.api_port)
+ http = httplib2.Http()
+ response, content = http.request(path, 'DELETE')
+ self.assertEqual(response.status, 200)
+
+ self.stop_servers()
diff -Naurp glance-2011.3.orig//glance/tests/unit/test_swift_store.py glance-2011.3//glance/tests/unit/test_swift_store.py
--- glance-2011.3.orig//glance/tests/unit/test_swift_store.py 2011-09-21 16:46:35.000000000 -0400
+++ glance-2011.3//glance/tests/unit/test_swift_store.py 2011-09-27 14:26:46.235166002 -0400
@@ -198,7 +198,7 @@ class TestStore(unittest.TestCase):
"""Test a "normal" retrieval of an image in chunks"""
loc = get_location_from_uri("swift://user:key@auth_address/glance/2")
(image_swift, image_size) = self.store.get(loc)
- self.assertEqual(image_size, None)
+ self.assertEqual(image_size, 5120)
expected_data = "*" * FIVE_KB
data = ""
@@ -216,7 +216,7 @@ class TestStore(unittest.TestCase):
loc = get_location_from_uri("swift+http://user:key@auth_address/"
"glance/2")
(image_swift, image_size) = self.store.get(loc)
- self.assertEqual(image_size, None)
+ self.assertEqual(image_size, 5120)
expected_data = "*" * FIVE_KB
data = ""
++++++ openstack-glance.init ++++++
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: openstack-glance
# Required-Start: $syslog $remote_fs
# Should-Start: $time mysql
# Required-Stop: $syslog $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: OpenStack glance service
# Description: The OpenStack glance service allows to
# Discover, Register and Retrieve virtual machine images
### END INIT INFO
GLANCE_CONTROL=/usr/bin/glance-control
GLANCE_API_BIN=/usr/bin/glance-api
GLANCE_REG_BIN=/usr/bin/glance-registry
GLANCE_RUN_DIR=/var/run/glance
mkdir -p $GLANCE_RUN_DIR
BAD=false
for i in $GLANCE_CONTROL $GLANCE_API_BIN $GLANCE_REG_BIN; do
test -x $i && continue
echo "$i not installed"
BAD=true
done
# Special treatment of stop for LSB conformance
if $BAD; then
test "$1" = "stop" && exit 0
exit 5
fi
# Check for existence of needed config file and read it
GLANCE_API_CONFIG=/etc/glance/glance-api.conf
if ! test -r $GLANCE_API_CONFIG; then
echo "$GLANCE_API_CONFIG not existing"
test "$1" = "stop" && exit 0
exit 6
fi
GLANCE_REGISTRY_CONFIG=/etc/glance/glance-registry.conf
if ! test -r $GLANCE_REGISTRY_CONFIG; then
echo "$GLANCE_REGISTRY_CONFIG not existing"
test "$1" = "stop" && exit 0
exit 6
fi
. /etc/rc.status
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - user had insufficient privileges
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.
case "$1" in
start)
echo -n "Starting glance"
/sbin/startproc -q $GLANCE_CONTROL all start
rc_status -v
;;
stop)
echo -n "Shutting down glance"
/sbin/startproc -q $GLANCE_CONTROL all stop
rc_status -v
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
rc_status
;;
restart)
$GLANCE_CONTROL all restart
rc_status
;;
force-reload)
$0 try-restart
rc_status
;;
reload)
echo -n "Reload service glance "
rc_failed 3
rc_status -v
;;
status)
echo -n "Checking for service glance-api"
/sbin/checkproc $GLANCE_API_BIN
rc_status -v
echo -n "Checking for service glance-registry"
/sbin/checkproc $GLANCE_REG_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org