commit python-glanceclient for openSUSE:Factory
Hello community, here is the log from the commit of package python-glanceclient for openSUSE:Factory checked in at 2019-05-03 22:40:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-glanceclient (Old) and /work/SRC/openSUSE:Factory/.python-glanceclient.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-glanceclient" Fri May 3 22:40:27 2019 rev:29 rq:692825 version:2.16.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-glanceclient/python-glanceclient.changes 2019-02-11 21:24:56.427094944 +0100 +++ /work/SRC/openSUSE:Factory/.python-glanceclient.new.5148/python-glanceclient.changes 2019-05-03 22:40:40.303019794 +0200 @@ -1,0 +2,26 @@ +Mon Apr 8 11:58:56 UTC 2019 - cloud-devel@suse.de + +- update to version 2.16.0 + - Update irrelevant-files for dsvm-functional tests + - Refactor periodic "tips" jobs + - Cleanup .zuul.yaml + - Add Python 3.6 classifier to setup.cfg + - Show the backend store info + - add lib-forward-testing-python3 test job + - Change openstack-dev to openstack-discuss + - Use "multihash" for data download validation + - Update min tox version to 2.0 + - Update reno for stable/rocky + - Skip quote '=' for token header + - Remove redundant information from error message + - switch documentation job to new PTI + - Add image-list filter for multihash + - Release notes for 2.16.0 + - add python 3.6 unit test job + - Embed validation data when adding location + - Don't quote colon in HTTP headers + - add python 3.7 unit test job + - import zuul job settings from project-config + - Remove team diversity tags note in README + +------------------------------------------------------------------- Old: ---- python-glanceclient-2.13.1.tar.gz New: ---- python-glanceclient-2.16.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-glanceclient.spec ++++++ --- /var/tmp/diff_new_pack.AimCXf/_old 2019-05-03 22:40:41.175021630 +0200 +++ /var/tmp/diff_new_pack.AimCXf/_new 2019-05-03 22:40:41.175021630 +0200 @@ -17,13 +17,13 @@ Name: python-glanceclient -Version: 2.13.1 +Version: 2.16.0 Release: 0 Summary: Python API and CLI for OpenStack Glance License: Apache-2.0 Group: Development/Languages/Python URL: https://launchpad.net/python-glanceclient -Source0: https://files.pythonhosted.org/packages/source/p/python-glanceclient/python-... +Source0: https://files.pythonhosted.org/packages/source/p/python-glanceclient/python-... BuildRequires: openstack-macros BuildRequires: python-devel BuildRequires: python2-PrettyTable >= 0.7.1 @@ -94,16 +94,15 @@ This package contains auto-generated documentation. %prep -%autosetup -p1 -n python-glanceclient-2.13.1 +%autosetup -p1 -n python-glanceclient-2.16.0 %py_req_cleanup -sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg %build %python_build # generate html docs -PBR_VERSION=2.13.1 sphinx-build -b html doc/source doc/build/html -PBR_VERSION=2.13.1 sphinx-build -b man doc/source doc/build/man +PBR_VERSION=2.16.0 sphinx-build -b html doc/source doc/build/html +PBR_VERSION=2.16.0 sphinx-build -b man doc/source doc/build/man # remove the sphinx-build leftovers rm -rf doc/build/html/.{doctrees,buildinfo} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.AimCXf/_old 2019-05-03 22:40:41.195021672 +0200 +++ /var/tmp/diff_new_pack.AimCXf/_new 2019-05-03 22:40:41.199021680 +0200 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/python-glanceclient/python-glanceclient.spec.j2</param> + <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/python-glanceclient/python-glanceclient.spec.j2</param> <param name="output-name">python-glanceclient.spec</param> - <param name="requirements">https://raw.githubusercontent.com/openstack/python-glanceclient/stable/rocky/requirements.txt</param> + <param name="requirements">https://raw.githubusercontent.com/openstack/python-glanceclient/stable/stein/requirements.txt</param> <param name="changelog-email">cloud-devel@suse.de</param> <param name="changelog-provider">gh,openstack,python-glanceclient</param> </service> ++++++ python-glanceclient-2.13.1.tar.gz -> python-glanceclient-2.16.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/.zuul.yaml new/python-glanceclient-2.16.0/.zuul.yaml --- old/python-glanceclient-2.13.1/.zuul.yaml 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/.zuul.yaml 2019-03-08 01:26:17.000000000 +0100 @@ -36,6 +36,15 @@ s-proxy: true # Hardcode glanceclient path so the job can be run on glance patches zuul_work_dir: src/git.openstack.org/openstack/python-glanceclient + irrelevant-files: + - ^doc/.*$ + - ^releasenotes/.*$ + - ^.*\.rst$ + - ^(test-|)requirements.txt$ + - ^lower-constraints.txt$ + - ^setup.cfg$ + - ^tox.ini$ + - ^\.zuul\.yaml$ - job: name: glanceclient-dsvm-functional @@ -66,6 +75,15 @@ s-proxy: true # Hardcode glanceclient path so the job can be run on glance patches zuul_work_dir: src/git.openstack.org/openstack/python-glanceclient + irrelevant-files: + - ^doc/.*$ + - ^releasenotes/.*$ + - ^.*\.rst$ + - ^(test-|)requirements.txt$ + - ^lower-constraints.txt$ + - ^setup.cfg$ + - ^tox.ini$ + - ^\.zuul\.yaml$ - job: name: glanceclient-tox-keystone-tips-base @@ -125,22 +143,25 @@ - project: templates: - - openstack-python-jobs - - openstack-python35-jobs - - release-notes-jobs - - publish-openstack-sphinx-docs - check-requirements - lib-forward-testing + - lib-forward-testing-python3 + - openstack-cover-jobs + - openstack-lower-constraints-jobs + - openstack-python-jobs + - openstack-python35-jobs + - openstack-python36-jobs + - openstack-python37-jobs + - publish-openstack-docs-pti + - release-notes-jobs-python3 check: jobs: - glanceclient-dsvm-functional-v1 - glanceclient-dsvm-functional - - openstack-tox-lower-constraints gate: jobs: - glanceclient-dsvm-functional-v1 - glanceclient-dsvm-functional - - openstack-tox-lower-constraints periodic: jobs: # NOTE(rosmaita): we only want the "tips" jobs to be run against @@ -166,6 +187,3 @@ experimental: jobs: - glanceclient-dsvm-functional-py3 - post: - jobs: - - openstack-tox-cover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/AUTHORS new/python-glanceclient-2.16.0/AUTHORS --- old/python-glanceclient-2.13.1/AUTHORS 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/AUTHORS 2019-03-08 01:28:04.000000000 +0100 @@ -95,6 +95,7 @@ Ian Wienand <iwienand@redhat.com> Ihar Hrachyshka <ihrachys@redhat.com> Itisha Dewan <ishadewan07@gmail.com> +Jack Ding <jack.ding@windriver.com> Jake Yip <jake.yip@unimelb.edu.au> Jakub Ruzicka <jruzicka@redhat.com> James E. Blair <jeblair@hp.com> @@ -124,6 +125,7 @@ Lars Gellrich <lars.gellrich@hp.com> Le Tian Ren <renlet@cn.ibm.com> Li Wei <wei.li@easystack.cn> +Liang Fang <liang.a.fang@intel.com> LiuNanke <nanke.liu@easystack.cn> Long Quan Sha <shalq@cn.ibm.com> Longgeek <longgeek@thstack.com> @@ -221,6 +223,7 @@ dineshbhor <dinesh.bhor@nttdata.com> eddie-sheffield <eddie.sheffield@rackspace.com> haobing1 <hao.bing1@zte.com.cn> +huang.zhiping <huang.zhiping@99cloud.net> iccha-sethi <iccha.sethi@rackspace.com> iccha.sethi <iccha.sethi@rackspace.com> imacdonn <iain.macdonnell@oracle.com> @@ -243,6 +246,7 @@ shu-mutou <shu-mutou@rf.jp.nec.com> sonu.kumar <sonu.kumar@nectechnologies.in> sridhargaddam <sridhar.gaddam@enovance.com> +sunjia <sunjia@inspur.com> venkatamahesh <venkatamaheshkotha@gmail.com> wanghong <w.wanghong@huawei.com> wangqi <wang.qi@99cloud.net> @@ -253,6 +257,7 @@ yangds <dongsheng.yang@easystack.cn> yatin <ykarel@redhat.com> yatin karel <yatin.karel@nectechnologies.in> +zhangbailin <zhangbailin@inspur.com> zheng yin <yin.zheng@easystack.cn> zhengyao1 <zheng.yao1@zte.com.cn> zwei <leidong@unitedstack.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/ChangeLog new/python-glanceclient-2.16.0/ChangeLog --- old/python-glanceclient-2.13.1/ChangeLog 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/ChangeLog 2019-03-08 01:28:04.000000000 +0100 @@ -1,25 +1,38 @@ CHANGES ======= -2.13.1 +2.16.0 ------ -* Don't quote colon in HTTP headers +* Release notes for 2.16.0 +* Remove redundant information from error message +* Update min tox version to 2.0 +* Update irrelevant-files for dsvm-functional tests +* add python 3.7 unit test job +* Add image-list filter for multihash +* Change openstack-dev to openstack-discuss +* Add Python 3.6 classifier to setup.cfg -2.13.0 +2.15.0 ------ -* Use "multihash" for data download validation -* Refactor periodic "tips" jobs -* import zuul job settings from project-config +* Show the backend store info +* Don't quote colon in HTTP headers +* Embed validation data when adding location -2.12.1 +2.14.0 ------ +* Refactor periodic "tips" jobs +* Cleanup .zuul.yaml +* Use "multihash" for data download validation +* add lib-forward-testing-python3 test job +* add python 3.6 unit test job +* switch documentation job to new PTI +* import zuul job settings from project-config +* Remove team diversity tags note in README +* Update reno for stable/rocky * Skip quote '=' for token header -* Add releasenote for 2.12.1 -* Update UPPER\_CONSTRAINTS\_FILE for stable/rocky -* Update .gitreview for stable/rocky 2.12.0 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/PKG-INFO new/python-glanceclient-2.16.0/PKG-INFO --- old/python-glanceclient-2.13.1/PKG-INFO 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/PKG-INFO 2019-03-08 01:28:04.000000000 +0100 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: python-glanceclient -Version: 2.13.1 +Version: 2.16.0 Summary: OpenStack Image API Client Library Home-page: https://docs.openstack.org/python-glanceclient/latest/ Author: OpenStack -Author-email: openstack-dev@lists.openstack.org +Author-email: openstack-discuss@lists.openstack.org License: Apache License, Version 2.0 Description: ======================== Team and repository tags @@ -16,8 +16,7 @@ OpenStack Images API: "project:official", "stable:follows-policy", - "vulnerability:managed", - "team:diverse-affiliation". + "vulnerability:managed". Follow the link for an explanation of these tags. .. NOTE(rosmaita): the alt text above will have to be updated when additional tags are asserted for python-glanceclient. (The SVG in the @@ -35,9 +34,9 @@ This is a client library for Glance built on the OpenStack Images API. It provides a Python API (the ``glanceclient`` module) and a command-line tool (``glance``). This library fully supports the v1 Images API, while support for the v2 API is in progress. - Development takes place via the usual OpenStack processes as outlined in the `developer guide <http://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. + Development takes place via the usual OpenStack processes as outlined in the `developer guide <https://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. - See release notes and more at `<http://docs.openstack.org/python-glanceclient/>`_. + See release notes and more at `<https://docs.openstack.org/python-glanceclient/latest/>`_. * License: Apache License, Version 2.0 * `PyPi`_ - package installation @@ -73,3 +72,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/README.rst new/python-glanceclient-2.16.0/README.rst --- old/python-glanceclient-2.13.1/README.rst 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/README.rst 2019-03-08 01:26:17.000000000 +0100 @@ -8,8 +8,7 @@ OpenStack Images API: "project:official", "stable:follows-policy", - "vulnerability:managed", - "team:diverse-affiliation". + "vulnerability:managed". Follow the link for an explanation of these tags. .. NOTE(rosmaita): the alt text above will have to be updated when additional tags are asserted for python-glanceclient. (The SVG in the @@ -27,9 +26,9 @@ This is a client library for Glance built on the OpenStack Images API. It provides a Python API (the ``glanceclient`` module) and a command-line tool (``glance``). This library fully supports the v1 Images API, while support for the v2 API is in progress. -Development takes place via the usual OpenStack processes as outlined in the `developer guide <http://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. +Development takes place via the usual OpenStack processes as outlined in the `developer guide <https://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. -See release notes and more at `<http://docs.openstack.org/python-glanceclient/>`_. +See release notes and more at `<https://docs.openstack.org/python-glanceclient/latest/>`_. * License: Apache License, Version 2.0 * `PyPi`_ - package installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/glanceclient/exc.py new/python-glanceclient-2.16.0/glanceclient/exc.py --- old/python-glanceclient-2.13.1/glanceclient/exc.py 2018-12-12 04:53:59.000000000 +0100 +++ new/python-glanceclient-2.16.0/glanceclient/exc.py 2019-03-08 01:26:17.000000000 +0100 @@ -52,7 +52,7 @@ self.details = details or self.__class__.__name__ def __str__(self): - return "%s (HTTP %s)" % (self.details, self.code) + return "HTTP %s" % (self.details) class HTTPMultipleChoices(HTTPException): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/glanceclient/tests/unit/v2/test_images.py new/python-glanceclient-2.16.0/glanceclient/tests/unit/v2/test_images.py --- old/python-glanceclient-2.13.1/glanceclient/tests/unit/v2/test_images.py 2018-12-12 04:53:59.000000000 +0100 +++ new/python-glanceclient-2.16.0/glanceclient/tests/unit/v2/test_images.py 2019-03-08 01:26:17.000000000 +0100 @@ -26,6 +26,10 @@ _CHKSUM = '93264c3edf5972c9f1cb309543d38a5c' _CHKSUM1 = '54264c3edf5972c9f1cb309453d38a46' +_HASHVAL = '54264c3edf93264c3edf5972c9f1cb309543d38a5c5972c9f1cb309453d38a46' +_HASHVAL1 = 'cb309543d38a5c5972c9f1cb309453d38a4654264c3edf93264c3edf5972c9f1' +_HASHBAD = '93264c3edf597254264c3edf5972c9f1cb309453d38a46c9f1cb309543d38a5c' + _TAG1 = 'power' _TAG2 = '64bit' @@ -457,6 +461,41 @@ {'images': []}, ), }, + '/v2/images?limit=%d&os_hash_value=%s' % (images.DEFAULT_PAGE_SIZE, + _HASHVAL): { + 'GET': ( + {}, + {'images': [ + { + 'id': '3a4560a1-e585-443e-9b39-553b46ec92d1', + 'name': 'image-1', + } + ]}, + ), + }, + '/v2/images?limit=%d&os_hash_value=%s' % (images.DEFAULT_PAGE_SIZE, + _HASHVAL1): { + 'GET': ( + {}, + {'images': [ + { + 'id': '2a4560b2-e585-443e-9b39-553b46ec92d1', + 'name': 'image-1', + }, + { + 'id': '6f99bf80-2ee6-47cf-acfe-1f1fabb7e810', + 'name': 'image-2', + }, + ]}, + ), + }, + '/v2/images?limit=%d&os_hash_value=%s' % (images.DEFAULT_PAGE_SIZE, + _HASHBAD): { + 'GET': ( + {}, + {'images': []}, + ), + }, '/v2/images?limit=%d&tag=%s' % (images.DEFAULT_PAGE_SIZE, _TAG1): { 'GET': ( {}, @@ -754,6 +793,27 @@ images = self.controller.list(**filters) self.assertEqual(0, len(images)) + def test_list_images_for_hash_single_image(self): + fake_id = '3a4560a1-e585-443e-9b39-553b46ec92d1' + filters = {'filters': {'os_hash_value': _HASHVAL}} + images = self.controller.list(**filters) + self.assertEqual(1, len(images)) + self.assertEqual('%s' % fake_id, images[0].id) + + def test_list_images_for_hash_multiple_images(self): + fake_id1 = '2a4560b2-e585-443e-9b39-553b46ec92d1' + fake_id2 = '6f99bf80-2ee6-47cf-acfe-1f1fabb7e810' + filters = {'filters': {'os_hash_value': _HASHVAL1}} + images = self.controller.list(**filters) + self.assertEqual(2, len(images)) + self.assertEqual('%s' % fake_id1, images[0].id) + self.assertEqual('%s' % fake_id2, images[1].id) + + def test_list_images_for_wrong_hash(self): + filters = {'filters': {'os_hash_value': _HASHBAD}} + images = self.controller.list(**filters) + self.assertEqual(0, len(images)) + def test_list_images_for_bogus_owner(self): filters = {'filters': {'owner': _BOGUS_ID}} images = self.controller.list(**filters) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/glanceclient/tests/unit/v2/test_shell_v2.py new/python-glanceclient-2.16.0/glanceclient/tests/unit/v2/test_shell_v2.py --- old/python-glanceclient-2.13.1/glanceclient/tests/unit/v2/test_shell_v2.py 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/glanceclient/tests/unit/v2/test_shell_v2.py 2019-03-08 01:26:21.000000000 +0100 @@ -264,6 +264,8 @@ 'sort_dir': ['desc', 'asc'], 'sort': None, 'verbose': False, + 'include_stores': False, + 'os_hash_value': None, 'os_hidden': False } args = self._make_args(input) @@ -286,6 +288,86 @@ filters=exp_img_filters) utils.print_list.assert_called_once_with({}, ['ID', 'Name']) + def test_do_image_list_verbose(self): + input = { + 'limit': None, + 'page_size': 18, + 'visibility': True, + 'member_status': 'Fake', + 'owner': 'test', + 'checksum': 'fake_checksum', + 'tag': 'fake tag', + 'properties': [], + 'sort_key': ['name', 'id'], + 'sort_dir': ['desc', 'asc'], + 'sort': None, + 'verbose': True, + 'include_stores': False, + 'os_hash_value': None, + 'os_hidden': False + } + args = self._make_args(input) + with mock.patch.object(self.gc.images, 'list') as mocked_list: + mocked_list.return_value = {} + + test_shell.do_image_list(self.gc, args) + utils.print_list.assert_called_once_with( + {}, ['ID', 'Name', 'Disk_format', 'Container_format', + 'Size', 'Status', 'Owner']) + + def test_do_image_list_with_include_stores_true(self): + input = { + 'limit': None, + 'page_size': 18, + 'visibility': True, + 'member_status': 'Fake', + 'owner': 'test', + 'checksum': 'fake_checksum', + 'tag': 'fake tag', + 'properties': [], + 'sort_key': ['name', 'id'], + 'sort_dir': ['desc', 'asc'], + 'sort': None, + 'verbose': False, + 'include_stores': True, + 'os_hash_value': None, + 'os_hidden': False + } + args = self._make_args(input) + with mock.patch.object(self.gc.images, 'list') as mocked_list: + mocked_list.return_value = {} + + test_shell.do_image_list(self.gc, args) + utils.print_list.assert_called_once_with( + {}, ['ID', 'Name', 'Stores']) + + def test_do_image_list_verbose_with_include_stores_true(self): + input = { + 'limit': None, + 'page_size': 18, + 'visibility': True, + 'member_status': 'Fake', + 'owner': 'test', + 'checksum': 'fake_checksum', + 'tag': 'fake tag', + 'properties': [], + 'sort_key': ['name', 'id'], + 'sort_dir': ['desc', 'asc'], + 'sort': None, + 'verbose': True, + 'include_stores': True, + 'os_hash_value': None, + 'os_hidden': False + } + args = self._make_args(input) + with mock.patch.object(self.gc.images, 'list') as mocked_list: + mocked_list.return_value = {} + + test_shell.do_image_list(self.gc, args) + utils.print_list.assert_called_once_with( + {}, ['ID', 'Name', 'Disk_format', 'Container_format', + 'Size', 'Status', 'Owner', 'Stores']) + def test_do_image_list_with_hidden_true(self): input = { 'limit': None, @@ -300,6 +382,8 @@ 'sort_dir': ['desc', 'asc'], 'sort': None, 'verbose': False, + 'include_stores': False, + 'os_hash_value': None, 'os_hidden': True } args = self._make_args(input) @@ -336,6 +420,8 @@ 'sort_dir': ['desc'], 'sort': None, 'verbose': False, + 'include_stores': False, + 'os_hash_value': None, 'os_hidden': False } args = self._make_args(input) @@ -372,6 +458,8 @@ 'sort_key': [], 'sort_dir': [], 'verbose': False, + 'include_stores': False, + 'os_hash_value': None, 'os_hidden': False } args = self._make_args(input) @@ -408,6 +496,8 @@ 'sort_dir': ['desc'], 'sort': None, 'verbose': False, + 'include_stores': False, + 'os_hash_value': None, 'os_hidden': False } args = self._make_args(input) @@ -1428,18 +1518,25 @@ def test_do_location_add(self): gc = self.gc - loc = {'url': 'http://foo.com/', 'metadata': {'foo': 'bar'}} - args = self._make_args({'id': 'pass', - 'url': loc['url'], - 'metadata': json.dumps(loc['metadata'])}) + loc = {'url': 'http://foo.com/', + 'metadata': {'foo': 'bar'}, + 'validation_data': {'checksum': 'csum', + 'os_hash_algo': 'algo', + 'os_hash_value': 'value'}} + args = {'id': 'pass', + 'url': loc['url'], + 'metadata': json.dumps(loc['metadata']), + 'checksum': 'csum', + 'hash_algo': 'algo', + 'hash_value': 'value'} with mock.patch.object(gc.images, 'add_location') as mocked_addloc: expect_image = {'id': 'pass', 'locations': [loc]} mocked_addloc.return_value = expect_image - test_shell.do_location_add(self.gc, args) - mocked_addloc.assert_called_once_with('pass', - loc['url'], - loc['metadata']) + test_shell.do_location_add(self.gc, self._make_args(args)) + mocked_addloc.assert_called_once_with( + 'pass', loc['url'], loc['metadata'], + validation_data=loc['validation_data']) utils.print_dict.assert_called_once_with(expect_image) def test_do_location_delete(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/glanceclient/v2/images.py new/python-glanceclient-2.16.0/glanceclient/v2/images.py --- old/python-glanceclient-2.13.1/glanceclient/v2/images.py 2018-12-12 04:53:59.000000000 +0100 +++ new/python-glanceclient-2.16.0/glanceclient/v2/images.py 2019-03-08 01:26:21.000000000 +0100 @@ -432,7 +432,7 @@ data=json.dumps(patch_body)) return (resp, body), resp - def add_location(self, image_id, url, metadata): + def add_location(self, image_id, url, metadata, validation_data=None): """Add a new location entry to an image's list of locations. It is an error to add a URL that is already present in the list of @@ -441,10 +441,13 @@ :param image_id: ID of image to which the location is to be added. :param url: URL of the location to add. :param metadata: Metadata associated with the location. + :param validation_data: Validation data for the image. :returns: The updated image """ add_patch = [{'op': 'add', 'path': '/locations/-', 'value': {'url': url, 'metadata': metadata}}] + if validation_data: + add_patch[0]['value']['validation_data'] = validation_data response = self._send_image_update_request(image_id, add_patch) # Get request id from the above update request and pass the same to # following get request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/glanceclient/v2/shell.py new/python-glanceclient-2.16.0/glanceclient/v2/shell.py --- old/python-glanceclient-2.13.1/glanceclient/v2/shell.py 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/glanceclient/v2/shell.py 2019-03-08 01:26:21.000000000 +0100 @@ -327,6 +327,9 @@ action='append', dest='properties', default=[]) @utils.arg('--checksum', metavar='<CHECKSUM>', help=_('Displays images that match the MD5 checksum.')) +@utils.arg('--hash', dest='os_hash_value', default=None, + metavar='<HASH_VALUE>', + help=_('Displays images that match the specified hash value.')) @utils.arg('--tag', metavar='<TAG>', action='append', help=_("Filter images by a user-defined tag.")) @utils.arg('--sort-key', default=[], action='append', @@ -348,10 +351,17 @@ const=True, nargs='?', help="Filters results by hidden status. Default=None.") +@utils.arg('--include-stores', + metavar='[True|False]', + default=None, + type=strutils.bool_from_string, + const=True, + nargs='?', + help="Print backend store id.") def do_image_list(gc, args): """List images you can access.""" filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag', - 'os_hidden'] + 'os_hidden', 'os_hash_value'] filter_items = [(key, getattr(args, key)) for key in filter_keys] if args.properties: @@ -384,6 +394,9 @@ columns += ['Disk_format', 'Container_format', 'Size', 'Status', 'Owner'] + if args.include_stores: + columns += ['Stores'] + images = gc.images.list(**kwargs) utils.print_list(images, columns) @@ -737,16 +750,30 @@ @utils.arg('--metadata', metavar='<STRING>', default='{}', help=_('Metadata associated with the location. ' 'Must be a valid JSON object (default: %(default)s)')) +@utils.arg('--checksum', metavar='<STRING>', + help=_('md5 checksum of image contents')) +@utils.arg('--hash-algo', metavar='<STRING>', + help=_('Multihash algorithm')) +@utils.arg('--hash-value', metavar='<STRING>', + help=_('Multihash value')) @utils.arg('id', metavar='<IMAGE_ID>', help=_('ID of image to which the location is to be added.')) def do_location_add(gc, args): """Add a location (and related metadata) to an image.""" + validation_data = {} + if args.checksum: + validation_data['checksum'] = args.checksum + if args.hash_algo: + validation_data['os_hash_algo'] = args.hash_algo + if args.hash_value: + validation_data['os_hash_value'] = args.hash_value try: metadata = json.loads(args.metadata) except ValueError: utils.exit('Metadata is not a valid JSON object.') else: - image = gc.images.add_location(args.id, args.url, metadata) + image = gc.images.add_location(args.id, args.url, metadata, + validation_data=validation_data) utils.print_dict(image) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/python_glanceclient.egg-info/PKG-INFO new/python-glanceclient-2.16.0/python_glanceclient.egg-info/PKG-INFO --- old/python-glanceclient-2.13.1/python_glanceclient.egg-info/PKG-INFO 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/python_glanceclient.egg-info/PKG-INFO 2019-03-08 01:28:04.000000000 +0100 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: python-glanceclient -Version: 2.13.1 +Version: 2.16.0 Summary: OpenStack Image API Client Library Home-page: https://docs.openstack.org/python-glanceclient/latest/ Author: OpenStack -Author-email: openstack-dev@lists.openstack.org +Author-email: openstack-discuss@lists.openstack.org License: Apache License, Version 2.0 Description: ======================== Team and repository tags @@ -16,8 +16,7 @@ OpenStack Images API: "project:official", "stable:follows-policy", - "vulnerability:managed", - "team:diverse-affiliation". + "vulnerability:managed". Follow the link for an explanation of these tags. .. NOTE(rosmaita): the alt text above will have to be updated when additional tags are asserted for python-glanceclient. (The SVG in the @@ -35,9 +34,9 @@ This is a client library for Glance built on the OpenStack Images API. It provides a Python API (the ``glanceclient`` module) and a command-line tool (``glance``). This library fully supports the v1 Images API, while support for the v2 API is in progress. - Development takes place via the usual OpenStack processes as outlined in the `developer guide <http://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. + Development takes place via the usual OpenStack processes as outlined in the `developer guide <https://docs.openstack.org/infra/manual/developers.html>`_. The master repository is in `Git <https://git.openstack.org/cgit/openstack/python-glanceclient>`_. - See release notes and more at `<http://docs.openstack.org/python-glanceclient/>`_. + See release notes and more at `<https://docs.openstack.org/python-glanceclient/latest/>`_. * License: Apache License, Version 2.0 * `PyPi`_ - package installation @@ -73,3 +72,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/python_glanceclient.egg-info/SOURCES.txt new/python-glanceclient-2.16.0/python_glanceclient.egg-info/SOURCES.txt --- old/python-glanceclient-2.13.1/python_glanceclient.egg-info/SOURCES.txt 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/python_glanceclient.egg-info/SOURCES.txt 2019-03-08 01:28:04.000000000 +0100 @@ -114,19 +114,21 @@ python_glanceclient.egg-info/requires.txt python_glanceclient.egg-info/top_level.txt releasenotes/notes/.placeholder +releasenotes/notes/2.16.0_Release-43ebe06b74a272ba.yaml releasenotes/notes/bp-use-keystoneauth-e12f300e58577b13.yaml releasenotes/notes/headers-encoding-bug-rocky-889ccd885a9cc4e8.yaml -releasenotes/notes/headers-encoding-bug-rocky-part-deux-a58a7c0feaa6f27e.yaml releasenotes/notes/hidden-images-support-9e2277ad62bf0d31.yaml releasenotes/notes/http-headers-per-rfc-8187-aafa3199f863be81.yaml releasenotes/notes/log-request-id-e7f67a23a0ed5c7b.yaml releasenotes/notes/multi-store-support-acc7ad0e7e8b6f99.yaml releasenotes/notes/multihash-download-verification-596e91bf7b68e7db.yaml +releasenotes/notes/multihash-filter-ef2a48dc48fae9dc.yaml releasenotes/notes/multihash-support-f1474590cf3ef5cf.yaml releasenotes/notes/pike-relnote-2c77b01aa8799f35.yaml releasenotes/notes/return-request-id-to-caller-47f4c0a684b1d88e.yaml releasenotes/notes/rm-deprecate-ssl-opts-c88225a4ba2285ad.yaml releasenotes/notes/rocky-2.11.0-ba936fd5e969198d.yaml +releasenotes/notes/validation-data-support-dfb2463914818cd2.yaml releasenotes/source/conf.py releasenotes/source/earlier.rst releasenotes/source/index.rst @@ -135,6 +137,7 @@ releasenotes/source/ocata.rst releasenotes/source/pike.rst releasenotes/source/queens.rst +releasenotes/source/rocky.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/python_glanceclient.egg-info/pbr.json new/python-glanceclient-2.16.0/python_glanceclient.egg-info/pbr.json --- old/python-glanceclient-2.13.1/python_glanceclient.egg-info/pbr.json 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/python_glanceclient.egg-info/pbr.json 2019-03-08 01:28:04.000000000 +0100 @@ -1 +1 @@ -{"git_version": "e0673a1", "is_release": true} \ No newline at end of file +{"git_version": "44a4dbd", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/notes/2.16.0_Release-43ebe06b74a272ba.yaml new/python-glanceclient-2.16.0/releasenotes/notes/2.16.0_Release-43ebe06b74a272ba.yaml --- old/python-glanceclient-2.13.1/releasenotes/notes/2.16.0_Release-43ebe06b74a272ba.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/notes/2.16.0_Release-43ebe06b74a272ba.yaml 2019-03-08 01:26:21.000000000 +0100 @@ -0,0 +1,12 @@ +--- +prelude: > + This version of python-glanceclient adds Python 3.6 classifier and gating + on Python 3.7 environment. +fixes: + - | + * Bug 1788271_: Add image-list filter for multihash + * Bug 1598714_: Remove redundant information from error message + + .. _1788271: https://code.launchpad.net/bugs/1788271 + .. _1598714: https://code.launchpad.net/bugs/1598714 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/notes/headers-encoding-bug-rocky-part-deux-a58a7c0feaa6f27e.yaml new/python-glanceclient-2.16.0/releasenotes/notes/headers-encoding-bug-rocky-part-deux-a58a7c0feaa6f27e.yaml --- old/python-glanceclient-2.13.1/releasenotes/notes/headers-encoding-bug-rocky-part-deux-a58a7c0feaa6f27e.yaml 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/notes/headers-encoding-bug-rocky-part-deux-a58a7c0feaa6f27e.yaml 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ ---- -fixes: - - | - The announcement that `Bug 1783290 - <https://code.launchpad.net/bugs/1783290>`_ was fixed in the previous - release was premature. That bug has been more thoroughly fixed in - this release. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/notes/multihash-filter-ef2a48dc48fae9dc.yaml new/python-glanceclient-2.16.0/releasenotes/notes/multihash-filter-ef2a48dc48fae9dc.yaml --- old/python-glanceclient-2.13.1/releasenotes/notes/multihash-filter-ef2a48dc48fae9dc.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/notes/multihash-filter-ef2a48dc48fae9dc.yaml 2019-03-08 01:26:17.000000000 +0100 @@ -0,0 +1,13 @@ +--- +features: + - | + For parity with the old ``checksum`` field, this release adds the + ability for CLI users to filter the image list based upon a particular + multihash value using the ``--hash <HASH_VALUE>`` option. Issue the + command: + + .. code-block:: none + + glance help image-list + + for more information. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/notes/validation-data-support-dfb2463914818cd2.yaml new/python-glanceclient-2.16.0/releasenotes/notes/validation-data-support-dfb2463914818cd2.yaml --- old/python-glanceclient-2.13.1/releasenotes/notes/validation-data-support-dfb2463914818cd2.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/notes/validation-data-support-dfb2463914818cd2.yaml 2019-03-08 01:26:21.000000000 +0100 @@ -0,0 +1,12 @@ +--- +features: + - | + Support for embedding validation data (checksum and multihash) when adding + a location to an image. Requires the Stein release server-side. + + The ``glance.images.add_location()`` method now accepts an optional + argument ``validation_data``, in the form of a dictionary containing + ``checksum``, ``os_hash_algo`` and ``os_hash_value``. + + The ``location-add`` command now accepts optional arguments ``--checksum``, + ``--hash-algo`` and ``--hash-value``. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/source/index.rst new/python-glanceclient-2.16.0/releasenotes/source/index.rst --- old/python-glanceclient-2.13.1/releasenotes/source/index.rst 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/source/index.rst 2019-03-08 01:26:17.000000000 +0100 @@ -6,6 +6,7 @@ :maxdepth: 1 unreleased + rocky queens pike ocata diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/releasenotes/source/rocky.rst new/python-glanceclient-2.16.0/releasenotes/source/rocky.rst --- old/python-glanceclient-2.13.1/releasenotes/source/rocky.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-glanceclient-2.16.0/releasenotes/source/rocky.rst 2019-03-08 01:26:17.000000000 +0100 @@ -0,0 +1,6 @@ +=================================== + Rocky Series Release Notes +=================================== + +.. release-notes:: + :branch: stable/rocky diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/setup.cfg new/python-glanceclient-2.16.0/setup.cfg --- old/python-glanceclient-2.13.1/setup.cfg 2018-12-12 04:56:32.000000000 +0100 +++ new/python-glanceclient-2.16.0/setup.cfg 2019-03-08 01:28:04.000000000 +0100 @@ -5,7 +5,7 @@ README.rst license = Apache License, Version 2.0 author = OpenStack -author-email = openstack-dev@lists.openstack.org +author-email = openstack-discuss@lists.openstack.org home-page = https://docs.openstack.org/python-glanceclient/latest/ classifier = Development Status :: 5 - Production/Stable @@ -20,6 +20,7 @@ Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3.6 [files] packages = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-glanceclient-2.13.1/tox.ini new/python-glanceclient-2.16.0/tox.ini --- old/python-glanceclient-2.13.1/tox.ini 2018-12-12 04:54:05.000000000 +0100 +++ new/python-glanceclient-2.16.0/tox.ini 2019-03-08 01:26:17.000000000 +0100 @@ -1,6 +1,6 @@ [tox] envlist = py35,py27,pep8 -minversion = 1.6 +minversion = 2.0 skipsdist = True [testenv] @@ -11,7 +11,7 @@ OS_STDERR_NOCAPTURE=False deps = - -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/rocky} + -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs}
participants (1)
-
root