Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-novaclient for openSUSE:Factory checked in at 2021-05-10 15:37:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-novaclient (Old) and /work/SRC/openSUSE:Factory/.python-novaclient.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-novaclient" Mon May 10 15:37:32 2021 rev:37 rq:889980 version:17.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-novaclient/python-novaclient.changes 2020-10-26 16:16:44.814956051 +0100 +++ /work/SRC/openSUSE:Factory/.python-novaclient.new.2988/python-novaclient.changes 2021-05-10 15:39:43.581479209 +0200 @@ -1,0 +2,17 @@ +Sun May 2 17:17:33 UTC 2021 - cloud-de...@suse.de + +- update to version 17.4.0 + - Cleanup py27 support + - Remove the unused coding style modules + - Add Python3 wallaby unit tests + - Uncap PrettyTable + - Fix undesirable raw Python error + - Deprecate agent commands and APIs + - Update master for stable/victoria + - Add support for microversion v2.88 + - Remove install unnecessary packages + - Fix a functional test for 'nova agent-list' + - requirements: Remove simplejson + - Remove Babel from lower-constraints.txt + +------------------------------------------------------------------- Old: ---- python-novaclient-17.2.1.tar.gz New: ---- python-novaclient-17.4.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-novaclient.spec ++++++ --- /var/tmp/diff_new_pack.adb5l3/_old 2021-05-10 15:39:44.029477375 +0200 +++ /var/tmp/diff_new_pack.adb5l3/_new 2021-05-10 15:39:44.029477375 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-novaclient # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,12 +17,14 @@ Name: python-novaclient -Version: 17.2.1 +Version: 17.4.0 Release: 0 +Epoch: 0 Summary: Python API and CLI for OpenStack Nova License: Apache-2.0 Group: Development/Languages/Python -Source0: https://files.pythonhosted.org/packages/source/p/python-novaclient/python-novaclient-17.2.1.tar.gz +URL: https://docs.openstack.org/python-novaclient +Source0: https://files.pythonhosted.org/packages/source/p/python-novaclient/python-novaclient-17.4.0.tar.gz BuildRequires: openssl BuildRequires: openstack-macros BuildRequires: python3-cinderclient @@ -47,7 +49,6 @@ %package -n python3-novaclient Summary: Python API and CLI for OpenStack Nova -Group: Development/Languages/Python Requires: openssl Requires: python3-Babel Requires: python3-PrettyTable >= 0.7.2 @@ -57,7 +58,7 @@ Requires: python3-oslo.serialization >= 2.18.0 Requires: python3-oslo.utils >= 3.33.0 Requires: python3-pbr >= 2.0.0 -Requires: python3-simplejson >= 3.5.1 +Requires: python3-simplejson Requires: python3-six %if 0%{?suse_version} Obsoletes: python2-novaclient < 16.0.0 @@ -90,7 +91,7 @@ %build %{py3_build} -PBR_VERSION=17.2.1 %sphinx_build -b html -d doc/build/doctrees doc/source doc/build/html +PBR_VERSION=17.4.0 %sphinx_build -b html -d doc/build/doctrees doc/source doc/build/html # Fix hidden-file-or-dir warnings rm -fr doc/build/html/.doctrees doc/build/html/.buildinfo ++++++ _service ++++++ --- /var/tmp/diff_new_pack.adb5l3/_old 2021-05-10 15:39:44.061477244 +0200 +++ /var/tmp/diff_new_pack.adb5l3/_new 2021-05-10 15:39:44.061477244 +0200 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/victoria/openstack/python-novaclient/python-novaclient.spec.j2</param> + <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/wallaby/openstack/python-novaclient/python-novaclient.spec.j2</param> <param name="output-name">python-novaclient.spec</param> - <param name="requirements">https://opendev.org/openstack/python-novaclient/raw/branch/stable/victoria/requirements.txt</param> + <param name="requirements">https://opendev.org/openstack/python-novaclient/raw/branch/stable/wallaby/requirements.txt</param> <param name="changelog-email">cloud-de...@suse.de</param> <param name="changelog-provider">gh,openstack,python-novaclient</param> </service> ++++++ python-novaclient-17.2.1.tar.gz -> python-novaclient-17.4.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/.zuul.yaml new/python-novaclient-17.4.0/.zuul.yaml --- old/python-novaclient-17.2.1/.zuul.yaml 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/.zuul.yaml 2021-03-11 20:47:21.000000000 +0100 @@ -20,7 +20,7 @@ - lib-forward-testing-python3 - openstack-cover-jobs - openstack-lower-constraints-jobs - - openstack-python3-victoria-jobs + - openstack-python3-wallaby-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 check: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/AUTHORS new/python-novaclient-17.4.0/AUTHORS --- old/python-novaclient-17.2.1/AUTHORS 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/AUTHORS 2021-03-11 20:48:00.000000000 +0100 @@ -346,6 +346,7 @@ Stanis??aw Pitucha <stanislaw.pitu...@hp.com> Stef T <stelf...@internap.com> Stephen Finucane <sfinu...@redhat.com> +Stephen Finucane <stephen...@redhat.com> Steven Kaufer <kau...@us.ibm.com> Sujitha <sujitha.n...@intel.com> Sulochan Acharya <suloc...@gmail.com> @@ -488,6 +489,7 @@ shihanzhang <shihanzh...@huawei.com> shilpa.devharakar <shilpa.devhara...@nttdata.com> shu-mutou <shu-mu...@rf.jp.nec.com> +songwenping <songwenp...@inspur.com> sonu.kumar <sonu.ku...@nectechnologies.in> sridhargaddam <sridhar.gad...@enovance.com> sunjia <sun...@inspur.com> @@ -500,6 +502,7 @@ wangxiyuan <wangxiy...@huawei.com> wingwj <win...@gmail.com> wu.chunyang <wu.chuny...@99cloud.net> +wu.shiming <wushim...@yovole.com> xiexs <xi...@cn.fujitsu.com> yamini sardana <yamini.sard...@tcs.com> yanghuichan <yan...@fiberhome.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/ChangeLog new/python-novaclient-17.4.0/ChangeLog --- old/python-novaclient-17.2.1/ChangeLog 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/ChangeLog 2021-03-11 20:48:00.000000000 +0100 @@ -1,6 +1,26 @@ CHANGES ======= +17.4.0 +------ + +* Add support for microversion v2.88 +* requirements: Remove simplejson +* Uncap PrettyTable + +17.3.0 +------ + +* Deprecate agent commands and APIs +* Fix undesirable raw Python error +* Fix a functional test for 'nova agent-list' +* Remove Babel from lower-constraints.txt +* Cleanup py27 support +* Remove the unused coding style modules +* Remove install unnecessary packages +* Add Python3 wallaby unit tests +* Update master for stable/victoria + 17.2.1 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/PKG-INFO new/python-novaclient-17.4.0/PKG-INFO --- old/python-novaclient-17.2.1/PKG-INFO 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/PKG-INFO 2021-03-11 20:48:00.661249600 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: python-novaclient -Version: 17.2.1 +Version: 17.4.0 Summary: Client library for OpenStack Compute API Home-page: https://docs.openstack.org/python-novaclient/latest Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/lower-constraints.txt new/python-novaclient-17.4.0/lower-constraints.txt --- old/python-novaclient-17.2.1/lower-constraints.txt 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/lower-constraints.txt 2021-03-11 20:47:21.000000000 +0100 @@ -1,8 +1,6 @@ amqp==2.1.1 appdirs==1.3.0 asn1crypto==0.23.0 -Babel==2.3.4 -bandit==1.4.0 cachetools==2.0.0 cffi==1.14.0 cliff==2.8.0 @@ -19,13 +17,11 @@ extras==1.0.0 fasteners==0.7.0 fixtures==3.0.0 -flake8==2.5.5 future==0.16.0 futurist==1.2.0 gitdb==0.6.4 GitPython==1.0.1 greenlet==0.4.15 -hacking==1.1.0 idna==2.6 iso8601==0.1.11 Jinja2==2.10 @@ -37,7 +33,6 @@ kombu==4.0.0 linecache2==1.0.0 MarkupSafe==1.1.1 -mccabe==0.2.1 monotonic==0.6 msgpack-python==0.4.0 munch==2.1.0 @@ -62,14 +57,12 @@ Paste==2.0.2 PasteDeploy==1.5.0 pbr==2.0.0 -pep8==1.5.7 pika==0.10.0 pika-pool==0.1.3 positional==1.2.1 prettytable==0.7.2 pyasn1==0.1.8 pycparser==2.18 -pyflakes==0.8.1 pyinotify==0.9.6 pyOpenSSL==17.1.0 pyparsing==2.1.0 @@ -89,7 +82,6 @@ requestsexceptions==1.2.0 rfc3986==0.3.1 Routes==2.3.1 -simplejson==3.5.1 smmap==0.9.0 statsd==3.2.1 stevedore==2.0.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/__init__.py new/python-novaclient-17.4.0/novaclient/__init__.py --- old/python-novaclient-17.2.1/novaclient/__init__.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/__init__.py 2021-03-11 20:47:21.000000000 +0100 @@ -25,4 +25,4 @@ # when client supported the max version, and bumped sequentially, otherwise # the client may break due to server side new version may include some # backward incompatible change. -API_MAX_VERSION = api_versions.APIVersion("2.87") +API_MAX_VERSION = api_versions.APIVersion("2.88") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/shell.py new/python-novaclient-17.4.0/novaclient/shell.py --- old/python-novaclient-17.2.1/novaclient/shell.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/shell.py 2021-03-11 20:47:21.000000000 +0100 @@ -365,6 +365,9 @@ help=_("Use this API endpoint instead of the Service Catalog. " "Defaults to env[OS_ENDPOINT_OVERRIDE].")) + parser.set_defaults(func=self.do_help) + parser.set_defaults(command='') + if osprofiler_profiler: parser.add_argument('--profile', metavar='HMAC_KEY', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/tests/functional/v2/legacy/test_readonly_nova.py new/python-novaclient-17.4.0/novaclient/tests/functional/v2/legacy/test_readonly_nova.py --- old/python-novaclient-17.2.1/novaclient/tests/functional/v2/legacy/test_readonly_nova.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/tests/functional/v2/legacy/test_readonly_nova.py 2021-03-11 20:47:21.000000000 +0100 @@ -86,8 +86,24 @@ self.nova('help') def test_agent_list(self): - self.nova('agent-list') - self.nova('agent-list', flags='--debug') + ex = self.assertRaises(exceptions.CommandFailed, + self.nova, 'agent-list') + self.assertIn( + "This resource is no longer available. " + "No forwarding address is given. (HTTP 410)", str(ex)) + self.assertIn( + "This command has been deprecated since 23.0.0 Wallaby Release " + "and will be removed in the first major release " + "after the Nova server 24.0.0 X release.", str(ex.stderr)) + ex = self.assertRaises(exceptions.CommandFailed, + self.nova, 'agent-list', flags='--debug') + self.assertIn( + "This resource is no longer available. " + "No forwarding address is given. (HTTP 410)", str(ex)) + self.assertIn( + "This command has been deprecated since 23.0.0 Wallaby Release " + "and will be removed in the first major release " + "after the Nova server 24.0.0 X release.", str(ex.stderr)) def test_migration_list(self): self.nova('migration-list') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/tests/unit/fixture_data/hypervisors.py new/python-novaclient-17.4.0/novaclient/tests/unit/fixture_data/hypervisors.py --- old/python-novaclient-17.2.1/novaclient/tests/unit/fixture_data/hypervisors.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/tests/unit/fixture_data/hypervisors.py 2021-03-11 20:47:21.000000000 +0100 @@ -27,15 +27,41 @@ service_id_1 = 1 service_id_2 = 2 + @staticmethod + def _transform_hypervisor_details(hypervisor): + """Transform a detailed hypervisor view from 2.53 to 2.88.""" + del hypervisor['current_workload'] + del hypervisor['disk_available_least'] + del hypervisor['free_ram_mb'] + del hypervisor['free_disk_gb'] + del hypervisor['local_gb'] + del hypervisor['local_gb_used'] + del hypervisor['memory_mb'] + del hypervisor['memory_mb_used'] + del hypervisor['running_vms'] + del hypervisor['vcpus'] + del hypervisor['vcpus_used'] + hypervisor['uptime'] = 'fake uptime' + def setUp(self): super(V1, self).setUp() - uuid_as_id = (api_versions.APIVersion(self.api_version) >= - api_versions.APIVersion('2.53')) + + api_version = api_versions.APIVersion(self.api_version) get_os_hypervisors = { 'hypervisors': [ - {'id': self.hyper_id_1, 'hypervisor_hostname': 'hyper1'}, - {'id': self.hyper_id_2, 'hypervisor_hostname': 'hyper2'}, + { + 'id': self.hyper_id_1, + 'hypervisor_hostname': 'hyper1', + 'state': 'up', + 'status': 'enabled', + }, + { + 'id': self.hyper_id_2, + 'hypervisor_hostname': 'hyper2', + 'state': 'up', + 'status': 'enabled', + }, ] } @@ -67,7 +93,9 @@ 'current_workload': 2, 'running_vms': 2, 'cpu_info': 'cpu_info', - 'disk_available_least': 100 + 'disk_available_least': 100, + 'state': 'up', + 'status': 'enabled', }, { 'id': self.hyper_id_2, @@ -89,11 +117,17 @@ 'current_workload': 2, 'running_vms': 2, 'cpu_info': 'cpu_info', - 'disk_available_least': 100 + 'disk_available_least': 100, + 'state': 'up', + 'status': 'enabled', } ] } + if api_version >= api_versions.APIVersion('2.88'): + for hypervisor in get_os_hypervisors_detail['hypervisors']: + self._transform_hypervisor_details(hypervisor) + self.requests_mock.get(self.url('detail'), json=get_os_hypervisors_detail, headers=self.headers) @@ -121,12 +155,22 @@ get_os_hypervisors_search = { 'hypervisors': [ - {'id': self.hyper_id_1, 'hypervisor_hostname': 'hyper1'}, - {'id': self.hyper_id_2, 'hypervisor_hostname': 'hyper2'} + { + 'id': self.hyper_id_1, + 'hypervisor_hostname': 'hyper1', + 'state': 'up', + 'status': 'enabled', + }, + { + 'id': self.hyper_id_2, + 'hypervisor_hostname': 'hyper2', + 'state': 'up', + 'status': 'enabled', + }, ] } - if uuid_as_id: + if api_version >= api_versions.APIVersion('2.53'): url = self.url(hypervisor_hostname_pattern='hyper') else: url = self.url('hyper', 'search') @@ -134,7 +178,7 @@ json=get_os_hypervisors_search, headers=self.headers) - if uuid_as_id: + if api_version >= api_versions.APIVersion('2.53'): get_os_hypervisors_search_u_v2_53 = { 'error_name': 'BadRequest', 'message': 'Invalid input for query parameters ' @@ -164,6 +208,8 @@ { 'id': self.hyper_id_1, 'hypervisor_hostname': 'hyper1', + 'state': 'up', + 'status': 'enabled', 'servers': [ {'name': 'inst1', 'uuid': 'uuid1'}, {'name': 'inst2', 'uuid': 'uuid2'} @@ -172,6 +218,8 @@ { 'id': self.hyper_id_2, 'hypervisor_hostname': 'hyper2', + 'state': 'up', + 'status': 'enabled', 'servers': [ {'name': 'inst3', 'uuid': 'uuid3'}, {'name': 'inst4', 'uuid': 'uuid4'} @@ -180,7 +228,7 @@ ] } - if uuid_as_id: + if api_version >= api_versions.APIVersion('2.53'): url = self.url(hypervisor_hostname_pattern='hyper', with_servers=True) else: @@ -207,10 +255,16 @@ 'current_workload': 2, 'running_vms': 2, 'cpu_info': 'cpu_info', - 'disk_available_least': 100 + 'disk_available_least': 100, + 'state': 'up', + 'status': 'enabled', } } + if api_version >= api_versions.APIVersion('2.88'): + self._transform_hypervisor_details( + get_os_hypervisors_hyper1['hypervisor']) + self.requests_mock.get(self.url(self.hyper_id_1), json=get_os_hypervisors_hyper1, headers=self.headers) @@ -219,7 +273,9 @@ 'hypervisor': { 'id': self.hyper_id_1, 'hypervisor_hostname': 'hyper1', - 'uptime': 'fake uptime' + 'uptime': 'fake uptime', + 'state': 'up', + 'status': 'enabled', } } @@ -228,10 +284,15 @@ headers=self.headers) -class V2_53(V1): +class V253(V1): """Fixture data for the os-hypervisors 2.53 API.""" api_version = '2.53' hyper_id_1 = 'd480b1b6-2255-43c2-b2c2-d60d42c2c074' hyper_id_2 = '43a8214d-f36a-4fc0-a25c-3cf35c17522d' service_id_1 = 'a87743ff-9c29-42ff-805d-2444659b5fc0' service_id_2 = '0486ab8b-1cfc-4ccb-9d94-9f22ec8bbd6b' + + +class V288(V253): + """Fixture data for the os-hypervisors 2.88 API.""" + api_version = '2.88' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/tests/unit/test_shell.py new/python-novaclient-17.4.0/novaclient/tests/unit/test_shell.py --- old/python-novaclient-17.2.1/novaclient/tests/unit/test_shell.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/tests/unit/test_shell.py 2021-03-11 20:47:21.000000000 +0100 @@ -451,6 +451,9 @@ def test_help_no_options(self): self._test_help('') + def test_help_no_subcommand(self): + self._test_help('--os-compute-api-version 2.87') + def test_help_on_subcommand(self): required = [ '.*?^usage: nova set-password', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/tests/unit/v2/test_hypervisors.py new/python-novaclient-17.4.0/novaclient/tests/unit/v2/test_hypervisors.py --- old/python-novaclient-17.2.1/novaclient/tests/unit/v2/test_hypervisors.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/tests/unit/v2/test_hypervisors.py 2021-03-11 20:47:21.000000000 +0100 @@ -63,7 +63,9 @@ current_workload=2, running_vms=2, cpu_info='cpu_info', - disk_available_least=100), + disk_available_least=100, + state='up', + status='enabled'), dict(id=self.data_fixture.hyper_id_2, service=dict(id=self.data_fixture.service_id_2, host="compute2"), @@ -81,7 +83,24 @@ current_workload=2, running_vms=2, cpu_info='cpu_info', - disk_available_least=100)] + disk_available_least=100, + state='up', + status='enabled')] + + if self.cs.api_version >= api_versions.APIVersion('2.88'): + for hypervisor in expected: + del hypervisor['current_workload'] + del hypervisor['disk_available_least'] + del hypervisor['free_ram_mb'] + del hypervisor['free_disk_gb'] + del hypervisor['local_gb'] + del hypervisor['local_gb_used'] + del hypervisor['memory_mb'] + del hypervisor['memory_mb_used'] + del hypervisor['running_vms'] + del hypervisor['vcpus'] + del hypervisor['vcpus_used'] + hypervisor['uptime'] = 'fake uptime' result = self.cs.hypervisors.list() self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) @@ -93,9 +112,13 @@ def test_hypervisor_search(self): expected = [ dict(id=self.data_fixture.hyper_id_1, - hypervisor_hostname='hyper1'), + hypervisor_hostname='hyper1', + state='up', + status='enabled'), dict(id=self.data_fixture.hyper_id_2, - hypervisor_hostname='hyper2')] + hypervisor_hostname='hyper2', + state='up', + status='enabled')] result = self.cs.hypervisors.search('hyper') self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) @@ -131,11 +154,15 @@ expected = [ dict(id=self.data_fixture.hyper_id_1, hypervisor_hostname='hyper1', + state='up', + status='enabled', servers=[ dict(name='inst1', uuid='uuid1'), dict(name='inst2', uuid='uuid2')]), dict(id=self.data_fixture.hyper_id_2, hypervisor_hostname='hyper2', + state='up', + status='enabled', servers=[ dict(name='inst3', uuid='uuid3'), dict(name='inst4', uuid='uuid4')]), @@ -171,7 +198,23 @@ current_workload=2, running_vms=2, cpu_info='cpu_info', - disk_available_least=100) + disk_available_least=100, + state='up', + status='enabled') + + if self.cs.api_version >= api_versions.APIVersion('2.88'): + del expected['current_workload'] + del expected['disk_available_least'] + del expected['free_ram_mb'] + del expected['free_disk_gb'] + del expected['local_gb'] + del expected['local_gb_used'] + del expected['memory_mb'] + del expected['memory_mb_used'] + del expected['running_vms'] + del expected['vcpus'] + del expected['vcpus_used'] + expected['uptime'] = 'fake uptime' result = self.cs.hypervisors.get(self.data_fixture.hyper_id_1) self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) @@ -184,7 +227,9 @@ expected = dict( id=self.data_fixture.hyper_id_1, hypervisor_hostname="hyper1", - uptime="fake uptime") + uptime="fake uptime", + state='up', + status='enabled') result = self.cs.hypervisors.uptime(self.data_fixture.hyper_id_1) self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) @@ -215,11 +260,6 @@ self.compare_to_expected(expected, result) - def test_hypervisor_statistics_data_model(self): - result = self.cs.hypervisor_stats.statistics() - self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) - self.assert_called('GET', '/os-hypervisors/statistics') - # Test for Bug #1370415, the line below used to raise AttributeError self.assertEqual("<HypervisorStats: 2 Hypervisors>", result.__repr__()) @@ -237,19 +277,23 @@ self.assertEqual([v], self.requests_mock.last_request.qs[k]) -class HypervisorsV2_53Test(HypervisorsV233Test): +class HypervisorsV253Test(HypervisorsV233Test): """Tests the os-hypervisors 2.53 API bindings.""" - data_fixture_class = data.V2_53 + data_fixture_class = data.V253 def setUp(self): - super(HypervisorsV2_53Test, self).setUp() + super(HypervisorsV253Test, self).setUp() self.cs.api_version = api_versions.APIVersion("2.53") def test_hypervisor_search_detailed(self): expected = [ dict(id=self.data_fixture.hyper_id_1, + state='up', + status='enabled', hypervisor_hostname='hyper1'), dict(id=self.data_fixture.hyper_id_2, + state='up', + status='enabled', hypervisor_hostname='hyper2')] result = self.cs.hypervisors.search('hyper', detailed=True) self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) @@ -257,3 +301,35 @@ 'GET', '/os-hypervisors/detail?hypervisor_hostname_pattern=hyper') for idx, hyper in enumerate(result): self.compare_to_expected(expected[idx], hyper) + + +class HypervisorsV288Test(HypervisorsV253Test): + data_fixture_class = data.V288 + + def setUp(self): + super().setUp() + self.cs.api_version = api_versions.APIVersion('2.88') + + def test_hypervisor_uptime(self): + expected = { + 'id': self.data_fixture.hyper_id_1, + 'hypervisor_hostname': 'hyper1', + 'uptime': 'fake uptime', + 'state': 'up', + 'status': 'enabled', + } + + result = self.cs.hypervisors.uptime(self.data_fixture.hyper_id_1) + self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'GET', '/os-hypervisors/%s' % self.data_fixture.hyper_id_1) + + self.compare_to_expected(expected, result) + + def test_hypervisor_statistics(self): + exc = self.assertRaises( + exceptions.UnsupportedVersion, + self.cs.hypervisor_stats.statistics) + self.assertIn( + "The 'statistics' API is removed in API version 2.88 or later.", + str(exc)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/tests/unit/v2/test_shell.py new/python-novaclient-17.4.0/novaclient/tests/unit/v2/test_shell.py --- old/python-novaclient-17.2.1/novaclient/tests/unit/v2/test_shell.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/tests/unit/v2/test_shell.py 2021-03-11 20:47:21.000000000 +0100 @@ -118,14 +118,18 @@ return self.shell.cs.assert_not_called(method, url, body) def test_agents_list_with_hypervisor(self): - self.run_command('agent-list --hypervisor xen') + _, err = self.run_command('agent-list --hypervisor xen') self.assert_called('GET', '/os-agents?hypervisor=xen') + self.assertIn( + 'This command has been deprecated since 23.0.0 Wallaby Release ' + 'and will be removed in the first major release ' + 'after the Nova server 24.0.0 X release.', err) def test_agents_create(self): - self.run_command('agent-create win x86 7.0 ' - '/xxx/xxx/xxx ' - 'add6bb58e139be103324d04d82d8f546 ' - 'kvm') + _, err = self.run_command('agent-create win x86 7.0 ' + '/xxx/xxx/xxx ' + 'add6bb58e139be103324d04d82d8f546 ' + 'kvm') self.assert_called( 'POST', '/os-agents', {'agent': { @@ -135,19 +139,31 @@ 'version': '7.0', 'url': '/xxx/xxx/xxx', 'md5hash': 'add6bb58e139be103324d04d82d8f546'}}) + self.assertIn( + 'This command has been deprecated since 23.0.0 Wallaby Release ' + 'and will be removed in the first major release ' + 'after the Nova server 24.0.0 X release.', err) def test_agents_delete(self): - self.run_command('agent-delete 1') + _, err = self.run_command('agent-delete 1') self.assert_called('DELETE', '/os-agents/1') + self.assertIn( + 'This command has been deprecated since 23.0.0 Wallaby Release ' + 'and will be removed in the first major release ' + 'after the Nova server 24.0.0 X release.', err) def test_agents_modify(self): - self.run_command('agent-modify 1 8.0 /yyy/yyyy/yyyy ' - 'add6bb58e139be103324d04d82d8f546') + _, err = self.run_command('agent-modify 1 8.0 /yyy/yyyy/yyyy ' + 'add6bb58e139be103324d04d82d8f546') self.assert_called('PUT', '/os-agents/1', {"para": { "url": "/yyy/yyyy/yyyy", "version": "8.0", "md5hash": "add6bb58e139be103324d04d82d8f546"}}) + self.assertIn( + 'This command has been deprecated since 23.0.0 Wallaby Release ' + 'and will be removed in the first major release ' + 'after the Nova server 24.0.0 X release.', err) def test_boot(self): self.run_command('boot --flavor 1 --image %s ' @@ -3559,6 +3575,16 @@ self.run_command('hypervisor-stats') self.assert_called('GET', '/os-hypervisors/statistics') + def test_hypervisor_stats_v2_88(self): + """Tests nova hypervisor-stats at the 2.88 microversion.""" + ex = self.assertRaises( + exceptions.CommandError, self.run_command, + 'hypervisor-stats', api_version='2.88') + self.assertIn( + 'The hypervisor-stats command is not supported in API version ' + '2.88 or later.', + str(ex)) + def test_quota_show(self): self.run_command( 'quota-show --tenant ' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/v2/agents.py new/python-novaclient-17.4.0/novaclient/v2/agents.py --- old/python-novaclient-17.2.1/novaclient/v2/agents.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/v2/agents.py 2021-03-11 20:47:21.000000000 +0100 @@ -19,6 +19,11 @@ from novaclient import base +# NOTE(takashin): The os-agents APIs have been removed +# in https://review.opendev.org/c/openstack/nova/+/749309 . +# But the following API bindings remains as ther are +# because the python-openstackclient depends on them. + class Agent(base.Resource): def __repr__(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/v2/hypervisors.py new/python-novaclient-17.4.0/novaclient/v2/hypervisors.py --- old/python-novaclient-17.2.1/novaclient/v2/hypervisors.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/v2/hypervisors.py 2021-03-11 20:47:21.000000000 +0100 @@ -123,8 +123,25 @@ :param hypervisor: Either a Hypervisor object or an ID. Starting with microversion 2.53 the ID must be a UUID value. """ - return self._get("/os-hypervisors/%s/uptime" % base.getid(hypervisor), - "hypervisor") + # Starting with microversion 2.88, the '/os-hypervisors/{id}/uptime' + # route is removed in favour of returning 'uptime' in the response of + # the '/os-hypervisors/{id}' route. This behaves slightly differently, + # in that it won't error out if a virt driver doesn't support reporting + # uptime or if the hypervisor is down, but it's a good enough + # approximation + if self.api_version < api_versions.APIVersion("2.88"): + return self._get( + "/os-hypervisors/%s/uptime" % base.getid(hypervisor), + "hypervisor") + + resp, body = self.api.client.get( + "/os-hypervisors/%s" % base.getid(hypervisor) + ) + content = { + k: v for k, v in body['hypervisor'].items() + if k in ('id', 'hypervisor_hostname', 'state', 'status', 'uptime') + } + return self.resource_class(self, content, loaded=True, resp=resp) def statistics(self): """ @@ -145,8 +162,15 @@ class HypervisorStatsManager(base.Manager): resource_class = HypervisorStats + @api_versions.wraps("2.0", "2.87") def statistics(self): """ Get hypervisor statistics over all compute nodes. """ return self._get("/os-hypervisors/statistics", "hypervisor_statistics") + + @api_versions.wraps("2.88") + def statistics(self): + raise exceptions.UnsupportedVersion( + _("The 'statistics' API is removed in API version 2.88 or later.") + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/novaclient/v2/shell.py new/python-novaclient-17.4.0/novaclient/v2/shell.py --- old/python-novaclient-17.2.1/novaclient/v2/shell.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/novaclient/v2/shell.py 2021-03-11 20:47:21.000000000 +0100 @@ -55,6 +55,14 @@ file=sys.stderr) +# TODO(takashin): Remove this along with the deprecated commands in the first +# major python-novaclient release AFTER the nova server 24.0.0 X release. +def _emit_agent_deprecation_warning(): + print('This command has been deprecated since 23.0.0 Wallaby Release ' + 'and will be removed in the first major release ' + 'after the Nova server 24.0.0 X release.', file=sys.stderr) + + CLIENT_BDM2_KEYS = { 'id': 'uuid', 'source': 'source_type', @@ -3411,7 +3419,8 @@ default=None, help=_('Type of hypervisor.')) def do_agent_list(cs, args): - """List all builds.""" + """DEPRECATED List all builds.""" + _emit_agent_deprecation_warning() result = cs.agents.list(args.hypervisor) columns = ["Agent_id", "Hypervisor", "OS", "Architecture", "Version", 'Md5hash', 'Url'] @@ -3432,7 +3441,8 @@ default='xen', help=_('Type of hypervisor.')) def do_agent_create(cs, args): - """Create new agent build.""" + """DEPRECATED Create new agent build.""" + _emit_agent_deprecation_warning() result = cs.agents.create(args.os, args.architecture, args.version, args.url, args.md5hash, args.hypervisor) @@ -3441,7 +3451,8 @@ @utils.arg('id', metavar='<id>', help=_('ID of the agent-build.')) def do_agent_delete(cs, args): - """Delete existing agent build.""" + """DEPRECATED Delete existing agent build.""" + _emit_agent_deprecation_warning() cs.agents.delete(args.id) @@ -3450,7 +3461,8 @@ @utils.arg('url', metavar='<url>', help=_('URL')) @utils.arg('md5hash', metavar='<md5hash>', help=_('MD5 hash.')) def do_agent_modify(cs, args): - """Modify existing agent build.""" + """DEPRECATED Modify existing agent build.""" + _emit_agent_deprecation_warning() result = cs.agents.update(args.id, args.version, args.url, args.md5hash) utils.print_dict(result.to_dict()) @@ -4037,12 +4049,22 @@ utils.print_dict(hyper.to_dict()) +@api_versions.wraps('2.0', '2.87') def do_hypervisor_stats(cs, args): """Get hypervisor statistics over all compute nodes.""" stats = cs.hypervisor_stats.statistics() utils.print_dict(stats.to_dict()) +@api_versions.wraps('2.88') +def do_hypervisor_stats(cs, args): + msg = _( + "The hypervisor-stats command is not supported in API version 2.88 " + "or later." + ) + raise exceptions.CommandError(msg) + + @utils.arg('server', metavar='<server>', help=_('Name or ID of server.')) @utils.arg( '--port', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/python_novaclient.egg-info/PKG-INFO new/python-novaclient-17.4.0/python_novaclient.egg-info/PKG-INFO --- old/python-novaclient-17.2.1/python_novaclient.egg-info/PKG-INFO 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/python_novaclient.egg-info/PKG-INFO 2021-03-11 20:48:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: python-novaclient -Version: 17.2.1 +Version: 17.4.0 Summary: Client library for OpenStack Compute API Home-page: https://docs.openstack.org/python-novaclient/latest Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/python_novaclient.egg-info/SOURCES.txt new/python-novaclient-17.4.0/python_novaclient.egg-info/SOURCES.txt --- old/python-novaclient-17.2.1/python_novaclient.egg-info/SOURCES.txt 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/python_novaclient.egg-info/SOURCES.txt 2021-03-11 20:48:00.000000000 +0100 @@ -195,6 +195,7 @@ releasenotes/notes/bug-1825061-2beb95db4d6df0cb.yaml releasenotes/notes/bug-1845322-463ee407b60131c9.yaml releasenotes/notes/clarify-project-id-variable-5832698315000438.yaml +releasenotes/notes/deprecate-agent-d0f58718ad1782f6.yaml releasenotes/notes/deprecate-baremetal-d67f58a2986b3565.yaml releasenotes/notes/deprecate-cellsv1-extension-16482759993d112f.yaml releasenotes/notes/deprecate-certs-1558d8e3b7888938.yaml @@ -212,6 +213,7 @@ releasenotes/notes/drop-deprecated-aggregate-update-args-17bd019f4be34b18.yaml releasenotes/notes/drop-python2-support-d3a1bedc75445edc.yaml releasenotes/notes/fix-booting-with-multiple-nics-c6e5885b948d35ba.yaml +releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml releasenotes/notes/fix-rebuild-userdata-9315e5784feb8ba9.yaml releasenotes/notes/fix-tag-attribute-disappearing-25483a80f548ef35.yaml releasenotes/notes/fix-token-auth-6c48c63a759f51d5.yaml @@ -263,6 +265,7 @@ releasenotes/notes/microversion-v2_80-c2394316f9212865.yaml releasenotes/notes/microversion-v2_81-3ddd8e2fc7e45030.yaml releasenotes/notes/microversion-v2_85-230931f88c4f1d52.yaml +releasenotes/notes/microversion-v2_88-d91136020e3a3621.yaml releasenotes/notes/microversion_v2_70-09cbe0933b3a9335.yaml releasenotes/notes/no-glance-proxy-5c13001a4b13e8ce.yaml releasenotes/notes/no-neutron-proxy-18fd54febe939a6b.yaml @@ -310,6 +313,7 @@ releasenotes/source/train.rst releasenotes/source/unreleased.rst releasenotes/source/ussuri.rst +releasenotes/source/victoria.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/python_novaclient.egg-info/pbr.json new/python-novaclient-17.4.0/python_novaclient.egg-info/pbr.json --- old/python-novaclient-17.2.1/python_novaclient.egg-info/pbr.json 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/python_novaclient.egg-info/pbr.json 2021-03-11 20:48:00.000000000 +0100 @@ -1 +1 @@ -{"git_version": "553257d1", "is_release": true} \ No newline at end of file +{"git_version": "54d4da11", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/python_novaclient.egg-info/requires.txt new/python-novaclient-17.4.0/python_novaclient.egg-info/requires.txt --- old/python-novaclient-17.2.1/python_novaclient.egg-info/requires.txt 2020-09-10 11:57:43.000000000 +0200 +++ new/python-novaclient-17.4.0/python_novaclient.egg-info/requires.txt 2021-03-11 20:48:00.000000000 +0100 @@ -1,9 +1,8 @@ -PrettyTable<0.8,>=0.7.2 +PrettyTable>=0.7.2 iso8601>=0.1.11 keystoneauth1>=3.5.0 oslo.i18n>=3.15.3 oslo.serialization!=2.19.1,>=2.18.0 oslo.utils>=3.33.0 pbr!=2.1.0,>=2.0.0 -simplejson>=3.5.1 stevedore>=2.0.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/releasenotes/notes/deprecate-agent-d0f58718ad1782f6.yaml new/python-novaclient-17.4.0/releasenotes/notes/deprecate-agent-d0f58718ad1782f6.yaml --- old/python-novaclient-17.2.1/releasenotes/notes/deprecate-agent-d0f58718ad1782f6.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-novaclient-17.4.0/releasenotes/notes/deprecate-agent-d0f58718ad1782f6.yaml 2021-03-11 20:47:21.000000000 +0100 @@ -0,0 +1,12 @@ +--- +deprecations: + - | + The following CLIs are deprecated. + + - ``nova agent-create`` + - ``nova agent-delete`` + - ``nova agent-list`` + - ``nova agent-modify`` + + The CLIs will be removed in the first major release after Nova 24.0.0 X + is released. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml new/python-novaclient-17.4.0/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml --- old/python-novaclient-17.2.1/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-novaclient-17.4.0/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml 2021-03-11 20:47:21.000000000 +0100 @@ -0,0 +1,7 @@ +--- +fixes: + - | + `Bug #1903727 <https://bugs.launchpad.net/python-novaclient/+bug/1903727>`_: + Fixed raw Python error message when using ``nova`` without + a subcommand while passing an optional argument, such as + ``--os-compute-api-version 2.87``. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/releasenotes/notes/microversion-v2_88-d91136020e3a3621.yaml new/python-novaclient-17.4.0/releasenotes/notes/microversion-v2_88-d91136020e3a3621.yaml --- old/python-novaclient-17.2.1/releasenotes/notes/microversion-v2_88-d91136020e3a3621.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-novaclient-17.4.0/releasenotes/notes/microversion-v2_88-d91136020e3a3621.yaml 2021-03-11 20:47:21.000000000 +0100 @@ -0,0 +1,16 @@ +--- +features: + - | + Added support for `microversion 2.88`_. The + ``novaclient.v2.hypervisors.HypervisorManager.uptime`` method will now + transparently switch between the ``/os-hypervisors/{id}/uptime`` API, + which is deprecated in 2.88, and the ``/os-hypervisors/{id}`` API, which + now includes uptime information, based on the microversion. + + .. _microversion 2.88: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id80 +deprecations: + - | + The ``nova hypervisor-stats`` command and underlying + ``novaclient.v2.hypervisors.HypervisorStatsManager.statistics`` API are + deprecated starting in microversion 2.88 and will return an error starting + on this version. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/releasenotes/source/index.rst new/python-novaclient-17.4.0/releasenotes/source/index.rst --- old/python-novaclient-17.2.1/releasenotes/source/index.rst 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/releasenotes/source/index.rst 2021-03-11 20:47:21.000000000 +0100 @@ -8,6 +8,7 @@ :maxdepth: 2 unreleased + victoria ussuri train stein diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/releasenotes/source/victoria.rst new/python-novaclient-17.4.0/releasenotes/source/victoria.rst --- old/python-novaclient-17.2.1/releasenotes/source/victoria.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-novaclient-17.4.0/releasenotes/source/victoria.rst 2021-03-11 20:47:21.000000000 +0100 @@ -0,0 +1,6 @@ +============================= +Victoria Series Release Notes +============================= + +.. release-notes:: + :branch: stable/victoria diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/requirements.txt new/python-novaclient-17.4.0/requirements.txt --- old/python-novaclient-17.2.1/requirements.txt 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/requirements.txt 2021-03-11 20:47:21.000000000 +0100 @@ -7,6 +7,5 @@ oslo.i18n>=3.15.3 # Apache-2.0 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 -PrettyTable<0.8,>=0.7.2 # BSD -simplejson>=3.5.1 # MIT +PrettyTable>=0.7.2 # BSD stevedore>=2.0.1 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/setup.py new/python-novaclient-17.4.0/setup.py --- old/python-novaclient-17.2.1/setup.py 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/setup.py 2021-03-11 20:47:21.000000000 +0100 @@ -13,17 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT import setuptools -# In python < 2.7.4, a lazy loading of package `pbr` will break -# setuptools if some other modules registered functions in `atexit`. -# solution from: http://bugs.python.org/issue15881#msg170215 -try: - import multiprocessing # noqa -except ImportError: - pass - setuptools.setup( setup_requires=['pbr>=2.0.0'], pbr=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-novaclient-17.2.1/tox.ini new/python-novaclient-17.4.0/tox.ini --- old/python-novaclient-17.2.1/tox.ini 2020-09-10 11:55:42.000000000 +0200 +++ new/python-novaclient-17.4.0/tox.ini 2021-03-11 20:47:21.000000000 +0100 @@ -40,7 +40,6 @@ [testenv:docs] deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} - -r{toxinidir}/requirements.txt -r{toxinidir}/doc/requirements.txt commands = rm -rf doc/build/html doc/build/doctrees @@ -59,7 +58,6 @@ [testenv:releasenotes] deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} - -r{toxinidir}/requirements.txt -r{toxinidir}/doc/requirements.txt commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html