diff options
-rw-r--r-- | .pre-commit-config.yaml | 6 | ||||
-rw-r--r-- | .zuul.yaml | 4 | ||||
-rw-r--r-- | README.rst | 8 | ||||
-rw-r--r-- | bindep.txt | 8 | ||||
-rw-r--r-- | doc/source/cli/nova.rst | 11 | ||||
-rw-r--r-- | doc/source/contributor/contributing.rst | 12 | ||||
-rw-r--r-- | doc/source/contributor/testing.rst | 2 | ||||
-rw-r--r-- | doc/source/index.rst | 10 | ||||
-rw-r--r-- | doc/source/user/shell.rst | 6 | ||||
-rw-r--r-- | lower-constraints.txt | 99 | ||||
-rw-r--r-- | novaclient/shell.py | 15 | ||||
-rw-r--r-- | novaclient/tests/unit/test_shell.py | 26 | ||||
-rw-r--r-- | novaclient/tests/unit/v2/test_shell.py | 18 | ||||
-rw-r--r-- | novaclient/utils.py | 9 | ||||
-rw-r--r-- | novaclient/v2/shell.py | 10 | ||||
-rw-r--r-- | releasenotes/notes/deprecate-cli-75074850847a8452.yaml | 9 | ||||
-rw-r--r-- | releasenotes/source/index.rst | 1 | ||||
-rw-r--r-- | releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po | 267 | ||||
-rw-r--r-- | releasenotes/source/yoga.rst | 6 | ||||
-rw-r--r-- | requirements.txt | 7 | ||||
-rw-r--r-- | setup.cfg | 4 | ||||
-rw-r--r-- | test-requirements.txt | 6 | ||||
-rw-r--r-- | tox.ini | 6 |
23 files changed, 379 insertions, 171 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 76fa799a..e782b53e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.1.0 hooks: - id: trailing-whitespace - id: mixed-line-ending @@ -16,7 +16,7 @@ repos: - id: check-yaml files: .*\.(yaml|yml)$ - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.1.10 + rev: v1.1.13 hooks: - id: remove-tabs exclude: '.*\.(svg)$' @@ -25,7 +25,7 @@ repos: - id: flake8 name: flake8 additional_dependencies: - - hacking>=3.0.1,<3.1.0 + - hacking~=4.1.0 language: python entry: flake8 files: '^.*\.py$' @@ -9,7 +9,6 @@ openrc_enable_export: true devstack_localrc: KEYSTONE_ADMIN_ENDPOINT: true - USE_PYTHON3: true irrelevant-files: - ^.*\.rst$ - ^doc/.*$ @@ -20,8 +19,7 @@ - check-requirements - lib-forward-testing-python3 - openstack-cover-jobs - - openstack-lower-constraints-jobs - - openstack-python3-yoga-jobs + - openstack-python3-zed-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 check: @@ -16,8 +16,8 @@ Python bindings to the OpenStack Compute API :alt: Latest Version This is a client for the OpenStack Compute API. It provides a Python API (the -``novaclient`` module) and a command-line script (``nova``). Each implements -100% of the OpenStack Compute API. +``novaclient`` module) and a deprecated command-line script (``nova``). The +Python API implements 100% of the OpenStack Compute API. * License: Apache License, Version 2.0 * `PyPi`_ - package installation @@ -36,6 +36,6 @@ This is a client for the OpenStack Compute API. It provides a Python API (the .. _Blueprints: https://blueprints.launchpad.net/python-novaclient .. _Bugs: https://bugs.launchpad.net/python-novaclient .. _Source: https://opendev.org/openstack/python-novaclient -.. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html -.. _Specs: http://specs.openstack.org/openstack/nova-specs/ +.. _How to Contribute: https://docs.opendev.org/opendev/infra-manual/latest/developers.html +.. _Specs: https://specs.openstack.org/openstack/nova-specs/ .. _Release Notes: https://docs.openstack.org/releasenotes/python-novaclient @@ -1,5 +1,5 @@ # This is a cross-platform list tracking distribution packages needed by tests; -# see https://docs.openstack.org/infra/bindep/ for additional information. +# see https://docs.opendev.org/opendev/bindep/latest/ for additional information. build-essential [platform:dpkg] dbus-devel [platform:rpm] @@ -13,12 +13,8 @@ libffi-devel [platform:rpm] libssl-dev [platform:ubuntu] libuuid-devel [platform:rpm] locales [platform:debian] -python-dev [platform:dpkg] -python-devel [platform:rpm] +openssl python3-all-dev [platform:ubuntu !platform:ubuntu-precise] python3-dev [platform:dpkg] python3-devel [platform:fedora] -python3.4 [platform:ubuntu-trusty] -python3.5 [platform:ubuntu-xenial] -python34-devel [platform:centos] uuid-dev [platform:dpkg] diff --git a/doc/source/cli/nova.rst b/doc/source/cli/nova.rst index 54ec9991..03145381 100644 --- a/doc/source/cli/nova.rst +++ b/doc/source/cli/nova.rst @@ -11,12 +11,11 @@ For help on a specific :command:`nova` command, enter: $ nova help COMMAND -.. note:: Over time, command line functionality will be phased out - of the ``nova`` CLI and into the ``openstack`` CLI. Using - the ``openstack`` client where possible is preferred but - there is not full parity yet for all of the ``nova`` commands. - For information on using the ``openstack`` CLI, see - :python-openstackclient-doc:`OpenStackClient <>`. +.. deprecated:: 17.8.0 + + The ``nova`` CLI has been deprecated in favour of the unified + ``openstack`` CLI. For information on using the ``openstack`` CLI, see + :python-openstackclient-doc:`OpenStackClient <>`. .. _nova_command_usage: diff --git a/doc/source/contributor/contributing.rst b/doc/source/contributor/contributing.rst index 38eac4ec..10365558 100644 --- a/doc/source/contributor/contributing.rst +++ b/doc/source/contributor/contributing.rst @@ -11,6 +11,12 @@ communicate as a community, etc. Below will cover the more project specific information you need to get started with python-novaclient. +.. important:: + + The ``nova`` CLI has been deprecated in favour of the unified ``openstack`` + CLI. Changes to the Python bindings are still welcome, however, no further + changes should be made to the shell. + Communication ~~~~~~~~~~~~~ @@ -19,8 +25,8 @@ Please refer `how-to-get-involved <https://docs.openstack.org/nova/latest/contri Contacting the Core Team ~~~~~~~~~~~~~~~~~~~~~~~~ -The overall structure of the Nova team including python-novaclient is -documented on `the wiki <https://wiki.openstack.org/wiki/Nova#People>`_. +The easiest way to reach the core team is via IRC, using the ``openstack-nova`` +OFTC IRC channel. New Feature Planning ~~~~~~~~~~~~~~~~~~~~ @@ -48,5 +54,5 @@ Getting Your Patch Merged ~~~~~~~~~~~~~~~~~~~~~~~~~ All changes proposed to the python-novaclient requires two ``Code-Review +2`` -votes from python-novaclient core reviewers before one of the core reviewers +votes from ``python-novaclient`` core reviewers before one of the core reviewers can approve patch by giving ``Workflow +1`` vote.. diff --git a/doc/source/contributor/testing.rst b/doc/source/contributor/testing.rst index 4a1e1938..ed0fa506 100644 --- a/doc/source/contributor/testing.rst +++ b/doc/source/contributor/testing.rst @@ -25,4 +25,4 @@ DevStack installation with a demo and an admin user/tenant - or clouds named Refer to `Consistent Testing Interface`__ for more details. -__ https://opendev.org/openstack/governance/src/branch/master/reference/project-testing-interface.rst +__ https://governance.openstack.org/tc/reference/project-testing-interface.html diff --git a/doc/source/index.rst b/doc/source/index.rst index 5c088795..60791b8e 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -3,12 +3,12 @@ =========================================== This is a client for OpenStack Nova API. There's a :doc:`Python API -<reference/index>` (the :mod:`novaclient` module), and a :doc:`command-line -script </user/shell>` (installed as :program:`nova`). Each implements the -entire OpenStack Nova API. +<reference/index>` (the :mod:`novaclient` module), and a deprecated +:doc:`command-line script </user/shell>` (installed as :program:`nova`). +Each implements the entire OpenStack Nova API. -You'll need credentials for an OpenStack cloud that implements the Compute API, -such as TryStack, HP, or Rackspace, in order to use the nova client. +You'll need credentials for an OpenStack cloud that implements the Compute API +in order to use the nova client. .. seealso:: diff --git a/doc/source/user/shell.rst b/doc/source/user/shell.rst index 465b0fb4..de96637a 100644 --- a/doc/source/user/shell.rst +++ b/doc/source/user/shell.rst @@ -15,6 +15,12 @@ information. You can do this with the `--os-username`, `--os-password`, options, but it's easier to just set them as environment variables by setting some environment variables: +.. deprecated:: 17.8.0 + + The ``nova`` CLI has been deprecated in favour of the unified + ``openstack`` CLI. For information on using the ``openstack`` CLI, see + :python-openstackclient-doc:`OpenStackClient <>`. + .. envvar:: OS_USERNAME Your OpenStack Keystone user name. diff --git a/lower-constraints.txt b/lower-constraints.txt deleted file mode 100644 index dd3199a2..00000000 --- a/lower-constraints.txt +++ /dev/null @@ -1,99 +0,0 @@ -amqp==2.1.1 -appdirs==1.3.0 -asn1crypto==0.23.0 -cachetools==2.0.0 -cffi==1.14.0 -cliff==2.8.0 -cmd2==0.8.0 -contextlib2==0.4.0 -coverage==4.0 -cryptography==2.1 -ddt==1.0.1 -debtcollector==1.2.0 -decorator==4.1.0 -deprecation==1.0 -dogpile.cache==0.6.2 -eventlet==0.18.2 -extras==1.0.0 -fasteners==0.7.0 -fixtures==3.0.0 -future==0.16.0 -futurist==1.2.0 -gitdb==0.6.4 -GitPython==1.0.1 -greenlet==0.4.15 -idna==2.6 -iso8601==0.1.11 -Jinja2==2.10 -jmespath==0.9.0 -jsonpatch==1.16 -jsonpointer==1.13 -jsonschema==2.6.0 -keystoneauth1==3.5.0 -kombu==4.0.0 -linecache2==1.0.0 -MarkupSafe==1.1.1 -monotonic==0.6 -msgpack-python==0.4.0 -munch==2.1.0 -netaddr==0.7.18 -netifaces==0.10.4 -openstacksdk==0.11.2 -os-client-config==1.28.0 -os-service-types==1.2.0 -osc-lib==1.8.0 -oslo.concurrency==3.25.0 -oslo.config==5.2.0 -oslo.context==2.19.2 -oslo.i18n==3.15.3 -oslo.log==3.36.0 -oslo.messaging==5.29.0 -oslo.middleware==3.31.0 -oslo.serialization==2.18.0 -oslo.service==1.24.0 -oslo.utils==3.33.0 -osprofiler==1.4.0 -paramiko==2.0.0 -Paste==2.0.2 -PasteDeploy==1.5.0 -pbr==2.0.0 -pika==0.10.0 -pika-pool==0.1.3 -positional==1.2.1 -prettytable==0.7.2 -pyasn1==0.1.8 -pycparser==2.18 -pyinotify==0.9.6 -pyOpenSSL==17.1.0 -pyparsing==2.1.0 -pyperclip==1.5.27 -python-cinderclient==3.3.0 -python-dateutil==2.5.3 -python-glanceclient==2.8.0 -python-keystoneclient==3.8.0 -python-mimeparse==1.6.0 -python-neutronclient==6.7.0 -python-subunit==1.0.0 -pytz==2013.6 -PyYAML==3.13 -repoze.lru==0.7 -requests==2.14.2 -requests-mock==1.2.0 -requestsexceptions==1.2.0 -rfc3986==0.3.1 -Routes==2.3.1 -smmap==0.9.0 -statsd==3.2.1 -stevedore==2.0.1 -tempest==17.1.0 -tenacity==3.2.1 -stestr==2.0.0 -testscenarios==0.4 -testtools==2.2.0 -traceback2==1.4.0 -unittest2==1.1.0 -urllib3==1.21.1 -vine==1.1.4 -warlock==1.2.0 -WebOb==1.7.1 -wrapt==1.7.0 diff --git a/novaclient/shell.py b/novaclient/shell.py index 7762be9b..468e889b 100644 --- a/novaclient/shell.py +++ b/novaclient/shell.py @@ -20,6 +20,7 @@ Command-line interface to the OpenStack Nova API. import argparse import logging +import os import sys from keystoneauth1 import loading @@ -816,9 +817,19 @@ class OpenStackHelpFormatter(argparse.HelpFormatter): super(OpenStackHelpFormatter, self).start_section(heading) -def main(): +def main(argv=sys.argv[1:]): try: - argv = [encodeutils.safe_decode(a) for a in sys.argv[1:]] + # Special dansmith envvar to hide the warning. Don't rely on this + # because we will eventually remove all this stuff. + if os.environ.get("NOVACLIENT_ISHOULDNTBEDOINGTHIS") != "1": + print( + _( + "nova CLI is deprecated and will be a removed in a future " + "release" + ), + file=sys.stderr, + ) + argv = [encodeutils.safe_decode(a) for a in argv] OpenStackComputeShell().main(argv) except Exception as exc: logger.debug(exc, exc_info=1) diff --git a/novaclient/tests/unit/test_shell.py b/novaclient/tests/unit/test_shell.py index 64195291..b6b708a8 100644 --- a/novaclient/tests/unit/test_shell.py +++ b/novaclient/tests/unit/test_shell.py @@ -624,26 +624,32 @@ class ShellTest(utils.TestCase): self._test_service_type, 'unknown', 'compute', self.mock_client) - @mock.patch('sys.argv', ['nova']) @mock.patch('sys.stdout', io.StringIO()) @mock.patch('sys.stderr', io.StringIO()) def test_main_noargs(self): # Ensure that main works with no command-line arguments try: - novaclient.shell.main() + novaclient.shell.main([]) except SystemExit: self.fail('Unexpected SystemExit') # We expect the normal usage as a result - self.assertIn('Command-line interface to the OpenStack Nova API', - sys.stdout.getvalue()) + self.assertIn( + 'Command-line interface to the OpenStack Nova API', + sys.stdout.getvalue(), + ) + # We also expect to see the deprecation warning + self.assertIn( + 'nova CLI is deprecated and will be a removed in a future release', + sys.stderr.getvalue(), + ) @mock.patch.object(novaclient.shell.OpenStackComputeShell, 'main') def test_main_keyboard_interrupt(self, mock_compute_shell): # Ensure that exit code is 130 for KeyboardInterrupt mock_compute_shell.side_effect = KeyboardInterrupt() try: - novaclient.shell.main() + novaclient.shell.main([]) except SystemExit as ex: self.assertEqual(ex.code, 130) @@ -766,9 +772,15 @@ class ShellTest(utils.TestCase): pass with mock.patch('sys.stderr', io.StringIO()): mock_compute_shell.side_effect = MyException('message') - self.assertRaises(SystemExit, novaclient.shell.main) + self.assertRaises(SystemExit, novaclient.shell.main, []) err = sys.stderr.getvalue() - self.assertEqual(err, 'ERROR (MyException): message\n') + # We expect to see the error propagated + self.assertIn('ERROR (MyException): message\n', err) + # We also expect to see the deprecation warning + self.assertIn( + 'nova CLI is deprecated and will be a removed in a future release', + err, + ) class TestLoadVersionedActions(utils.TestCase): diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py index e6c0fda7..da70e3cc 100644 --- a/novaclient/tests/unit/v2/test_shell.py +++ b/novaclient/tests/unit/v2/test_shell.py @@ -3397,7 +3397,8 @@ class ShellTest(utils.TestCase): def test_services_list_v269_with_down_cells(self): """Tests nova service-list at the 2.69 microversion.""" stdout, _stderr = self.run_command('service-list', api_version='2.69') - self.assertEqual('''\ + self.assertEqual( + '''\ +--------------------------------------+--------------+-----------+------+----------+-------+---------------------+-----------------+-------------+ | Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down | +--------------------------------------+--------------+-----------+------+----------+-------+---------------------+-----------------+-------------+ @@ -3406,7 +3407,8 @@ class ShellTest(utils.TestCase): | | nova-compute | host-down | | UNKNOWN | | | | | +--------------------------------------+--------------+-----------+------+----------+-------+---------------------+-----------------+-------------+ ''', # noqa - stdout) + stdout, + ) self.assert_called('GET', '/os-services') def test_services_list_with_host(self): @@ -4779,7 +4781,8 @@ class ShellTest(utils.TestCase): def test_list_detail_v269_with_down_cells(self): """Tests nova list at the 2.69 microversion.""" stdout, _stderr = self.run_command('list', api_version='2.69') - self.assertIn('''\ + self.assertIn( + '''\ +------+----------------+---------+------------+-------------+----------------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +------+----------------+---------+------------+-------------+----------------------------------------------+ @@ -4791,7 +4794,8 @@ class ShellTest(utils.TestCase): | 9013 | sample-server4 | ACTIVE | N/A | N/A | | +------+----------------+---------+------------+-------------+----------------------------------------------+ ''', # noqa - stdout) + stdout, + ) self.assert_called('GET', '/servers/detail') def test_list_v269_with_down_cells(self): @@ -4812,7 +4816,8 @@ class ShellTest(utils.TestCase): def test_show_v269_with_down_cells(self): stdout, _stderr = self.run_command('show 9015', api_version='2.69') - self.assertEqual('''\ + self.assertEqual( + '''\ +-----------------------------+---------------------------------------------------+ | Property | Value | +-----------------------------+---------------------------------------------------+ @@ -4833,7 +4838,8 @@ class ShellTest(utils.TestCase): | user_id | fake | +-----------------------------+---------------------------------------------------+ ''', # noqa - stdout) + stdout, + ) FAKE_UUID_2 = 'c99d7632-bd66-4be9-aed5-3dd14b223a76' self.assert_called('GET', '/servers?name=9015', pos=0) self.assert_called('GET', '/servers?name=9015', pos=1) diff --git a/novaclient/utils.py b/novaclient/utils.py index fba708b5..d0219795 100644 --- a/novaclient/utils.py +++ b/novaclient/utils.py @@ -116,13 +116,14 @@ def service_type(stype): return inner -def pretty_choice_list(l): - return ', '.join("'%s'" % i for i in l) +def pretty_choice_list(values): + return ', '.join("'%s'" % x for x in values) -def pretty_choice_dict(d): +def pretty_choice_dict(values): """Returns a formatted dict as 'key=value'.""" - return pretty_choice_list(['%s=%s' % (k, d[k]) for k in sorted(d.keys())]) + return pretty_choice_list( + ['%s=%s' % (k, values[k]) for k in sorted(values)]) def print_list(objs, fields, formatters={}, sortby_index=None): diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py index dfe93c01..58823fc7 100644 --- a/novaclient/v2/shell.py +++ b/novaclient/v2/shell.py @@ -3231,15 +3231,15 @@ def _print_absolute_limits(limits): other = {} limit_names = [] columns = ['Name', 'Used', 'Max'] - for l in limits: - map = limit_map.get(l.name, {'name': l.name, 'type': 'other'}) + for limit in limits: + map = limit_map.get(limit.name, {'name': limit.name, 'type': 'other'}) name = map['name'] if map['type'] == 'max': - max[name] = l.value + max[name] = limit.value elif map['type'] == 'used': - used[name] = l.value + used[name] = limit.value else: - other[name] = l.value + other[name] = limit.value if 'Other' not in columns: columns.append('Other') if name not in limit_names: diff --git a/releasenotes/notes/deprecate-cli-75074850847a8452.yaml b/releasenotes/notes/deprecate-cli-75074850847a8452.yaml new file mode 100644 index 00000000..6d51ce03 --- /dev/null +++ b/releasenotes/notes/deprecate-cli-75074850847a8452.yaml @@ -0,0 +1,9 @@ +--- +deprecations: + - | + The ``nova`` CLI is now deprecated. This is the signal that it is + time to start using the openstack CLI. No new features will be + added to the ``nova`` CLI, though fixes to the CLI will be assessed + on a case by case basis. Fixes to the API bindings, development of + new API bindings, and changes to the compute commands in the openstack + CLI are exempt from this deprecation. diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst index c33e50d1..68524acc 100644 --- a/releasenotes/source/index.rst +++ b/releasenotes/source/index.rst @@ -8,6 +8,7 @@ Contents :maxdepth: 2 unreleased + yoga xena wallaby victoria diff --git a/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po new file mode 100644 index 00000000..2b450f7c --- /dev/null +++ b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po @@ -0,0 +1,267 @@ +# Andi Chandler <andi@gowling.com>, 2017. #zanata +# Andi Chandler <andi@gowling.com>, 2018. #zanata +# Andi Chandler <andi@gowling.com>, 2022. #zanata +msgid "" +msgstr "" +"Project-Id-Version: python-novaclient\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-24 11:46+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2022-07-05 09:42+0000\n" +"Last-Translator: Andi Chandler <andi@gowling.com>\n" +"Language-Team: English (United Kingdom)\n" +"Language: en_GB\n" +"X-Generator: Zanata 4.3.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +msgid "" +"**auto**: This tells the Compute service to automatically allocate a network " +"for the project if one is not available and then associate an IP from that " +"network with the server. This is the same behavior as passing nics=None " +"before the 2.37 microversion." +msgstr "" +"**auto**: This tells the Compute service to automatically allocate a network " +"for the project if one is not available and then associate an IP from that " +"network with the server. This is the same behaviour as passing nics=None " +"before the 2.37 microversion." + +msgid "" +"**none**: This tells the Compute service to not allocate any networking for " +"the server." +msgstr "" +"**none**: This tells the Compute service to not allocate any networking for " +"the server." + +msgid "--all_tenants replaced by --all-tenants" +msgstr "--all_tenants replaced by --all-tenants" + +msgid "--availability-zone" +msgstr "--availability-zone" + +msgid "--availability_zone replaced by -- availability-zone" +msgstr "--availability_zone replaced by -- availability-zone" + +msgid "--availability_zone replaced by --availability-zone" +msgstr "--availability_zone replaced by --availability-zone" + +msgid "--block_device_mapping replaced by --block-device-mapping" +msgstr "--block_device_mapping replaced by --block-device-mapping" + +msgid "--block_migrate replaced by --block-migrate" +msgstr "--block_migrate replaced by --block-migrate" + +msgid "--bypass_url replaced by --bypass-url" +msgstr "--bypass_url replaced by --bypass-url" + +msgid "--config-drive" +msgstr "--config-drive" + +msgid "--console_type replaced by --console-type" +msgstr "--console_type replaced by --console-type" + +msgid "--disk_over_commit replaced by --disk-over-commit" +msgstr "--disk_over_commit replaced by --disk-over-commit" + +msgid "--endpoint-type replaced by --os-endpoint-type" +msgstr "--endpoint-type replaced by --os-endpoint-type" + +msgid "--floating_ips replaced by --floating-ips" +msgstr "--floating_ips replaced by --floating-ips" + +msgid "--injected_file_content_bytes replaced by --injected-file-content-bytes" +msgstr "" +"--injected_file_content_bytes replaced by --injected-file-content-bytes" + +msgid "--injected_files replaced by --injected-files" +msgstr "--injected_files replaced by --injected-files" + +msgid "--instance_name replaced by --instance-name" +msgstr "--instance_name replaced by --instance-name" + +msgid "--key-name" +msgstr "--key-name" + +msgid "--key_name replaced by --key-name" +msgstr "--key_name replaced by --key-name" + +msgid "--metadata_items replaced by --metadata-items" +msgstr "--metadata_items replaced by --metadata-items" + +msgid "--no-config-drive" +msgstr "--no-config-drive" + +msgid "--num-instance replaced by --min-count and --max-count" +msgstr "--num-instance replaced by --min-count and --max-count" + +msgid "--os_auth_system replaced by --os-auth-system" +msgstr "--os_auth_system replaced by --os-auth-system" + +msgid "--os_auth_url replaced by --os-auth-url" +msgstr "--os_auth_url replaced by --os-auth-url" + +msgid "--os_compute_api_version replaced by --os-compute-api-version" +msgstr "--os_compute_api_version replaced by --os-compute-api-version" + +msgid "--os_password replaced by --os-password" +msgstr "--os_password replaced by --os-password" + +msgid "--os_region_name replaced by --os-region-name" +msgstr "--os_region_name replaced by --os-region-name" + +msgid "--os_tenant_name replaced by --os-tenant-name" +msgstr "--os_tenant_name replaced by --os-tenant-name" + +msgid "--os_username replaced by --os-username" +msgstr "--os_username replaced by --os-username" + +msgid "--policy" +msgstr "--policy" + +msgid "--power-state" +msgstr "--power-state" + +msgid "--progress" +msgstr "--progress" + +msgid "--pub_key replaced by --pub-key" +msgstr "--pub_key replaced by --pub-key" + +msgid "--rebuild_password replaced by --rebuild-password" +msgstr "--rebuild_password replaced by --rebuild-password" + +msgid "--reservation_id replaced by --reservation-id" +msgstr "--reservation_id replaced by --reservation-id" + +msgid "--security_groups replaced by --sercurity-groups" +msgstr "--security_groups replaced by --security-groups" + +msgid "--service_name replaced by --service-name" +msgstr "--service_name replaced by --service-name" + +msgid "--service_type replaced by --service-type" +msgstr "--service_type replaced by --service-type" + +msgid "--task-state" +msgstr "--task-state" + +msgid "--user_data replaced by --user-data" +msgstr "--user_data replaced by --user-data" + +msgid "--vm-state" +msgstr "--vm-state" + +msgid "--volume_service_name replaced by --volume-service-name" +msgstr "--volume_service_name replaced by --volume-service-name" + +msgid "10.0.0" +msgstr "10.0.0" + +msgid "10.1.0" +msgstr "10.1.0" + +msgid "10.1.1" +msgstr "10.1.1" + +msgid "10.2.0" +msgstr "10.2.0" + +msgid "10.3.0" +msgstr "10.3.0" + +msgid "11.0.0" +msgstr "11.0.0" + +msgid "11.0.1" +msgstr "11.0.1" + +msgid "3.0.0" +msgstr "3.0.0" + +msgid "3.3.0" +msgstr "3.3.0" + +msgid "4.0.0" +msgstr "4.0.0" + +msgid "4.1.0" +msgstr "4.1.0" + +msgid "5.0.0" +msgstr "5.0.0" + +msgid "5.1.0" +msgstr "5.1.0" + +msgid "6.0.0" +msgstr "6.0.0" + +msgid ":ref:`search`" +msgstr ":ref:`search`" + +msgid "Current Series Release Notes" +msgstr "Current Series Release Notes" + +msgid "Liberty Series Release Notes" +msgstr "Liberty Series Release Notes" + +msgid "Mitaka Series Release Notes" +msgstr "Mitaka Series Release Notes" + +msgid "Newton Series Release Notes" +msgstr "Newton Series Release Notes" + +msgid "Ocata Series Release Notes" +msgstr "Ocata Series Release Notes" + +msgid "Pike Series Release Notes" +msgstr "Pike Series Release Notes" + +msgid "Queens Series Release Notes" +msgstr "Queens Series Release Notes" + +msgid "Rocky Series Release Notes" +msgstr "Rocky Series Release Notes" + +msgid "Stein Series Release Notes" +msgstr "Stein Series Release Notes" + +msgid "Train Series Release Notes" +msgstr "Train Series Release Notes" + +msgid "Ussuri Series Release Notes" +msgstr "Ussuri Series Release Notes" + +msgid "Victoria Series Release Notes" +msgstr "Victoria Series Release Notes" + +msgid "Wallaby Series Release Notes" +msgstr "Wallaby Series Release Notes" + +msgid "Xena Series Release Notes" +msgstr "Xena Series Release Notes" + +msgid "Yoga Series Release Notes" +msgstr "Yoga Series Release Notes" + +msgid "secgroup-create" +msgstr "secgroup-create" + +msgid "secgroup-delete" +msgstr "secgroup-delete" + +msgid "secgroup-delete-default-rule" +msgstr "secgroup-delete-default-rule" + +msgid "secgroup-delete-group-rule" +msgstr "secgroup-delete-group-rule" + +msgid "secgroup-delete-rule" +msgstr "secgroup-delete-rule" + +msgid "secgroup-list" +msgstr "secgroup-list" + +msgid "secgroup-list-default-rules" +msgstr "secgroup-list-default-rules" diff --git a/releasenotes/source/yoga.rst b/releasenotes/source/yoga.rst new file mode 100644 index 00000000..7cd5e908 --- /dev/null +++ b/releasenotes/source/yoga.rst @@ -0,0 +1,6 @@ +========================= +Yoga Series Release Notes +========================= + +.. release-notes:: + :branch: stable/yoga diff --git a/requirements.txt b/requirements.txt index b93814eb..2eec1a70 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. +# Requirements lower bounds listed here are our best effort to keep them up to +# date but we do not test them so no guarantee of having them all correct. If +# you find any incorrect lower bounds, let us know or propose a fix. + pbr!=2.1.0,>=2.0.0 # Apache-2.0 keystoneauth1>=3.5.0 # Apache-2.0 iso8601>=0.1.11 # MIT @@ -7,7 +7,7 @@ license = Apache License, Version 2.0 author = OpenStack author_email = openstack-discuss@lists.openstack.org home_page = https://docs.openstack.org/python-novaclient/latest -python_requires = >=3.6 +python_requires = >=3.8 classifier = Development Status :: 5 - Production/Stable Environment :: Console @@ -18,8 +18,6 @@ classifier = Operating System :: OS Independent Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3 :: Only diff --git a/test-requirements.txt b/test-requirements.txt index f2df9017..5845d2d5 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,8 +1,4 @@ -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. -hacking>=3.0.1,<3.1.0 # Apache-2.0 - +hacking~=4.1.0 # Apache-2.0 bandit>=1.1.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0 ddt>=1.0.1 # MIT @@ -101,9 +101,3 @@ import_exceptions = novaclient.i18n # separately, outside of the requirements files. deps = bindep commands = bindep test - -[testenv:lower-constraints] -deps = - -c{toxinidir}/lower-constraints.txt - -r{toxinidir}/test-requirements.txt - -r{toxinidir}/requirements.txt |