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 - cloud-de...@suse.de
+
+- 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">cloud-de...@suse.de</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 <john.l.villalo...@intel.com>
 Julia Kreger <juliaashleykre...@gmail.com>
 Kaifeng Wang <kaifen...@gmail.com>
+Lucas Alvares Gomes <lucasago...@gmail.com>
 Luong Anh Tuan <tua...@vn.fujitsu.com>
 Madhuri Kumari <madhuri.ra...@gmail.com>
 Mark Goddard <m...@stackhpc.com>
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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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'})
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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')
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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)
 
 
-@mock.patch.object(http.BaseClient, 'request')
+@mock.patch.object(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


Reply via email to