Hello community,
here is the log from the commit of package python-ironic-inspector-client for
openSUSE:Factory checked in at 2020-10-26 16:15:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ironic-inspector-client (Old)
and /work/SRC/openSUSE:Factory/.python-ironic-inspector-client.new.3463
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ironic-inspector-client"
Mon Oct 26 16:15:16 2020 rev:14 rq:841181 version:4.3.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-ironic-inspector-client/python-ironic-inspector-client.changes
2020-06-05 20:13:24.646361502 +0200
+++
/work/SRC/openSUSE:Factory/.python-ironic-inspector-client.new.3463/python-ironic-inspector-client.changes
2020-10-26 16:16:05.942924785 +0100
@@ -1,0 +2,27 @@
+Fri Oct 9 19:13:57 UTC 2020 - [email protected]
+
+- update to version 4.3.0
+ - Upgrade flake8-import-order version to 0.17.1
+ - Switch to newer openstackdocstheme and reno versions
+ - Tempest job to use the inherited devstack_services value
+ - Support retrieving unprocessed data
+ - Document the new standalone CLI
+ - Follow up to update functest-requirements
+ - Update master for stable/ussuri
+ - Use unittest.mock instead of third party mock
+ - Hacking: enforce usage of autospec=True in tests
+ - Add py38 package metadata
+ - Convert job to dib
+ - Provide a clear error message when trying to access ironic (not inspector)
+ - Add Python3 victoria unit tests
+ - Update lower-constraints.txt
+ - Set min version of tox to 3.2.1
+ - Use only one job for tempest
+ - Restore default netboot boot option
+ - No need to import print function anymore
+ - Update releasenotes conf
+ - Fix pep8 job and functional job
+ - Remove python3 from job name
+ - Change parent for base job to ironic-inspector-base
+
+-------------------------------------------------------------------
Old:
----
python-ironic-inspector-client-4.1.0.tar.gz
New:
----
python-ironic-inspector-client-4.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ironic-inspector-client.spec ++++++
--- /var/tmp/diff_new_pack.PRYp6X/_old 2020-10-26 16:16:06.626925335 +0100
+++ /var/tmp/diff_new_pack.PRYp6X/_new 2020-10-26 16:16:06.630925338 +0100
@@ -17,13 +17,13 @@
Name: python-ironic-inspector-client
-Version: 4.1.0
+Version: 4.3.0
Release: 0
Summary: Python client and CLI tool for Ironic Inspector
License: Apache-2.0
Group: Development/Languages/Python
URL: https://launchpad.net/python-ironic-inspector-client
-Source0:
https://files.pythonhosted.org/packages/source/p/python-ironic-inspector-client/python-ironic-inspector-client-4.1.0.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/p/python-ironic-inspector-client/python-ironic-inspector-client-4.3.0.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-fixtures
BuildRequires: python3-mock
@@ -48,7 +48,7 @@
%package -n python3-ironic-inspector-client
Summary: Python client and CLI tool for Ironic Inspector
Group: Development/Languages/Python
-Requires: python3-PyYAML >= 3.12
+Requires: python3-PyYAML >= 3.13
Requires: python3-keystoneauth1 >= 3.4.0
Requires: python3-openstackclient
Requires: python3-osc-lib
@@ -68,7 +68,7 @@
This package contains the Python 3.x module.
%prep
-%autosetup -p1 -n python-ironic-inspector-client-4.1.0
+%autosetup -p1 -n python-ironic-inspector-client-4.3.0
sed -i -e 's,hacking.*,,' test-requirements.txt
sed -i -e 's,coverage.*,,' test-requirements.txt
sed -i -e 's,doc8.*,,' test-requirements.txt
++++++ _service ++++++
--- /var/tmp/diff_new_pack.PRYp6X/_old 2020-10-26 16:16:06.682925381 +0100
+++ /var/tmp/diff_new_pack.PRYp6X/_new 2020-10-26 16:16:06.682925381 +0100
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://git.openstack.org/cgit/openstack/rpm-packaging/plain/openstack/python-ironic-inspector-client/python-ironic-inspector-client.spec.j2?h=stable/ussuri</param>
+ <param
name="input-template">https://git.openstack.org/cgit/openstack/rpm-packaging/plain/openstack/python-ironic-inspector-client/python-ironic-inspector-client.spec.j2?h=stable/victoria</param>
<param name="output-name">python-ironic-inspector-client.spec</param>
- <param
name="requirements">https://opendev.org/openstack/python-ironic-inspector-client/raw/branch/stable/ussuri/requirements.txt</param>
+ <param
name="requirements">https://opendev.org/openstack/python-ironic-inspector-client/raw/branch/stable/victoria/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param
name="changelog-provider">gh,openstack,python-ironic-inspector-client</param>
</service>
++++++ python-ironic-inspector-client-4.1.0.tar.gz ->
python-ironic-inspector-client-4.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironic-inspector-client-4.1.0/AUTHORS
new/python-ironic-inspector-client-4.3.0/AUTHORS
--- old/python-ironic-inspector-client-4.1.0/AUTHORS 2020-04-09
18:18:31.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/AUTHORS 2020-09-11
02:54:29.000000000 +0200
@@ -21,6 +21,7 @@
John L. Villalovos <[email protected]>
Julia Kreger <[email protected]>
Kaifeng Wang <[email protected]>
+Lucas Alvares Gomes <[email protected]>
Luong Anh Tuan <[email protected]>
Madhuri Kumari <[email protected]>
Mark Goddard <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironic-inspector-client-4.1.0/ChangeLog
new/python-ironic-inspector-client-4.3.0/ChangeLog
--- old/python-ironic-inspector-client-4.1.0/ChangeLog 2020-04-09
18:18:31.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/ChangeLog 2020-09-11
02:54:29.000000000 +0200
@@ -1,6 +1,36 @@
CHANGES
=======
+4.3.0
+-----
+
+* Provide a clear error message when trying to access ironic (not inspector)
+* Support retrieving unprocessed data
+* Tempest job to use the inherited devstack\_services value
+* Set min version of tox to 3.2.1
+
+4.2.0
+-----
+
+* Use unittest.mock instead of third party mock
+* Use only one job for tempest
+* Change parent for base job to ironic-inspector-base
+* Update releasenotes conf
+* Update lower-constraints.txt
+* Switch to newer openstackdocstheme and reno versions
+* Convert job to dib
+* Follow up to update functest-requirements
+* Fix pep8 job and functional job
+* Upgrade flake8-import-order version to 0.17.1
+* Hacking: enforce usage of autospec=True in tests
+* Restore default netboot boot option
+* Add py38 package metadata
+* No need to import print function anymore
+* Document the new standalone CLI
+* Add Python3 victoria unit tests
+* Update master for stable/ussuri
+* Remove python3 from job name
+
4.1.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironic-inspector-client-4.1.0/PKG-INFO
new/python-ironic-inspector-client-4.3.0/PKG-INFO
--- old/python-ironic-inspector-client-4.1.0/PKG-INFO 2020-04-09
18:18:31.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/PKG-INFO 2020-09-11
02:54:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironic-inspector-client
-Version: 4.1.0
+Version: 4.3.0
Summary: Python client for Ironic Inspector
Home-page: https://docs.openstack.org/python-ironic-inspector-client/latest/
Author: OpenStack
@@ -47,6 +47,7 @@
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Provides-Extra: cli
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/doc/requirements.txt
new/python-ironic-inspector-client-4.3.0/doc/requirements.txt
--- old/python-ironic-inspector-client-4.1.0/doc/requirements.txt
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/doc/requirements.txt
2020-09-11 02:53:33.000000000 +0200
@@ -1,5 +1,5 @@
-sphinx!=1.6.6,!=1.6.7,!=2.1.0,>=1.6.2 # BSD
-openstackdocstheme>=1.20.0 # Apache-2.0
-reno>=2.5.0 # Apache-2.0
+sphinx>=2.0.0,!=2.1.0 # BSD
+openstackdocstheme>=2.2.0 # Apache-2.0
+reno>=3.1.0 # Apache-2.0
sphinxcontrib-apidoc>=0.2.0 # BSD
sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/doc/source/cli/index.rst
new/python-ironic-inspector-client-4.3.0/doc/source/cli/index.rst
--- old/python-ironic-inspector-client-4.1.0/doc/source/cli/index.rst
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/doc/source/cli/index.rst
2020-09-11 02:53:33.000000000 +0200
@@ -1,12 +1,39 @@
Command Line Reference
======================
+Integration for two command lines tools are provided: ironicclient_ and
+OpenStackClient_.
-CLI tool is based on OpenStackClient_ with prefix
-``openstack baremetal introspection``.
+Integration with ``baremetal`` CLI
+----------------------------------
+
+The ``baremetal`` command is provided by ironicclient_, so it has to be
+installed, e.g.:
+
+.. code-block:: shell
+
+ pip install 'python-ironicclient>=4.1.0'
+
+All commands are prefixed with ``baremetal introspection``. See `standalone
+ironic CLI documentation`_ for details on how to use it.
+
+.. _ironicclient: https://docs.openstack.org/python-ironicclient/
+.. _standalone ironic CLI documentation:
https://docs.openstack.org/python-ironicclient/latest/cli/standalone.html
+
+Integration with ``openstack baremetal`` CLI
+--------------------------------------------
+
+The ``openstack`` command is provided by ironicclient_, so it has to be
+installed, e.g.:
+
+.. code-block:: shell
+
+ pip install python-openstackclient.
+
+All commands are prefixed with ``baremetal introspection``.
Common arguments
-----------------
+~~~~~~~~~~~~~~~~
All commands accept the following arguments:
@@ -89,11 +116,13 @@
::
- $ openstack baremetal introspection data save [--file file_name] NODE_ID
+ $ openstack baremetal introspection data save [--file file_name]
[--unprocessed] NODE_ID
* ``NODE_ID`` - Ironic node UUID or name;
* ``file_name`` - file name to save data to. If file name is not provided,
the data is dumped to stdout.
+* ``--unprocessed`` - if set, retrieves the unprocessed data received from the
+ ramdisk.
.. note::
This feature requires Swift support to be enabled in **Ironic Inspector**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/doc/source/conf.py
new/python-ironic-inspector-client-4.3.0/doc/source/conf.py
--- old/python-ironic-inspector-client-4.1.0/doc/source/conf.py 2020-04-09
18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/doc/source/conf.py 2020-09-11
02:53:33.000000000 +0200
@@ -11,8 +11,9 @@
'openstackdocstheme',
]
-repository_name = 'openstack/python-ironic-inspector-client'
-use_storyboard = True
+openstackdocs_repo_name = 'openstack/python-ironic-inspector-client'
+openstackdocs_pdf_link = True
+openstackdocs_use_storyboard = True
wsme_protocols = ['restjson']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/functest-requirements.txt
new/python-ironic-inspector-client-4.3.0/functest-requirements.txt
--- old/python-ironic-inspector-client-4.1.0/functest-requirements.txt
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/functest-requirements.txt
2020-09-11 02:53:33.000000000 +0200
@@ -1,4 +1,4 @@
# NOTE(jroll) these are pinned to the same SHA, update when needed.
-# Last updated: Apr 2, 2020 (Ussuri cycle).
-git+https://opendev.org/openstack/ironic-inspector@75437072da66686509d4b7fa80589f5b4966a858#egg=ironic-inspector
--r
https://opendev.org/openstack/ironic-inspector/raw/commit/75437072da66686509d4b7fa80589f5b4966a858/test-requirements.txt
+# Last updated: May 14, 2020 (Victoria cycle).
+git+https://opendev.org/openstack/ironic-inspector@721bd814a61cd4dec433465fff55a5235853c9a2#egg=ironic-inspector
+-r
https://opendev.org/openstack/ironic-inspector/raw/commit/721bd814a61cd4dec433465fff55a5235853c9a2/test-requirements.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/common/http.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/common/http.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/common/http.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/common/http.py
2020-09-11 02:53:33.000000000 +0200
@@ -47,12 +47,31 @@
# inspector returns error message in body
msg = response.content.decode(_ERROR_ENCODING)
try:
- msg = json.loads(msg)['error']['message']
+ msg = json.loads(msg)
except ValueError:
LOG.debug('Old style error response returned, assuming '
'ironic-discoverd')
- except (KeyError, TypeError):
+ except TypeError:
LOG.exception('Bad error response from Ironic Inspector')
+ else:
+ try:
+ msg = msg['error']['message']
+ except KeyError as exc:
+ LOG.error('Invalid error response from Ironic Inspector: '
+ '%(msg)s (missing key %(key)s)',
+ {'msg': msg, 'key': exc})
+ # It's surprisingly common to try accessing ironic URL with
+ # ironic-inspector-client, handle this case
+ try:
+ msg = msg['error_message']
+ except KeyError:
+ pass
+ else:
+ msg = _('Received Ironic-style response %s. Are you '
+ 'trying to access Ironic URL instead of Ironic '
+ 'Inspector?') % msg
+ except TypeError:
+ LOG.exception('Bad error response from Ironic Inspector')
LOG.debug('Inspector returned error "%(msg)s" (HTTP %(code)s)',
{'msg': msg, 'code': response.status_code})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/shell.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/shell.py
--- old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/shell.py
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/shell.py
2020-09-11 02:53:33.000000000 +0200
@@ -13,8 +13,6 @@
"""OpenStackClient plugin for Ironic Inspector."""
-from __future__ import print_function
-
import json
import os
import sys
@@ -289,13 +287,16 @@
parser.add_argument("--file", metavar="<filename>",
help="downloaded introspection data filename "
"(default: stdout)")
+ parser.add_argument('--unprocessed', action='store_true',
+ help="download the unprocessed data")
parser.add_argument('node', help='baremetal node UUID or name')
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.baremetal_introspection
data = client.get_data(parsed_args.node,
- raw=bool(parsed_args.file))
+ raw=bool(parsed_args.file),
+ processed=not parsed_args.unprocessed)
if parsed_args.file:
with open(parsed_args.file, 'wb') as fp:
fp.write(data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/functional.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/functional.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/functional.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/functional.py
2020-09-11 02:53:33.000000000 +0200
@@ -16,15 +16,15 @@
import sys
import tempfile
import unittest
+from unittest import mock
import eventlet
-eventlet.monkey_patch() # noqa
+eventlet.monkey_patch()
from ironic_inspector import introspection_state as istate
from ironic_inspector import process
from ironic_inspector.test import functional
from keystoneauth1 import session as ks_session
from keystoneauth1 import token_endpoint
-import mock
from oslo_concurrency import processutils
import ironic_inspector_client as client
@@ -210,6 +210,7 @@
rule = {'conditions': [],
'actions': [{'action': 'fail', 'message': 'boom'}],
'description': 'Cool actions',
+ 'scope': None,
'uuid': self.uuid}
res = self.client.rules.from_json(rule)
self.assertEqual(self.uuid, res['uuid'])
@@ -222,7 +223,8 @@
res = self.client.rules.get_all()
self.assertEqual(rule['links'], res[0].pop('links'))
self.assertEqual([{'uuid': self.uuid,
- 'description': 'Cool actions'}],
+ 'description': 'Cool actions',
+ 'scope': None}],
res)
self.client.rules.delete(self.uuid)
@@ -357,13 +359,15 @@
rule = {'conditions': [],
'actions': [{'action': 'fail', 'message': 'boom'}],
'description': 'Cool actions',
+ 'scope': None,
'uuid': self.uuid}
with tempfile.NamedTemporaryFile(mode='w') as fp:
json.dump(rule, fp)
fp.flush()
res = self.run_cli('rule', 'import', fp.name, parse_json=True)
- self.assertEqual([{'UUID': self.uuid, 'Description': 'Cool actions'}],
+ self.assertEqual([{'UUID': self.uuid,
+ 'Description': 'Cool actions'}],
res)
res = self.run_cli('rule', 'show', self.uuid, parse_json=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_common_http.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_common_http.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_common_http.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_common_http.py
2020-09-11 02:53:33.000000000 +0200
@@ -13,10 +13,10 @@
import json
import unittest
+from unittest import mock
from keystoneauth1 import exceptions
from keystoneauth1 import session
-import mock
from ironic_inspector_client.common import http
@@ -192,3 +192,28 @@
self.assertRaisesRegex(http.ClientError, 'boom',
self.get_client().request, 'get', 'url')
+
+ def test_accessing_ironic(self):
+ self.req.return_value.status_code = 400
+ self.req.return_value.content = json.dumps(
+ {"error_message": "{\"code\": 404, \"title\": \"Not Found\", "
+ "\"description\": \"\"}"}).encode('utf-8')
+
+ self.assertRaisesRegex(http.ClientError,
+ 'Ironic-style response.*Not Found',
+ self.get_client().request, 'get', 'url')
+
+ def test_error_non_sense(self):
+ self.req.return_value.status_code = 400
+ self.req.return_value.content = json.dumps(
+ {'hello': 'world'}).encode('utf-8')
+
+ self.assertRaisesRegex(http.ClientError, 'hello',
+ self.get_client().request, 'get', 'url')
+
+ def test_error_non_sense2(self):
+ self.req.return_value.status_code = 400
+ self.req.return_value.content = b'42'
+
+ self.assertRaisesRegex(http.ClientError, '42',
+ self.get_client().request, 'get', 'url')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_init.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_init.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_init.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_init.py
2020-09-11 02:53:33.000000000 +0200
@@ -20,9 +20,9 @@
class TestExposedAPI(unittest.TestCase):
def test_only_client_all_exposed(self):
exposed = {x for x in dir(ironic_inspector_client)
- if not x.startswith('__') and
- not isinstance(getattr(ironic_inspector_client, x),
- types.ModuleType)}
+ if not x.startswith('__')
+ and not isinstance(getattr(ironic_inspector_client, x),
+ types.ModuleType)}
self.assertEqual({'ClientV1', 'ClientError', 'EndpointNotFound',
'VersionNotSupported',
'MAX_API_VERSION', 'DEFAULT_API_VERSION'},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_shell.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_shell.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_shell.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_shell.py
2020-09-11 02:53:33.000000000 +0200
@@ -15,8 +15,8 @@
import io
import sys
import tempfile
+from unittest import mock
-import mock
from osc_lib.tests import utils
from ironic_inspector_client import shell
@@ -104,7 +104,7 @@
def test_wait_with_check_errors_no_raise_exception(self):
nodes = ['uuid1', 'uuid2', 'uuid3']
arglist = ['--wait'] + ['--check-errors'] + nodes
- verifylist = [('node', nodes), ('wait', True), ('check_errors', True)]
+ verifylist = [('node', nodes), ('wait', True), ('check_errors', True)]
self.client.wait_for_finish.return_value = {
'uuid1': {'finished': True, 'error': None},
'uuid2': {'finished': True, 'error': None},
@@ -371,7 +371,23 @@
with mock.patch.object(sys, 'stdout', buf):
cmd.take_action(parsed_args)
self.assertEqual('{"answer": 42}', buf.getvalue())
- self.client.get_data.assert_called_once_with('uuid1', raw=False)
+ self.client.get_data.assert_called_once_with('uuid1', raw=False,
+ processed=True)
+
+ def test_unprocessed(self):
+ self.client.get_data.return_value = {'answer': 42}
+ buf = io.StringIO()
+
+ arglist = ['uuid1', '--unprocessed']
+ verifylist = [('node', 'uuid1'), ('unprocessed', True)]
+
+ cmd = shell.DataSaveCommand(self.app, None)
+ parsed_args = self.check_parser(cmd, arglist, verifylist)
+ with mock.patch.object(sys, 'stdout', buf):
+ cmd.take_action(parsed_args)
+ self.assertEqual('{"answer": 42}', buf.getvalue())
+ self.client.get_data.assert_called_once_with('uuid1', raw=False,
+ processed=False)
def test_file(self):
self.client.get_data.return_value = b'{"answer": 42}'
@@ -387,7 +403,8 @@
content = fp.read()
self.assertEqual(b'{"answer": 42}', content)
- self.client.get_data.assert_called_once_with('uuid1', raw=True)
+ self.client.get_data.assert_called_once_with('uuid1', raw=True,
+ processed=True)
class TestInterfaceCmds(BaseTest):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_v1.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_v1.py
---
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/test/test_v1.py
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/test/test_v1.py
2020-09-11 02:53:33.000000000 +0200
@@ -13,10 +13,10 @@
import collections
import unittest
+from unittest import mock
import uuid
from keystoneauth1 import session
-import mock
import ironic_inspector_client
from ironic_inspector_client.common import http
@@ -31,7 +31,8 @@
@mock.patch.object(session.Session, 'get',
return_value=mock.Mock(headers=FAKE_HEADERS,
- status_code=200))
+ status_code=200),
+ autospec=True)
class TestInit(unittest.TestCase):
my_ip = 'http://127.0.0.1:5050'
@@ -41,7 +42,8 @@
def test_ok(self, mock_get):
self.get_client()
- mock_get.assert_called_once_with(self.my_ip, authenticated=False,
+ mock_get.assert_called_once_with(mock.ANY,
+ self.my_ip, authenticated=False,
raise_exc=False)
def test_explicit_version(self, mock_get):
@@ -59,7 +61,8 @@
def test_explicit_url(self, mock_get):
self.get_client(inspector_url='http://host:port')
- mock_get.assert_called_once_with('http://host:port',
+ mock_get.assert_called_once_with(mock.ANY,
+ 'http://host:port',
authenticated=False,
raise_exc=False)
@@ -77,18 +80,18 @@
return ironic_inspector_client.ClientV1(**kwargs)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestIntrospect(BaseTest):
def test(self, mock_req):
self.get_client().introspect(self.uuid)
mock_req.assert_called_once_with(
- 'post', '/introspection/%s' % self.uuid,
+ mock.ANY, 'post', '/introspection/%s' % self.uuid,
params={})
def test_deprecated_uuid(self, mock_req):
self.get_client().introspect(uuid=self.uuid)
mock_req.assert_called_once_with(
- 'post', '/introspection/%s' % self.uuid,
+ mock.ANY, 'post', '/introspection/%s' % self.uuid,
params={})
def test_invalid_input(self, mock_req):
@@ -97,23 +100,23 @@
def test_manage_boot(self, mock_req):
self.get_client().introspect(self.uuid, manage_boot=False)
mock_req.assert_called_once_with(
- 'post', '/introspection/%s' % self.uuid,
+ mock.ANY, 'post', '/introspection/%s' % self.uuid,
params={'manage_boot': '0'})
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestReprocess(BaseTest):
def test(self, mock_req):
self.get_client().reprocess(self.uuid)
mock_req.assert_called_once_with(
- 'post',
+ mock.ANY, 'post',
'/introspection/%s/data/unprocessed' % self.uuid
)
def test_deprecated_uuid(self, mock_req):
self.get_client().reprocess(uuid=self.uuid)
mock_req.assert_called_once_with(
- 'post',
+ mock.ANY, 'post',
'/introspection/%s/data/unprocessed' % self.uuid
)
@@ -122,7 +125,7 @@
self.assertFalse(mock_req.called)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestGetStatus(BaseTest):
def test(self, mock_req):
mock_req.return_value.json.return_value = 'json'
@@ -130,7 +133,7 @@
self.get_client().get_status(self.uuid)
mock_req.assert_called_once_with(
- 'get', '/introspection/%s' % self.uuid)
+ mock.ANY, 'get', '/introspection/%s' % self.uuid)
def test_deprecated_uuid(self, mock_req):
mock_req.return_value.json.return_value = 'json'
@@ -138,13 +141,13 @@
self.get_client().get_status(uuid=self.uuid)
mock_req.assert_called_once_with(
- 'get', '/introspection/%s' % self.uuid)
+ mock.ANY, 'get', '/introspection/%s' % self.uuid)
def test_invalid_input(self, _):
self.assertRaises(TypeError, self.get_client().get_status, 42)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestListStatuses(BaseTest):
def test_default(self, mock_req):
mock_req.return_value.json.return_value = {
@@ -155,7 +158,7 @@
'limit': None
}
self.get_client().list_statuses()
- mock_req.assert_called_once_with('get', '/introspection',
+ mock_req.assert_called_once_with(mock.ANY, 'get', '/introspection',
params=params)
def test_nondefault(self, mock_req):
@@ -167,7 +170,7 @@
'limit': 42
}
self.get_client().list_statuses(**params)
- mock_req.assert_called_once_with('get', '/introspection',
+ mock_req.assert_called_once_with(mock.ANY, 'get', '/introspection',
params=params)
def test_invalid_marker(self, _):
@@ -249,7 +252,7 @@
self.get_client().wait_for_finish)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestGetData(BaseTest):
def test_json(self, mock_req):
mock_req.return_value.json.return_value = 'json'
@@ -257,7 +260,16 @@
self.assertEqual('json', self.get_client().get_data(self.uuid))
mock_req.assert_called_once_with(
- 'get', '/introspection/%s/data' % self.uuid)
+ mock.ANY, 'get', '/introspection/%s/data' % self.uuid)
+
+ def test_unprocessed(self, mock_req):
+ mock_req.return_value.json.return_value = 'json'
+
+ self.assertEqual('json', self.get_client().get_data(self.uuid,
+ processed=False))
+
+ mock_req.assert_called_once_with(
+ mock.ANY, 'get', '/introspection/%s/data/unprocessed' % self.uuid)
def test_deprecated_uuid(self, mock_req):
mock_req.return_value.json.return_value = 'json'
@@ -265,7 +277,7 @@
self.assertEqual('json', self.get_client().get_data(uuid=self.uuid))
mock_req.assert_called_once_with(
- 'get', '/introspection/%s/data' % self.uuid)
+ mock.ANY, 'get', '/introspection/%s/data' % self.uuid)
def test_raw(self, mock_req):
mock_req.return_value.content = b'json'
@@ -274,13 +286,13 @@
raw=True))
mock_req.assert_called_once_with(
- 'get', '/introspection/%s/data' % self.uuid)
+ mock.ANY, 'get', '/introspection/%s/data' % self.uuid)
def test_invalid_input(self, _):
self.assertRaises(TypeError, self.get_client().get_data, 42)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestRules(BaseTest):
def get_rules(self, **kwargs):
return self.get_client(**kwargs).rules
@@ -289,20 +301,22 @@
self.get_rules().create([{'cond': 'cond'}], [{'act': 'act'}])
mock_req.assert_called_once_with(
- 'post', '/rules', json={'conditions': [{'cond': 'cond'}],
- 'actions': [{'act': 'act'}],
- 'uuid': None,
- 'description': None})
+ mock.ANY, 'post', '/rules',
+ json={'conditions': [{'cond': 'cond'}],
+ 'actions': [{'act': 'act'}],
+ 'uuid': None,
+ 'description': None})
def test_create_all_fields(self, mock_req):
self.get_rules().create([{'cond': 'cond'}], [{'act': 'act'}],
uuid='u', description='d')
mock_req.assert_called_once_with(
- 'post', '/rules', json={'conditions': [{'cond': 'cond'}],
- 'actions': [{'act': 'act'}],
- 'uuid': 'u',
- 'description': 'd'})
+ mock.ANY, 'post', '/rules',
+ json={'conditions': [{'cond': 'cond'}],
+ 'actions': [{'act': 'act'}],
+ 'uuid': 'u',
+ 'description': 'd'})
def test_create_invalid_input(self, mock_req):
self.assertRaises(TypeError, self.get_rules().create,
@@ -318,7 +332,7 @@
self.get_rules().from_json({'foo': 'bar'})
mock_req.assert_called_once_with(
- 'post', '/rules', json={'foo': 'bar'})
+ mock.ANY, 'post', '/rules', json={'foo': 'bar'})
def test_get_all(self, mock_req):
mock_req.return_value.json.return_value = {'rules': ['rules']}
@@ -326,7 +340,7 @@
res = self.get_rules().get_all()
self.assertEqual(['rules'], res)
- mock_req.assert_called_once_with('get', '/rules')
+ mock_req.assert_called_once_with(mock.ANY, 'get', '/rules')
def test_get(self, mock_req):
mock_req.return_value.json.return_value = {'answer': 42}
@@ -334,7 +348,7 @@
res = self.get_rules().get('uuid1')
self.assertEqual({'answer': 42}, res)
- mock_req.assert_called_once_with('get', '/rules/uuid1')
+ mock_req.assert_called_once_with(mock.ANY, 'get', '/rules/uuid1')
def test_get_invalid_input(self, mock_req):
self.assertRaises(TypeError, self.get_rules().get, 42)
@@ -343,7 +357,7 @@
def test_delete(self, mock_req):
self.get_rules().delete('uuid1')
- mock_req.assert_called_once_with('delete', '/rules/uuid1')
+ mock_req.assert_called_once_with(mock.ANY, 'delete', '/rules/uuid1')
def test_delete_invalid_input(self, mock_req):
self.assertRaises(TypeError, self.get_rules().delete, 42)
@@ -352,21 +366,21 @@
def test_delete_all(self, mock_req):
self.get_rules().delete_all()
- mock_req.assert_called_once_with('delete', '/rules')
+ mock_req.assert_called_once_with(mock.ANY, 'delete', '/rules')
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestAbort(BaseTest):
def test(self, mock_req):
self.get_client().abort(self.uuid)
- mock_req.assert_called_once_with('post',
+ mock_req.assert_called_once_with(mock.ANY, 'post',
'/introspection/%s/abort' % self.uuid)
def test_invalid_input(self, _):
self.assertRaises(TypeError, self.get_client().abort, 42)
[email protected](http.BaseClient, 'request')
[email protected](http.BaseClient, 'request', autospec=True)
class TestInterfaceApi(BaseTest):
def setUp(self):
super(TestInterfaceApi, self).setUp()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/v1.py
new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/v1.py
--- old/python-ironic-inspector-client-4.1.0/ironic_inspector_client/v1.py
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/ironic_inspector_client/v1.py
2020-09-11 02:53:33.000000000 +0200
@@ -262,7 +262,7 @@
raise WaitTimeoutError(_("Timeout while waiting for introspection "
"of nodes %s") % new_active_node_ids)
- def get_data(self, node_id=None, raw=False, uuid=None):
+ def get_data(self, node_id=None, raw=False, uuid=None, processed=True):
"""Get introspection data from the last introspection of a node.
If swift support is disabled, introspection data won't be stored,
@@ -271,6 +271,8 @@
:param uuid: node UUID or name, deprecated
:param node_id: node node_id or name
:param raw: whether to return raw binary data or parsed JSON data
+ :param processed: whether to return the final processed data or the
+ raw unprocessed data received from the ramdisk.
:returns: bytes or a dict depending on the 'raw' argument
:raises: :py:class:`ironic_inspector_client.ClientError` on error
reported from a server
@@ -281,7 +283,9 @@
"""
node_id = self._check_parameters(node_id, uuid)
- resp = self.request('get', '/introspection/%s/data' % node_id)
+ url = ('/introspection/%s/data' if processed
+ else '/introspection/%s/data/unprocessed')
+ resp = self.request('get', url % node_id)
if raw:
return resp.content
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/lower-constraints.txt
new/python-ironic-inspector-client-4.3.0/lower-constraints.txt
--- old/python-ironic-inspector-client-4.1.0/lower-constraints.txt
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/lower-constraints.txt
2020-09-11 02:53:33.000000000 +0200
@@ -1,4 +1,3 @@
-alabaster==0.7.10
appdirs==1.3.0
asn1crypto==0.23.0
Babel==2.3.4
@@ -14,35 +13,30 @@
doc8==0.6.0
docutils==0.11
dogpile.cache==0.6.2
-dulwich==0.15.0
extras==1.0.0
fasteners==0.7.0
fixtures==3.0.0
flake8==2.5.5
+flake8-import-order==0.17.1
hacking==3.0.0
idna==2.6
-imagesize==0.7.1
iso8601==0.1.11
-Jinja2==2.10
jmespath==0.9.0
jsonpatch==1.16
jsonpointer==1.13
jsonschema==2.6.0
keystoneauth1==3.4.0
linecache2==1.0.0
-MarkupSafe==1.0
mccabe==0.2.1
-mock==2.0.0
monotonic==0.6
msgpack-python==0.4.0
munch==2.1.0
netaddr==0.7.18
netifaces==0.10.4
-openstackdocstheme==1.20.0
openstacksdk==0.11.2
os-client-config==1.28.0
os-service-types==1.2.0
-osc-lib==1.8.0
+osc-lib==2.1.0
oslo.concurrency==3.25.0
oslo.config==5.2.0
oslo.i18n==3.15.3
@@ -52,6 +46,7 @@
pep8==1.5.7
positional==1.2.1
prettytable==0.7.2
+pycodestyle==2.5.0
pycparser==2.18
pyflakes==0.8.1
Pygments==2.2.0
@@ -66,17 +61,14 @@
python-openstackclient==3.12.0
pytz==2013.6
PyYAML==3.12
-reno==2.5.0
requests==2.14.2
requests-mock==1.2.0
requestsexceptions==1.2.0
restructuredtext-lint==1.1.1
rfc3986==0.3.1
simplejson==3.5.1
+six==1.14.0
snowballstemmer==1.2.1
-Sphinx==1.6.2
-sphinxcontrib-svg2pdfconverter==0.1.0
-sphinxcontrib-websupport==1.0.1
stevedore==1.20.0
testtools==2.2.0
traceback2==1.4.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/PKG-INFO
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/PKG-INFO
---
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/PKG-INFO
2020-04-09 18:18:31.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/PKG-INFO
2020-09-11 02:54:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironic-inspector-client
-Version: 4.1.0
+Version: 4.3.0
Summary: Python client for Ironic Inspector
Home-page: https://docs.openstack.org/python-ironic-inspector-client/latest/
Author: OpenStack
@@ -47,6 +47,7 @@
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Provides-Extra: cli
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/SOURCES.txt
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/SOURCES.txt
---
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/SOURCES.txt
2020-04-09 18:18:31.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/SOURCES.txt
2020-09-11 02:54:29.000000000 +0200
@@ -55,6 +55,7 @@
releasenotes/notes/introspect-multiple-uuids-0790d57e0a0b9292.yaml
releasenotes/notes/introspection-check-errors-587ebb2c00038b5a.yaml
releasenotes/notes/introspection-wait-a7e8fe832c3aaff9.yaml
+releasenotes/notes/ironic-error-657d352b31ba77ed.yaml
releasenotes/notes/ks-session-ac614a9abda3e228.yaml
releasenotes/notes/list-introspection-statuses-4ad9e7e56823e754.yaml
releasenotes/notes/manage-boot-3d77762952b354a1.yaml
@@ -69,6 +70,7 @@
releasenotes/notes/reprocess-stored-introspection-data-c4910325254426c5.yaml
releasenotes/notes/rules-import-yaml-815ebc6ca6fe28b9.yaml
releasenotes/notes/service-catalog-45466d1cfd330231.yaml
+releasenotes/notes/unprocessed-7ebb1c48427bfee4.yaml
releasenotes/notes/version-uuid-b7f9e57589314fe9.yaml
releasenotes/source/conf.py
releasenotes/source/index.rst
@@ -82,6 +84,7 @@
releasenotes/source/stein.rst
releasenotes/source/train.rst
releasenotes/source/unreleased.rst
+releasenotes/source/ussuri.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
zuul.d/project.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/pbr.json
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/pbr.json
---
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/pbr.json
2020-04-09 18:18:31.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/pbr.json
2020-09-11 02:54:29.000000000 +0200
@@ -1 +1 @@
-{"git_version": "c9b1aff", "is_release": true}
\ No newline at end of file
+{"git_version": "5176452", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/requires.txt
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/requires.txt
---
old/python-ironic-inspector-client-4.1.0/python_ironic_inspector_client.egg-info/requires.txt
2020-04-09 18:18:31.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/python_ironic_inspector_client.egg-info/requires.txt
2020-09-11 02:54:29.000000000 +0200
@@ -1,20 +1,20 @@
+PyYAML>=3.12
cliff!=2.9.0,>=2.8.0
keystoneauth1>=3.4.0
pbr!=2.1.0,>=2.0.0
-PyYAML>=3.12
requests>=2.14.2
[cli]
python-openstackclient>=3.12.0
[test]
+Pygments>=2.2.0
coverage!=4.4,>=4.0
doc8>=0.6.0
fixtures>=3.0.0
-flake8-import-order>=0.13
+flake8-import-order>=0.17.1
hacking<3.1.0,>=3.0.0
-mock>=2.0.0
-requests-mock>=1.2.0
+osc-lib>=2.1.0
oslo.concurrency>=3.25.0
-osc-lib>=1.8.0
python-openstackclient>=3.12.0
+requests-mock>=1.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/releasenotes/notes/ironic-error-657d352b31ba77ed.yaml
new/python-ironic-inspector-client-4.3.0/releasenotes/notes/ironic-error-657d352b31ba77ed.yaml
---
old/python-ironic-inspector-client-4.1.0/releasenotes/notes/ironic-error-657d352b31ba77ed.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironic-inspector-client-4.3.0/releasenotes/notes/ironic-error-657d352b31ba77ed.yaml
2020-09-11 02:53:33.000000000 +0200
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Provides a clear error message when trying to access an ironic URL with
+ ironic-inspector-client.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/releasenotes/notes/unprocessed-7ebb1c48427bfee4.yaml
new/python-ironic-inspector-client-4.3.0/releasenotes/notes/unprocessed-7ebb1c48427bfee4.yaml
---
old/python-ironic-inspector-client-4.1.0/releasenotes/notes/unprocessed-7ebb1c48427bfee4.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironic-inspector-client-4.3.0/releasenotes/notes/unprocessed-7ebb1c48427bfee4.yaml
2020-09-11 02:53:33.000000000 +0200
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Adds support for retrieving unprocessed introspection data via the new
+ ``processed`` boolean argument to ``get_data``, as well as the new
+ ``--unprocessed`` CLI flag.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/releasenotes/source/conf.py
new/python-ironic-inspector-client-4.3.0/releasenotes/source/conf.py
--- old/python-ironic-inspector-client-4.1.0/releasenotes/source/conf.py
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/releasenotes/source/conf.py
2020-09-11 02:53:33.000000000 +0200
@@ -38,15 +38,13 @@
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
+ 'openstackdocstheme',
'reno.sphinxext',
]
-try:
- import openstackdocstheme
- extensions.append('openstackdocstheme')
-except ImportError:
- openstackdocstheme = None
-
+# openstackdocstheme options
+openstackdocs_repo_name = 'openstack/python-ironic-inspector-client'
+openstackdocs_use_storyboard = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -99,7 +97,7 @@
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
+pygments_style = 'native'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
@@ -112,10 +110,9 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-if openstackdocstheme is not None:
- html_theme = 'openstackdocs'
-else:
- html_theme = 'default'
+
+html_theme = 'openstackdocs'
+
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/releasenotes/source/index.rst
new/python-ironic-inspector-client-4.3.0/releasenotes/source/index.rst
--- old/python-ironic-inspector-client-4.1.0/releasenotes/source/index.rst
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/releasenotes/source/index.rst
2020-09-11 02:53:33.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ ussuri
train
stein
rocky
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/releasenotes/source/ussuri.rst
new/python-ironic-inspector-client-4.3.0/releasenotes/source/ussuri.rst
--- old/python-ironic-inspector-client-4.1.0/releasenotes/source/ussuri.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/python-ironic-inspector-client-4.3.0/releasenotes/source/ussuri.rst
2020-09-11 02:53:33.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+Ussuri Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/ussuri
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironic-inspector-client-4.1.0/setup.cfg
new/python-ironic-inspector-client-4.3.0/setup.cfg
--- old/python-ironic-inspector-client-4.1.0/setup.cfg 2020-04-09
18:18:31.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/setup.cfg 2020-09-11
02:54:29.000000000 +0200
@@ -20,6 +20,7 @@
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
[files]
packages =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/test-requirements.txt
new/python-ironic-inspector-client-4.3.0/test-requirements.txt
--- old/python-ironic-inspector-client-4.1.0/test-requirements.txt
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/test-requirements.txt
2020-09-11 02:53:33.000000000 +0200
@@ -4,10 +4,11 @@
coverage!=4.4,>=4.0 # Apache-2.0
doc8>=0.6.0 # Apache-2.0
fixtures>=3.0.0 # Apache-2.0/BSD
-flake8-import-order>=0.13 # LGPLv3
+flake8-import-order>=0.17.1 # LGPLv3
hacking>=3.0.0,<3.1.0 # Apache-2.0
-mock>=2.0.0 # BSD
requests-mock>=1.2.0 # Apache-2.0
oslo.concurrency>=3.25.0 # Apache-2.0
-osc-lib>=1.8.0 # Apache-2.0
+osc-lib>=2.1.0 # Apache-2.0
python-openstackclient>=3.12.0 # Apache-2.0
+# Required for syntax highlighting check
+Pygments>=2.2.0 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironic-inspector-client-4.1.0/tox.ini
new/python-ironic-inspector-client-4.3.0/tox.ini
--- old/python-ironic-inspector-client-4.1.0/tox.ini 2020-04-09
18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/tox.ini 2020-09-11
02:53:33.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-minversion = 3.1.0
+minversion = 3.2.1
envlist = py3,pep8,functional-py3
ignore_basepython_conflict=true
@@ -68,6 +68,10 @@
make -C doc/build/pdf
[flake8]
+# [E741] ambiguous variable name
+# [W503] Line break before binary operator.
+ignore = E741,W503
+exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build
import-order-style = pep8
application-import-names = ironic_inspector_client
max-complexity=15
@@ -75,8 +79,11 @@
# [H203] Use assertIs(Not)None to check for None.
# [H204] Use assert(Not)Equal to check for equality.
# [H205] Use assert(Greater|Less)(Equal) for comparison.
+# [H210] Require ‘autospec’, ‘spec’, or ‘spec_set’ in
mock.patch/mock.patch.object calls
# [H904] Delay string interpolations at logging calls.
-enable-extensions=H106,H203,H204,H205,H904
+enable-extensions=H106,H203,H204,H205,H210,H904
+per-file-ignores =
+ ironic_inspector_client/test/functional.py:E402
[hacking]
import_exceptions = ironic_inspector_client.common.i18n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/zuul.d/project.yaml
new/python-ironic-inspector-client-4.3.0/zuul.d/project.yaml
--- old/python-ironic-inspector-client-4.1.0/zuul.d/project.yaml
2020-04-09 18:16:35.000000000 +0200
+++ new/python-ironic-inspector-client-4.3.0/zuul.d/project.yaml
2020-09-11 02:53:33.000000000 +0200
@@ -1,6 +1,6 @@
- project:
templates:
- - openstack-python3-ussuri-jobs
+ - openstack-python3-victoria-jobs
- publish-openstack-docs-pti
- check-requirements
- release-notes-jobs-python3
@@ -8,10 +8,10 @@
check:
jobs:
- openstack-tox-functional-py36
- - python-ironic-inspector-client-tempest-python3
+ - python-ironic-inspector-client-tempest
- openstack-tox-lower-constraints
gate:
jobs:
- openstack-tox-functional-py36
- - python-ironic-inspector-client-tempest-python3
+ - python-ironic-inspector-client-tempest
- openstack-tox-lower-constraints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironic-inspector-client-4.1.0/zuul.d/python-ironic-inspector-client-jobs.yaml
new/python-ironic-inspector-client-4.3.0/zuul.d/python-ironic-inspector-client-jobs.yaml
---
old/python-ironic-inspector-client-4.1.0/zuul.d/python-ironic-inspector-client-jobs.yaml
2020-04-09 18:16:35.000000000 +0200
+++
new/python-ironic-inspector-client-4.3.0/zuul.d/python-ironic-inspector-client-jobs.yaml
2020-09-11 02:53:33.000000000 +0200
@@ -1,7 +1,7 @@
- job:
- name: python-ironic-inspector-client-base
- description: Base job for devstack/tempest based
python-ironic-inspector-client jobs.
- parent: ironic-base
+ name: python-ironic-inspector-client-tempest
+ description: Devstack/tempest based python-ironic-inspector-client job.
+ parent: ironic-inspector-base
timeout: 10800
required-projects:
- openstack/ironic
@@ -25,79 +25,12 @@
tempest_test_regex:
ironic_tempest_plugin.tests.scenario.test_introspection_basic
tempest_concurrency: 1
devstack_localrc:
- FORCE_CONFIG_DRIVE: True
- BUILD_TIMEOUT: 600
- IRONIC_BAREMETAL_BASIC_OPS: True
- IRONIC_BUILD_DEPLOY_RAMDISK: False
- IRONIC_CALLBACK_TIMEOUT: 600
- IRONIC_DEPLOY_DRIVER: ipmi
- IRONIC_INSPECTOR_BUILD_RAMDISK: False
- IRONIC_RAMDISK_TYPE: tinyipa
- IRONIC_TEMPEST_BUILD_TIMEOUT: 600
- IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
- IRONIC_VM_COUNT: 1
- IRONIC_VM_EPHEMERAL_DISK: 0
- IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
- IRONIC_VM_SPECS_RAM: 384
+ IRONIC_DEFAULT_BOOT_OPTION: netboot
IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
IRONIC_DEFAULT_RESCUE_INTERFACE: ""
-
- Q_AGENT: openvswitch
- Q_ML2_TENANT_NETWORK_TYPE: vxlan
-
- SWIFT_ENABLE_TEMPURLS: True
- SWIFT_TEMPURL_KEY: secretkey
-
+ IRONIC_VM_EPHEMERAL_DISK: 0
devstack_plugins:
ironic: https://opendev.org/openstack/ironic
ironic-inspector: https://opendev.org/openstack/ironic-inspector
zuul_copy_output:
'{{ devstack_base_dir }}/ironic-bm-logs': 'logs'
- devstack_services:
- c-api: False
- c-bak: False
- c-sch: False
- c-vol: False
- cinder: False
-
- s-account: True
- s-container: True
- s-object: True
- s-proxy: True
-
- dstat: True
- g-api: True
- g-reg: True
- key: True
- mysql: True
- n-api: True
- n-api-meta: True
- n-cauth: True
- n-cond: True
- n-cpu: True
- n-novnc: True
- n-obj: True
- n-sch: True
- placement-api: True
- q-agt: False
- q-dhcp: False
- q-l3: False
- q-meta: False
- q-metering: False
- q-svc: False
- neutron-api: True
- neutron-agent: True
- neutron-dhcp: True
- neutron-l3: True
- neutron-metadata-agent: True
- neutron-metering: True
- rabbit: True
- ir-api: True
- ir-cond: True
- ironic-inspector: True
- ironic-inspector-dhcp: True
-
-- job:
- name: python-ironic-inspector-client-tempest-python3
- description: python-ironic-inspector-client-tempest-python3
- parent: python-ironic-inspector-client-base