Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ironicclient for
openSUSE:Factory checked in at 2023-03-07 16:49:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ironicclient (Old)
and /work/SRC/openSUSE:Factory/.python-ironicclient.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ironicclient"
Tue Mar 7 16:49:47 2023 rev:24 rq:1069832 version:5.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ironicclient/python-ironicclient.changes
2022-06-19 21:11:59.442226681 +0200
+++
/work/SRC/openSUSE:Factory/.python-ironicclient.new.31432/python-ironicclient.changes
2023-03-07 16:50:24.349607145 +0100
@@ -1,0 +2,32 @@
+Tue Mar 7 06:59:00 UTC 2023 - [email protected]
+
+- update to version 5.1.0
+ - Fix tox4 error
+ - Add support for fields in drivers CLI
+ - CI: Removing ironic job queue
+ - No longer override install_command in tox.ini
+ - Update master for stable/yoga
+ - Fix wrong assertion methods
+ - Avoid using 'foo' as invalid JSON test data
+ - Add Python3 yoga unit tests
+ - Updating python testing classifier as per Yoga testing runtime
+ - Add Python3 zed unit tests
+ - Update master for stable/zed
+ - Validate path when passing a config-drive
+ - Improve description of "node boot mode set"
+ - remove unicode from code
+ - Add node history support
+ - Made `baremetal <command> --help` display command specific help.
+ - Update master for stable/xena
+ - Test python 3.6 for distributions compatibility
+ - Fix CI
+ - Remove unused check_python_version
+ - Add Python3 antelope unit tests
+ - Drop lower-constraints.txt and its testing
+ - Fix logging in the baremetal CLI
+ - The Python 3.6 and Python 3.7 Support has been dropped since zed
+ - Fix references to ironicclient classes and methods
+ - Fix distribution compatability for configdrive build
+ - Use only Yoga tests
+
+-------------------------------------------------------------------
Old:
----
python-ironicclient-4.8.0.tar.gz
New:
----
python-ironicclient-5.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ironicclient.spec ++++++
--- /var/tmp/diff_new_pack.In9dN6/_old 2023-03-07 16:50:25.105611123 +0100
+++ /var/tmp/diff_new_pack.In9dN6/_new 2023-03-07 16:50:25.105611123 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-ironicclient
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: python-ironicclient
-Version: 4.8.0
+Version: 5.1.0
Release: 0
Summary: Python API and CLI for OpenStack Ironic
License: Apache-2.0
Group: Development/Languages/Python
URL: https://docs.openstack.org/python-ironicclient
-Source0:
https://files.pythonhosted.org/packages/source/p/python-ironicclient/python-ironicclient-4.8.0.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/p/python-ironicclient/python-ironicclient-5.1.0.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-Babel
BuildRequires: python3-PyYAML >= 3.13
@@ -88,13 +88,13 @@
This package contains auto-generated documentation.
%prep
-%autosetup -p1 -n python-ironicclient-4.8.0
+%autosetup -p1 -n python-ironicclient-5.1.0
%py_req_cleanup
%build
%{py3_build}
-PBR_VERSION=4.8.0 %sphinx_build -b html doc/source doc/build/html
+PBR_VERSION=5.1.0 %sphinx_build -b html doc/source doc/build/html
# remove the sphinx-build leftovers
rm -rf doc/build/html/.{doctrees,buildinfo}
@@ -102,7 +102,7 @@
%{py3_install}
%check
-python3 -m stestr.cli run
+%{openstack_stestr_run}
%files -n python3-ironicclient
%license LICENSE
++++++ python-ironicclient-4.8.0.tar.gz -> python-ironicclient-5.1.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/AUTHORS
new/python-ironicclient-5.1.0/AUTHORS
--- old/python-ironicclient-4.8.0/AUTHORS 2021-08-31 15:09:07.000000000
+0200
+++ new/python-ironicclient-5.1.0/AUTHORS 2023-02-17 11:38:39.000000000
+0100
@@ -36,6 +36,7 @@
Doug Hellmann <[email protected]>
Eric Fried <[email protected]>
Eric Fried <[email protected]>
+Felix Huettner <[email protected]>
Flavio Percoco <[email protected]>
Florian Fuchs <[email protected]>
Galyna Zholtkevych <[email protected]>
@@ -59,6 +60,7 @@
Jamie Lennox <[email protected]>
Jamie Lennox <[email protected]>
Jason <[email protected]>
+Jay Faulkner <[email protected]>
Jeremy Stanley <[email protected]>
Jim Rollenhagen <[email protected]>
John L. Villalovos <[email protected]>
@@ -81,6 +83,7 @@
Luong Anh Tuan <[email protected]>
M V P Nitesh <[email protected]>
Madhuri Kumari <[email protected]>
+Mahnoor Asghar <[email protected]>
Marc Aubry <[email protected]>
Mario Villaplana <[email protected]>
Mark Goddard <[email protected]>
@@ -103,6 +106,7 @@
OpenStack Release Bot <[email protected]>
Pavlo Shchelokovskyy <[email protected]>
Pavlo Shchelokovskyy <[email protected]>
+Pierre Riteau <[email protected]>
Rakesh H S <[email protected]>
Ramakrishnan G <[email protected]>
Riccardo Pittau <[email protected]>
@@ -121,7 +125,11 @@
Shuquan Huang <[email protected]>
Sinval Vieira <[email protected]>
SofiiaAndriichenko <[email protected]>
+Steve Baker <[email protected]>
Steve Martinelli <[email protected]>
+Tadeas Kot <[email protected]>
+Takashi Kajinami <[email protected]>
+Takashi Natsume <[email protected]>
Tang Chen <[email protected]>
Tang Chen <[email protected]>
Tao Li <[email protected]>
@@ -174,6 +182,7 @@
venkatamahesh <[email protected]>
vishal mahajan <[email protected]>
wangfaxin <[email protected]>
+wangjiaqi07 <[email protected]>
wu.chunyang <[email protected]>
wu.chunyang <[email protected]>
wu.shiming <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/ChangeLog
new/python-ironicclient-5.1.0/ChangeLog
--- old/python-ironicclient-4.8.0/ChangeLog 2021-08-31 15:09:07.000000000
+0200
+++ new/python-ironicclient-5.1.0/ChangeLog 2023-02-17 11:38:38.000000000
+0100
@@ -1,6 +1,57 @@
CHANGES
=======
+5.1.0
+-----
+
+* Fix tox4 error
+* No longer override install\_command in tox.ini
+* Fix wrong assertion methods
+* Add Python3 antelope unit tests
+* Update master for stable/zed
+* remove unicode from code
+
+5.0.1
+-----
+
+* Remove unused check\_python\_version
+
+5.0.0
+-----
+
+* The Python 3.6 and Python 3.7 Support has been dropped since zed
+* Drop lower-constraints.txt and its testing
+* Fix logging in the baremetal CLI
+* CI: Removing ironic job queue
+* Fix CI
+* Add Python3 zed unit tests
+* Update master for stable/yoga
+* Avoid using 'foo' as invalid JSON test data
+
+4.11.0
+------
+
+
+4.10.0
+------
+
+* Improve description of "node boot mode set"
+* Use only Yoga tests
+* Updating python testing classifier as per Yoga testing runtime
+* Add node history support
+* Test python 3.6 for distributions compatibility
+* Made \`baremetal <command> --help\` display command specific help
+* Fix references to ironicclient classes and methods
+
+4.9.0
+-----
+
+* Fix distribution compatability for configdrive build
+* Add Python3 yoga unit tests
+* Update master for stable/xena
+* Add support for fields in drivers CLI
+* Validate path when passing a config-drive
+
4.8.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/PKG-INFO
new/python-ironicclient-5.1.0/PKG-INFO
--- old/python-ironicclient-4.8.0/PKG-INFO 2021-08-31 15:09:07.817825600
+0200
+++ new/python-ironicclient-5.1.0/PKG-INFO 2023-02-17 11:38:39.215122500
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironicclient
-Version: 4.8.0
+Version: 5.1.0
Summary: OpenStack Bare Metal Provisioning API Client Library
Home-page: https://docs.openstack.org/python-ironicclient/latest/
Author: OpenStack
@@ -103,9 +103,8 @@
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3 :: Only
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
+Classifier: Programming Language :: Python :: 3.9
+Requires-Python: >=3.8
Provides-Extra: cli
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/doc/source/api_v1.rst
new/python-ironicclient-5.1.0/doc/source/api_v1.rst
--- old/python-ironicclient-4.8.0/doc/source/api_v1.rst 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/doc/source/api_v1.rst 2023-02-17
11:37:51.000000000 +0100
@@ -8,24 +8,26 @@
Bare Metal Provisioning Service.
For example, to manipulate nodes, you interact with an
-`ironicclient.v1.node`_ object.
+:py:class:`ironicclient.v1.node.Node` object.
You obtain access to nodes via attributes of the
-`ironicclient.v1.client.Client`_ object.
+:py:class:`ironicclient.v1.client.Client` object.
Usage
=====
Get a Client object
-------------------
-First, create an `ironicclient.v1.client.Client`_ instance by passing your
-credentials to `ironicclient.client.get_client()`_. By default, the
-Bare Metal Provisioning system is configured so that only administrators
+First, create an :py:class:`ironicclient.v1.client.Client` instance by passing
+your credentials to :py:meth:`ironicclient.client.get_client()`. By default,
+the Bare Metal Provisioning system is configured so that only administrators
(users with 'admin' role) have access.
.. note::
- Explicit instantiation of `ironicclient.v1.client.Client`_ may cause
- errors since it doesn't verify provided arguments, using
- `ironicclient.client.get_client()` is preferred way to get client object.
+
+ Explicit instantiation of :py:class:`ironicclient.v1.client.Client` may
+ cause errors since it doesn't verify provided arguments, using
+ :py:meth:`ironicclient.client.get_client()` is preferred way to get client
+ object.
There are two different sets of credentials that can be used::
@@ -81,15 +83,16 @@
Perform ironic operations
-------------------------
-Once you have an ironic `Client`_, you can perform various tasks::
+Once you have an :py:class:`ironicclient.v1.client.Client`, you can perform
+various tasks::
>>> ironic.driver.list() # list of drivers
>>> ironic.node.list() # list of nodes
>>> ironic.node.get(node_uuid) # information about a particular node
-When the `Client`_ needs to propagate an exception, it will usually
-raise an instance subclassed from
-`ironicclient.exc.BaseException`_ or `ironicclient.exc.ClientException`_.
+When the Client needs to propagate an exception, it will usually raise an
+instance subclassed from
+:py:class:`ironicclient.common.apiclient.exceptions.ClientException`.
Refer to the modules themselves, for more details.
@@ -97,10 +100,3 @@
====================
* :ref:`modindex`
-
-.. _ironicclient.v1.node:
api/ironicclient.v1.node.html#ironicclient.v1.node.Node
-.. _ironicclient.v1.client.Client:
api/ironicclient.v1.client.html#ironicclient.v1.client.Client
-.. _Client: api/ironicclient.v1.client.html#ironicclient.v1.client.Client
-.. _ironicclient.client.get_client():
api/ironicclient.client.html#ironicclient.client.get_client
-.. _ironicclient.exc.BaseException:
api/ironicclient.exc.html#ironicclient.exc.BaseException
-.. _ironicclient.exc.ClientException:
api/ironicclient.exc.html#ironicclient.exc.ClientException
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/doc/source/conf.py
new/python-ironicclient-5.1.0/doc/source/conf.py
--- old/python-ironicclient-4.8.0/doc/source/conf.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/doc/source/conf.py 2023-02-17
11:37:51.000000000 +0100
@@ -36,7 +36,7 @@
master_doc = 'index'
# General information about the project.
-copyright = u'OpenStack Foundation'
+copyright = 'OpenStack Foundation'
# A list of ignored prefixes for module index sorting.
modindex_common_prefix = ['ironicclient.']
@@ -77,8 +77,8 @@
(
'index',
'doc-python-ironicclient.tex',
- u'Python Ironic Client Documentation',
- u'OpenStack LLC',
+ 'Python Ironic Client Documentation',
+ 'OpenStack LLC',
'manual'
),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/common/http.py
new/python-ironicclient-5.1.0/ironicclient/common/http.py
--- old/python-ironicclient-4.8.0/ironicclient/common/http.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/common/http.py 2023-02-17
11:37:51.000000000 +0100
@@ -37,7 +37,7 @@
#
http://specs.openstack.org/openstack/ironic-specs/specs/kilo/api-microversions.html
# noqa
# for full details.
DEFAULT_VER = '1.9'
-LAST_KNOWN_API_VERSION = 76
+LAST_KNOWN_API_VERSION = 78
LATEST_VERSION = '1.{}'.format(LAST_KNOWN_API_VERSION)
LOG = logging.getLogger(__name__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/common/utils.py
new/python-ironicclient-5.1.0/ironicclient/common/utils.py
--- old/python-ironicclient-4.8.0/ironicclient/common/utils.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/common/utils.py 2023-02-17
11:37:51.000000000 +0100
@@ -267,20 +267,30 @@
with tempfile.NamedTemporaryFile() as tmpfile:
with tempfile.NamedTemporaryFile() as tmpzipfile:
publisher = 'ironicclient-configdrive 0.1'
- try:
- p = subprocess.Popen(['genisoimage', '-o', tmpfile.name,
- '-ldots', '-allow-lowercase',
- '-allow-multidot', '-l',
- '-publisher', publisher,
- '-quiet', '-J',
- '-r', '-V', 'config-2',
- path],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- except OSError as e:
+ # NOTE(toabctl): Luckily, genisoimage, mkisofs and xorrisofs
+ # understand the same parameters which are currently used.
+ cmds = ['genisoimage', 'mkisofs', 'xorrisofs']
+ for c in cmds:
+ try:
+ p = subprocess.Popen([c, '-o', tmpfile.name,
+ '-ldots', '-allow-lowercase',
+ '-allow-multidot', '-l',
+ '-publisher', publisher,
+ '-quiet', '-J',
+ '-r', '-V', 'config-2',
+ path],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ except OSError as e:
+ error = e
+ else:
+ error = None
+ break
+ if error:
raise exc.CommandError(
_('Error generating the config drive. Make sure the '
- '"genisoimage" tool is installed. Error: %s') % e)
+ '"genisoimage", "mkisofs", or "xorriso" tool is '
+ 'installed. Error: %s') % error)
stdout, stderr = p.communicate()
if p.returncode != 0:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/osc/v1/baremetal_driver.py
new/python-ironicclient-5.1.0/ironicclient/osc/v1/baremetal_driver.py
--- old/python-ironicclient-4.8.0/ironicclient/osc/v1/baremetal_driver.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/osc/v1/baremetal_driver.py
2023-02-17 11:37:51.000000000 +0100
@@ -12,8 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
#
-
-
+import itertools
import logging
from osc_lib.command import command
@@ -39,11 +38,23 @@
help='Type of driver ("classic" or "dynamic"). '
'The default is to list all of them.'
)
- parser.add_argument(
+ display_group = parser.add_mutually_exclusive_group()
+ display_group.add_argument(
'--long',
action='store_true',
default=None,
help="Show detailed information about the drivers.")
+ display_group.add_argument(
+ '--fields',
+ nargs='+',
+ dest='fields',
+ metavar='<field>',
+ action='append',
+ default=[],
+ choices=res_fields.DRIVER_DETAILED_RESOURCE.fields,
+ help=_("One or more node fields. Only these fields will be "
+ "fetched from the server. Can not be used when '--long' "
+ "is specified."))
return parser
def take_action(self, parsed_args):
@@ -55,6 +66,12 @@
if parsed_args.long:
labels = res_fields.DRIVER_DETAILED_RESOURCE.labels
columns = res_fields.DRIVER_DETAILED_RESOURCE.fields
+ elif parsed_args.fields:
+ fields = itertools.chain.from_iterable(parsed_args.fields)
+ resource = res_fields.Resource(list(fields))
+ columns = resource.fields
+ labels = resource.labels
+ params['fields'] = columns
else:
labels = res_fields.DRIVER_RESOURCE.labels
columns = res_fields.DRIVER_RESOURCE.fields
@@ -213,13 +230,26 @@
'driver',
metavar='<driver>',
help=_('Name of the driver.'))
+ parser.add_argument(
+ '--fields',
+ nargs='+',
+ dest='fields',
+ metavar='<field>',
+ action='append',
+ default=[],
+ choices=res_fields.DRIVER_DETAILED_RESOURCE.fields,
+ help=_("One or more node fields. Only these fields will be "
+ "fetched from the server."))
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
baremetal_client = self.app.client_manager.baremetal
- driver = baremetal_client.driver.get(parsed_args.driver)._info
+ fields = list(itertools.chain.from_iterable(parsed_args.fields))
+ fields = fields if fields else None
+ driver = baremetal_client.driver.get(parsed_args.driver,
+ fields=fields)._info
driver.pop("links", None)
driver.pop("properties", None)
# For list-type properties, show the values as comma separated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/osc/v1/baremetal_node.py
new/python-ironicclient-5.1.0/ironicclient/osc/v1/baremetal_node.py
--- old/python-ironicclient-4.8.0/ironicclient/osc/v1/baremetal_node.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/osc/v1/baremetal_node.py
2023-02-17 11:37:51.000000000 +0100
@@ -243,7 +243,7 @@
class BootmodeSetBaremetalNode(command.Command):
- """Set boot mode for baremetal node"""
+ """Set the boot mode for the next baremetal node deployment"""
log = logging.getLogger(__name__ + ".BootmodeSetBaremetalNode")
@@ -2131,3 +2131,77 @@
parsed_args.node, parsed_args.setting_name)
setting.pop("links", None)
return self.dict2columns(setting)
+
+
+class NodeHistoryList(command.Lister):
+ """Get history events for a baremetal node."""
+
+ log = logging.getLogger(__name__ + ".NodeHistoryList")
+
+ def get_parser(self, prog_name):
+ parser = super(NodeHistoryList, self).get_parser(prog_name)
+
+ parser.add_argument(
+ 'node',
+ metavar='<node>',
+ help=_("Name or UUID of the node.")
+ )
+ parser.add_argument(
+ '--long',
+ default=False,
+ help=_("Show detailed information about the BIOS settings."),
+ action='store_true')
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug("take_action(%s)", parsed_args)
+
+ baremetal_client = self.app.client_manager.baremetal
+ if parsed_args.long:
+ labels = res_fields.NODE_HISTORY_DETAILED_RESOURCE.labels
+ fields = res_fields.NODE_HISTORY_DETAILED_RESOURCE.fields
+ else:
+ labels = res_fields.NODE_HISTORY_RESOURCE.labels
+ fields = res_fields.NODE_HISTORY_RESOURCE.fields
+
+ data = baremetal_client.node.get_history_list(
+ parsed_args.node,
+ parsed_args.long)
+
+ return (labels,
+ (oscutils.get_dict_properties(s, fields) for s in data))
+
+
+class NodeHistoryEventGet(command.ShowOne):
+ """Get history event for a baremetal node."""
+
+ log = logging.getLogger(__name__ + ".NodeHistoryEventGet")
+
+ def get_parser(self, prog_name):
+ parser = super(NodeHistoryEventGet, self).get_parser(prog_name)
+
+ parser.add_argument(
+ 'node',
+ metavar='<node>',
+ help=_("Name or UUID of the node.")
+ )
+
+ parser.add_argument(
+ 'event',
+ metavar='<event>',
+ help=_("UUID of the event.")
+ )
+
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug("take_action(%s)", parsed_args)
+
+ baremetal_client = self.app.client_manager.baremetal
+
+ data = baremetal_client.node.get_history_event(
+ parsed_args.node,
+ parsed_args.event)
+ data.pop('links')
+
+ return self.dict2columns(data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/ironicclient/shell.py
new/python-ironicclient-5.1.0/ironicclient/shell.py
--- old/python-ironicclient-4.8.0/ironicclient/shell.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/shell.py 2023-02-17
11:37:51.000000000 +0100
@@ -137,7 +137,8 @@
self.config = os_config.OpenStackConfig(override_defaults=_DEFAULTS)
super(App, self).__init__(description=_DESCRIPTION,
version=str(version_info),
- command_manager=mgr)
+ command_manager=mgr,
+ deferred_help=True)
def build_option_parser(self, description, version, argparse_kwargs=None):
parser = super(App, self).build_option_parser(
@@ -169,21 +170,35 @@
)
return parser
+ # This is the openstacksdk default value
+ _STREAM_FORMAT = '%(asctime)s %(levelname)s: %(name)s %(message)s'
+
def _configure_ironic_logging(self):
- openstack.enable_logging(debug=self.options.debug)
- # NOTE(dtantsur): I wish logging.basicConfig worked.. but it does not.
+ debug_enabled = self.options.debug or self.options.verbose_level > 1
+
+ openstack.enable_logging(debug=debug_enabled, stream=sys.stderr,
+ format_template=self._STREAM_FORMAT,
+ # No fancy formatting if debug is off
+ format_stream=debug_enabled)
+ # NOTE(dtantsur): prevent openstack logging from appearing again in the
+ # cliff handlers
+ for name in ('openstack', 'keystoneauth'):
+ logger = logging.getLogger(name)
+ logger.propagate = False
+
+ # NOTE(dtantsur): I wish logging.basicConfig worked, but at this point
+ # cliff has already started configuring logging.
for name in ('ironicclient', 'ironic_inspector_client'):
logger = logging.getLogger(name)
logger.setLevel(
- logging.DEBUG if self.options.debug else logging.WARNING)
- # warnings are already configured by something else, only configure
+ logging.DEBUG if debug_enabled else logging.WARNING)
+ # warnings are already configured by cliff, only configure
# debug logging for ironic.
- if not logger.handlers and self.options.debug:
- handler = logging.StreamHandler()
- handler.setFormatter(logging.Formatter(
- # This is the openstacksdk default value
- '%(asctime)s %(levelname)s: %(name)s %(message)s'))
+ if not logger.handlers and debug_enabled:
+ handler = logging.StreamHandler(stream=sys.stderr)
+ handler.setFormatter(logging.Formatter(self._STREAM_FORMAT))
logger.addHandler(handler)
+ logger.propagate = False
def initialize_app(self, argv):
super(App, self).initialize_app(argv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/common/test_utils.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/common/test_utils.py
--- old/python-ironicclient-4.8.0/ironicclient/tests/unit/common/test_utils.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/tests/unit/common/test_utils.py
2023-02-17 11:37:51.000000000 +0100
@@ -265,6 +265,20 @@
'-quiet', '-J', '-r', '-V',
'config-2', mock.ANY]
+ self.mkisofs_cmd = ['mkisofs', '-o', mock.ANY,
+ '-ldots', '-allow-lowercase',
+ '-allow-multidot', '-l',
+ '-publisher', 'ironicclient-configdrive 0.1',
+ '-quiet', '-J', '-r', '-V',
+ 'config-2', mock.ANY]
+
+ self.xorrisofs_cmd = ['xorrisofs', '-o', mock.ANY,
+ '-ldots', '-allow-lowercase',
+ '-allow-multidot', '-l',
+ '-publisher', 'ironicclient-configdrive 0.1',
+ '-quiet', '-J', '-r', '-V',
+ 'config-2', mock.ANY]
+
def test_make_configdrive(self, mock_popen):
fake_process = mock.Mock(returncode=0)
fake_process.communicate.return_value = ('', '')
@@ -278,6 +292,24 @@
stdout=subprocess.PIPE)
fake_process.communicate.assert_called_once_with()
+ def test_make_configdrive_fallsback(self, mock_popen):
+ fake_process = mock.Mock(returncode=0)
+ fake_process.communicate.return_value = ('', '')
+ mock_popen.side_effect = iter([OSError('boom'),
+ OSError('boom'),
+ fake_process])
+ with utils.tempdir() as dirname:
+ utils.make_configdrive(dirname)
+ mock_popen.assert_has_calls([
+ mock.call(self.genisoimage_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE),
+ mock.call(self.mkisofs_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE),
+ mock.call(self.xorrisofs_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE)
+ ])
+ fake_process.communicate.assert_called_once_with()
+
@mock.patch.object(os, 'access', autospec=True)
def test_make_configdrive_non_readable_dir(self, mock_access, mock_popen):
mock_access.return_value = False
@@ -292,9 +324,14 @@
self.assertRaises(exc.CommandError, utils.make_configdrive, 'fake-dir')
mock_access.assert_called_once_with('fake-dir', os.R_OK)
- mock_popen.assert_called_once_with(self.genisoimage_cmd,
- stderr=subprocess.PIPE,
- stdout=subprocess.PIPE)
+ mock_popen.assert_has_calls([
+ mock.call(self.genisoimage_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE),
+ mock.call(self.mkisofs_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE),
+ mock.call(self.xorrisofs_cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE)
+ ])
@mock.patch.object(os, 'access', autospec=True)
def test_make_configdrive_non_zero_returncode(self, mock_access,
@@ -340,7 +377,7 @@
self.assertEqual(json.loads(cleansteps), steps)
def test_handle_json_or_file_arg_bad_json(self):
- cleansteps = 'foo'
+ cleansteps = '{foo invalid: json{'
self.assertRaisesRegex(exc.InvalidAttribute,
'is not a file and cannot be parsed as JSON',
utils.handle_json_or_file_arg, cleansteps)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/fakes.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/fakes.py
--- old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/fakes.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/fakes.py
2023-02-17 11:37:51.000000000 +0100
@@ -229,6 +229,18 @@
'steps': baremetal_deploy_template_steps,
'extra': baremetal_deploy_template_extra,
}
+NODE_HISTORY = [
+ {
+ 'uuid': 'abcdef1',
+ 'created_at': 'time',
+ 'severity': 'info',
+ 'event': 'meow',
+ 'event_type': 'purring',
+ 'conductor': 'lap-conductor',
+ 'user': '0191',
+ 'links': {'href': 'url', 'rel': 'self'},
+ }
+]
class TestBaremetal(utils.TestCommand):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_deploy_template.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_deploy_template.py
---
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_deploy_template.py
2021-08-31 15:08:24.000000000 +0200
+++
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_deploy_template.py
2023-02-17 11:37:51.000000000 +0100
@@ -316,7 +316,7 @@
self.cmd.take_action(parsed_args)
args = ['zzz-zzzzzz-zzzz', 'fakename']
- self.baremetal_mock.deploy_template.delete.has_calls(
+ self.baremetal_mock.deploy_template.delete.assert_has_calls(
[mock.call(x) for x in args])
self.assertEqual(
2, self.baremetal_mock.deploy_template.delete.call_count)
@@ -333,7 +333,7 @@
parsed_args)
args = ['zzz-zzzzzz-zzzz', 'badname']
- self.baremetal_mock.deploy_template.delete.has_calls(
+ self.baremetal_mock.deploy_template.delete.assert_has_calls(
[mock.call(x) for x in args])
self.assertEqual(
2, self.baremetal_mock.deploy_template.delete.call_count)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py
---
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py
2021-08-31 15:08:24.000000000 +0200
+++
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py
2023-02-17 11:37:51.000000000 +0100
@@ -146,6 +146,69 @@
),)
self.assertEqual(datalist, tuple(data))
+ def test_baremetal_driver_list_fields(self):
+ arglist = [
+ '--fields', 'name', 'hosts'
+ ]
+ verifylist = [
+ ('fields', [['name', 'hosts']])
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'driver_type': None,
+ 'detail': None,
+ 'fields': ('name', 'hosts')
+ }
+
+ self.baremetal_mock.driver.list.assert_called_with(**kwargs)
+
+ def test_baremetal_driver_list_fields_multiple(self):
+ arglist = [
+ '--fields', 'name',
+ '--fields', 'hosts', 'type'
+ ]
+ verifylist = [
+ ('fields', [['name'], ['hosts', 'type']])
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'driver_type': None,
+ 'detail': None,
+ 'fields': ('name', 'hosts', 'type')
+ }
+
+ self.baremetal_mock.driver.list.assert_called_with(**kwargs)
+
+ def test_baremetal_driver_list_invalid_fields(self):
+ arglist = [
+ '--fields', 'name', 'invalid'
+ ]
+ verifylist = [
+ ('fields', [['name', 'invalid']])
+ ]
+ self.assertRaises(oscutils.ParserException,
+ self.check_parser,
+ self.cmd, arglist, verifylist)
+
+ def test_baremetal_driver_list_fields_with_long(self):
+ arglist = [
+ '--fields', 'name', 'hosts',
+ '--long'
+ ]
+ verifylist = [
+ ('fields', [['name', 'invalid']]),
+ ('long', True)
+ ]
+ self.assertRaises(oscutils.ParserException,
+ self.check_parser,
+ self.cmd, arglist, verifylist)
+
class TestListBaremetalDriverProperty(TestBaremetalDriver):
@@ -362,7 +425,7 @@
columns, data = self.cmd.take_action(parsed_args)
args = ['fakedrivername']
- self.baremetal_mock.driver.get.assert_called_with(*args)
+ self.baremetal_mock.driver.get.assert_called_with(*args, fields=None)
self.assertFalse(self.baremetal_mock.driver.properties.called)
collist = ('default_bios_interface', 'default_boot_interface',
@@ -419,4 +482,55 @@
self.assertRaises(oscutils.ParserException,
self.check_parser,
+ self.cmd, arglist, verifylist)
+
+ def test_baremetal_driver_show_fields(self):
+ arglist = [
+ 'fakedrivername',
+ '--fields', 'name', 'hosts'
+ ]
+ verifylist = [
+ ('driver', 'fakedrivername'),
+ ('fields', [['name', 'hosts']])
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ args = ['fakedrivername']
+ fields = ['name', 'hosts']
+ self.baremetal_mock.driver.get.assert_called_with(*args, fields=fields)
+ self.assertFalse(self.baremetal_mock.driver.properties.called)
+
+ def test_baremetal_driver_show_fields_multiple(self):
+ arglist = [
+ 'fakedrivername',
+ '--fields', 'name',
+ '--fields', 'hosts', 'type'
+ ]
+ verifylist = [
+ ('driver', 'fakedrivername'),
+ ('fields', [['name'], ['hosts', 'type']])
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ args = ['fakedrivername']
+ fields = ['name', 'hosts', 'type']
+ self.baremetal_mock.driver.get.assert_called_with(*args, fields=fields)
+ self.assertFalse(self.baremetal_mock.driver.properties.called)
+
+ def test_baremetal_driver_show_invalid_fields(self):
+ arglist = [
+ 'fakedrivername',
+ '--fields', 'name', 'invalid'
+ ]
+ verifylist = [
+ ('driver', 'fakedrivername'),
+ ('fields', [['name', 'invalid']])
+ ]
+
+ self.assertRaises(oscutils.ParserException,
+ self.check_parser,
self.cmd, arglist, verifylist)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
---
old/python-ironicclient-4.8.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
2021-08-31 15:08:24.000000000 +0200
+++
new/python-ironicclient-5.1.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
2023-02-17 11:37:51.000000000 +0100
@@ -4188,3 +4188,59 @@
'node_uuid', 'bios_name_1')
expected_data = ('bios_name_1', 'bios_value_1')
self.assertEqual(expected_data, tuple(data))
+
+
+class TestNodeHistoryEventList(TestBaremetal):
+ def setUp(self):
+ super(TestNodeHistoryEventList, self).setUp()
+
+ self.baremetal_mock.node.get_history_list.return_value = (
+ baremetal_fakes.NODE_HISTORY)
+
+ # Get the command object to test
+ self.cmd = baremetal_node.NodeHistoryList(self.app, None)
+
+ def test_baremetal_node_history_list(self):
+ arglist = ['node_uuid', '--long']
+ verifylist = [('node', 'node_uuid'), ('long', True)]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.baremetal_mock.node.get_history_list.assert_called_once_with(
+ 'node_uuid', True)
+ expected_columns = ('UUID', 'Created At', 'Severity',
+ 'Event Origin Type', 'Description of the event',
+ 'Conductor', 'User')
+ expected_data = (('abcdef1', 'time', 'info', 'purring', 'meow',
+ 'lap-conductor', '0191'),)
+ self.assertEqual(expected_columns, columns)
+ self.assertEqual(expected_data, tuple(data))
+
+
+class TestNodeHistoryEventGet(TestBaremetal):
+ def setUp(self):
+ super(TestNodeHistoryEventGet, self).setUp()
+
+ self.baremetal_mock.node.get_history_event.return_value = (
+ baremetal_fakes.NODE_HISTORY[0])
+
+ # Get the command object to test
+ self.cmd = baremetal_node.NodeHistoryEventGet(self.app, None)
+
+ def test_baremetal_node_history_list(self):
+ arglist = ['node_uuid', 'event_uuid']
+ verifylist = [('node', 'node_uuid'), ('event', 'event_uuid')]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.baremetal_mock.node.get_history_event.assert_called_once_with(
+ 'node_uuid', 'event_uuid')
+ expected_columns = ('conductor', 'created_at', 'event', 'event_type',
+ 'severity', 'user', 'uuid')
+ expected_data = ('lap-conductor', 'time', 'meow', 'purring', 'info',
+ '0191', 'abcdef1')
+
+ self.assertEqual(expected_columns, columns)
+ self.assertEqual(expected_data, tuple(data))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/v1/test_driver.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/v1/test_driver.py
--- old/python-ironicclient-4.8.0/ironicclient/tests/unit/v1/test_driver.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/tests/unit/v1/test_driver.py
2023-02-17 11:37:51.000000000 +0100
@@ -77,6 +77,13 @@
{'drivers': [DRIVER1]},
),
},
+ '/v1/drivers/?fields=name,hosts':
+ {
+ 'GET': (
+ {},
+ {'drivers': [DRIVER1]}
+ )
+ },
'/v1/drivers/%s' % DRIVER1['name']:
{
'GET': (
@@ -84,6 +91,13 @@
DRIVER1
),
},
+ '/v1/drivers/%s?fields=name,hosts' % DRIVER1['name']:
+ {
+ 'GET': (
+ {},
+ DRIVER1,
+ ),
+ },
'/v1/drivers/%s/properties' % DRIVER2['name']:
{
'GET': (
@@ -136,6 +150,24 @@
self.assertEqual(DRIVER1, driver_attr)
+ def test_driver_list_fields(self):
+ drivers = self.mgr.list(fields=['name', 'hosts'])
+ expect = [
+ ('GET', '/v1/drivers/?fields=name,hosts', {}, None),
+ ]
+ self.assertEqual(expect, self.api.calls)
+ self.assertThat(drivers, matchers.HasLength(1))
+
+ def test_driver_show_fields(self):
+ driver_ = self.mgr.get(DRIVER1['name'], fields=['name', 'hosts'])
+ expect = [
+ ('GET', '/v1/drivers/%s?fields=name,hosts' %
+ DRIVER1['name'], {}, None)
+ ]
+ self.assertEqual(expect, self.api.calls)
+ self.assertEqual(DRIVER1['name'], driver_.name)
+ self.assertEqual(DRIVER1['hosts'], driver_.hosts)
+
def test_driver_properties(self):
properties = self.mgr.properties(DRIVER2['name'])
expect = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/tests/unit/v1/test_node.py
new/python-ironicclient-5.1.0/ironicclient/tests/unit/v1/test_node.py
--- old/python-ironicclient-4.8.0/ironicclient/tests/unit/v1/test_node.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/tests/unit/v1/test_node.py
2023-02-17 11:37:51.000000000 +0100
@@ -1556,7 +1556,7 @@
def test_node_set_provision_state_with_configdrive(self):
target_state = 'active'
self.mgr.set_provision_state(NODE1['uuid'], target_state,
- configdrive='foo')
+ configdrive=b'foo')
body = {'target': target_state, 'configdrive': 'foo'}
expect = [
('PUT', '/v1/nodes/%s/states/provision' % NODE1['uuid'], {}, body),
@@ -1616,6 +1616,16 @@
]
self.assertEqual(expect, self.api.calls)
+ def test_node_set_provision_state_fails_missing_dir_or_file(self):
+ target_state = 'active'
+
+ with common_utils.tempdir() as dirname:
+ self.assertRaisesRegex(ValueError,
+ 'Config drive',
+ self.mgr.set_provision_state,
+ NODE1['uuid'], target_state,
+ configdrive=dirname + "/thisdoesnotexist")
+
def test_node_set_provision_state_with_cleansteps(self):
cleansteps = [{"step": "upgrade", "interface": "deploy"}]
target_state = 'clean'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/ironicclient/v1/driver.py
new/python-ironicclient-5.1.0/ironicclient/v1/driver.py
--- old/python-ironicclient-4.8.0/ironicclient/v1/driver.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/v1/driver.py 2023-02-17
11:37:51.000000000 +0100
@@ -28,7 +28,7 @@
_resource_name = 'drivers'
def list(self, driver_type=None, detail=None, os_ironic_api_version=None,
- global_request_id=None):
+ global_request_id=None, fields=None):
"""Retrieve a list of drivers.
:param driver_type: Optional, string to filter the drivers by type.
@@ -41,13 +41,22 @@
the request. If not specified, the client's default is used.
:param global_request_id: String containing global request ID header
value (in form "req-<UUID>") to use for the request.
+ :param fields: Optional, a list with a specified set of fields
+ of the resource to be returned. Can not be used
+ when 'detail' is set.
:returns: A list of drivers.
"""
+
filters = []
+ if detail and fields:
+ raise exc.InvalidAttribute(_("Can't fetch a subset of fields "
+ "with 'detail' set"))
if driver_type is not None:
filters.append('type=%s' % driver_type)
if detail is not None:
filters.append('detail=%s' % detail)
+ if fields is not None:
+ filters.append('fields=%s' % ','.join(fields))
path = ''
if filters:
@@ -57,8 +66,8 @@
global_request_id=global_request_id)
def get(self, driver_name, os_ironic_api_version=None,
- global_request_id=None):
- return self._get(resource_id=driver_name,
+ global_request_id=None, fields=None):
+ return self._get(resource_id=driver_name, fields=fields,
os_ironic_api_version=os_ironic_api_version,
global_request_id=global_request_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/ironicclient/v1/node.py
new/python-ironicclient-5.1.0/ironicclient/v1/node.py
--- old/python-ironicclient-4.8.0/ironicclient/v1/node.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/v1/node.py 2023-02-17
11:37:51.000000000 +0100
@@ -714,12 +714,16 @@
path = "%s/states/provision" % node_uuid
body = {'target': state}
if configdrive:
- if not isinstance(configdrive, dict):
+ if isinstance(configdrive, str):
if os.path.isfile(configdrive):
with open(configdrive, 'rb') as f:
configdrive = f.read()
- if os.path.isdir(configdrive):
+ elif os.path.isdir(configdrive):
configdrive = utils.make_configdrive(configdrive)
+ else:
+ raise ValueError('Config drive seems to refer to a file '
+ 'or directory but this file/directory '
+ 'does not exist: %s.' % configdrive)
if isinstance(configdrive, bytes):
try:
@@ -1008,3 +1012,56 @@
'%(state)s, the current state is %(actual)s',
{'node': node_ident, 'state': expected_state,
'actual': node.provision_state})
+
+ def get_history_list(self,
+ node_ident,
+ detail=False,
+ os_ironic_api_version=None,
+ global_request_id=None):
+ """Get node history event list.
+
+ Provides the ability to query a node event history list from
+ the API and return the API response to the caller.
+
+ Requires API version 1.78.
+
+ :param node_ident: The name or UUID of the node.
+ :param detail: If detailed data should be returned in the
+ event list entry. Default False.
+ :param os_ironic_api_version: String version (e.g. "1.35") to use for
+ the request. If not specified, the client's default is used.
+ :param global_request_id: String containing global request ID header
+ value (in form "req-<UUID>") to use for the request.
+ """
+ path = "%s/history" % node_ident
+
+ if detail:
+ path = path + '/detail'
+
+ return self._list_primitives(
+ self._path(path), 'history',
+ os_ironic_api_version=os_ironic_api_version,
+ global_request_id=global_request_id)
+
+ def get_history_event(self,
+ node_ident,
+ event,
+ os_ironic_api_version=None,
+ global_request_id=None):
+ """Get a single event record for a node.
+
+ Provides the ability to request, and return
+ a node's single vent hisotyr entry.
+
+ :param node_ident: The name or UUID of the node.
+ :param event: The UUID of the event entry as listed
+ in the node event history list.
+ :param os_ironic_api_version: String version (e.g. "1.35") to use for
+ the request. If not specified, the client's default is used.
+ :param global_request_id: String containing global request ID header
+ value (in form "req-<UUID>") to use for the request.
+ """
+ path = "%s/history/%s" % (node_ident, event)
+ return self._get_as_dict(
+ path, os_ironic_api_version=os_ironic_api_version,
+ global_request_id=global_request_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/ironicclient/v1/resource_fields.py
new/python-ironicclient-5.1.0/ironicclient/v1/resource_fields.py
--- old/python-ironicclient-4.8.0/ironicclient/v1/resource_fields.py
2021-08-31 15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/ironicclient/v1/resource_fields.py
2023-02-17 11:37:51.000000000 +0100
@@ -79,6 +79,8 @@
'enabled_storage_interfaces': 'Enabled Storage Interfaces',
'enabled_vendor_interfaces': 'Enabled Vendor Interfaces',
'extra': 'Extra',
+ 'event': 'Description of the event',
+ 'event_type': 'Event Origin Type',
'hostname': 'Hostname',
'hosts': 'Active host(s)',
'http_methods': 'Supported HTTP methods',
@@ -140,8 +142,10 @@
'raid_interface': 'RAID Interface',
'rescue_interface': 'Rescue Interface',
'storage_interface': 'Storage Interface',
+ 'severity': 'Severity',
'unique': 'Unique',
'upper_bound': 'Upper Bound',
+ 'user': 'User',
'vendor_interface': 'Vendor Interface',
'standalone_ports_supported': 'Standalone Ports Supported',
'physical_network': 'Physical Network',
@@ -570,3 +574,21 @@
'name',
],
)
+
+
+NODE_HISTORY_RESOURCE = Resource(
+ ['uuid',
+ 'created_at',
+ 'severity',
+ 'event']
+)
+
+NODE_HISTORY_DETAILED_RESOURCE = Resource(
+ ['uuid',
+ 'created_at',
+ 'severity',
+ 'event_type',
+ 'event',
+ 'conductor',
+ 'user']
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/lower-constraints.txt
new/python-ironicclient-5.1.0/lower-constraints.txt
--- old/python-ironicclient-4.8.0/lower-constraints.txt 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/lower-constraints.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,25 +0,0 @@
-PyYAML==3.13
-appdirs==1.3.0
-cliff==2.8.0
-coverage==4.0
-ddt==1.0.1
-dogpile.cache==0.8.0
-fixtures==3.0.0
-jsonschema==3.2.0
-keystoneauth1==3.11.0
-openstacksdk==0.18.0
-osc-lib==2.0.0
-oslo.config==6.3.0
-oslo.log==3.36.0
-oslo.utils==3.33.0
-oslotest==3.2.0
-pbr==2.0.0
-python-cinderclient==7.2.1
-python-novaclient==9.0.0
-python-openstackclient==3.12.0
-requests-mock==1.2.0
-requests==2.14.2
-stestr==1.0.0
-stevedore==1.20.0
-tempest==25.0.0
-testtools==2.2.0
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/python_ironicclient.egg-info/PKG-INFO
new/python-ironicclient-5.1.0/python_ironicclient.egg-info/PKG-INFO
--- old/python-ironicclient-4.8.0/python_ironicclient.egg-info/PKG-INFO
2021-08-31 15:09:07.000000000 +0200
+++ new/python-ironicclient-5.1.0/python_ironicclient.egg-info/PKG-INFO
2023-02-17 11:38:39.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironicclient
-Version: 4.8.0
+Version: 5.1.0
Summary: OpenStack Bare Metal Provisioning API Client Library
Home-page: https://docs.openstack.org/python-ironicclient/latest/
Author: OpenStack
@@ -103,9 +103,8 @@
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3 :: Only
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
+Classifier: Programming Language :: Python :: 3.9
+Requires-Python: >=3.8
Provides-Extra: cli
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/python_ironicclient.egg-info/SOURCES.txt
new/python-ironicclient-5.1.0/python_ironicclient.egg-info/SOURCES.txt
--- old/python-ironicclient-4.8.0/python_ironicclient.egg-info/SOURCES.txt
2021-08-31 15:09:07.000000000 +0200
+++ new/python-ironicclient-5.1.0/python_ironicclient.egg-info/SOURCES.txt
2023-02-17 11:38:39.000000000 +0100
@@ -6,7 +6,6 @@
LICENSE
README.rst
bindep.txt
-lower-constraints.txt
requirements.txt
setup.cfg
setup.py
@@ -151,6 +150,7 @@
releasenotes/notes/add-conductor-cli-233249ebc9d5a5f3.yaml
releasenotes/notes/add-create-command-3df5efbbecc33276.yaml
releasenotes/notes/add-deploy-steps-arg-0b127e29c8cf976d.yaml
+releasenotes/notes/add-driver-cli-fields-selector-b0f527eb5f6fb2a9.yaml
releasenotes/notes/add-environment-variable-to-specify-version-cache-timeout-dfa5f6d4af0ea1d3.yaml
releasenotes/notes/add-events-support-53c461d28abf010b.yaml
releasenotes/notes/add-is-smartnic-port-attr-ed46d887aec276ed.yaml
@@ -161,6 +161,7 @@
releasenotes/notes/add-node-boot-mode-08ac768649a2fc93.yaml
releasenotes/notes/add-node-boot-mode-set-9746b45aa3f80fe8.yaml
releasenotes/notes/add-node-description-support-6efd0882eaa0c788.yaml
+releasenotes/notes/add-node-history-b9b9beeb0200f185.yaml
releasenotes/notes/add-node-lessee-c36409eb0415f75d.yaml
releasenotes/notes/add-node-owner-c2dce5a6075ce2b7.yaml
releasenotes/notes/add-node-resource-class-6040d1d6c734522c.yaml
@@ -179,6 +180,7 @@
releasenotes/notes/add_api_versions-a59e5b6899833c33.yaml
releasenotes/notes/add_automated_clean_field-d2a0c824a4e90bf4.yaml
releasenotes/notes/add_retired_field-6ec9f97c7c2f86ec.yaml
+releasenotes/notes/address-cross-distro-iso-tools-006711c9f150037a.yaml
releasenotes/notes/allocation-api-5f13082a8b36d788.yaml
releasenotes/notes/allocation-backfill-4d4e51af2f787a72.yaml
releasenotes/notes/allow-allocation-update-b4fb715045ab40a2.yaml
@@ -221,6 +223,7 @@
releasenotes/notes/latest-default-41fdcc49701c4d70.yaml
releasenotes/notes/latest-renegotiation-55daa01b3fc261be.yaml
releasenotes/notes/list-nodes-by-driver-b1e1e1018077089b.yaml
+releasenotes/notes/logging-9c452e4869d80de9.yaml
releasenotes/notes/manual-clean-09f6b49df7d2513f.yaml
releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml
releasenotes/notes/negative-wrap-fix-4197e91b2ecfb722.yaml
@@ -306,6 +309,9 @@
releasenotes/source/ussuri.rst
releasenotes/source/victoria.rst
releasenotes/source/wallaby.rst
+releasenotes/source/xena.rst
+releasenotes/source/yoga.rst
+releasenotes/source/zed.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
tools/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/python_ironicclient.egg-info/entry_points.txt
new/python-ironicclient-5.1.0/python_ironicclient.egg-info/entry_points.txt
--- old/python-ironicclient-4.8.0/python_ironicclient.egg-info/entry_points.txt
2021-08-31 15:09:07.000000000 +0200
+++ new/python-ironicclient-5.1.0/python_ironicclient.egg-info/entry_points.txt
2023-02-17 11:38:39.000000000 +0100
@@ -44,6 +44,8 @@
baremetal_node_create = ironicclient.osc.v1.baremetal_node:CreateBaremetalNode
baremetal_node_delete = ironicclient.osc.v1.baremetal_node:DeleteBaremetalNode
baremetal_node_deploy = ironicclient.osc.v1.baremetal_node:DeployBaremetalNode
+baremetal_node_history_get =
ironicclient.osc.v1.baremetal_node:NodeHistoryEventGet
+baremetal_node_history_list =
ironicclient.osc.v1.baremetal_node:NodeHistoryList
baremetal_node_inject_nmi =
ironicclient.osc.v1.baremetal_node:InjectNmiBaremetalNode
baremetal_node_inspect =
ironicclient.osc.v1.baremetal_node:InspectBaremetalNode
baremetal_node_list = ironicclient.osc.v1.baremetal_node:ListBaremetalNode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/python_ironicclient.egg-info/pbr.json
new/python-ironicclient-5.1.0/python_ironicclient.egg-info/pbr.json
--- old/python-ironicclient-4.8.0/python_ironicclient.egg-info/pbr.json
2021-08-31 15:09:07.000000000 +0200
+++ new/python-ironicclient-5.1.0/python_ironicclient.egg-info/pbr.json
2023-02-17 11:38:39.000000000 +0100
@@ -1 +1 @@
-{"git_version": "b5df386", "is_release": true}
\ No newline at end of file
+{"git_version": "f945974", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/notes/add-driver-cli-fields-selector-b0f527eb5f6fb2a9.yaml
new/python-ironicclient-5.1.0/releasenotes/notes/add-driver-cli-fields-selector-b0f527eb5f6fb2a9.yaml
---
old/python-ironicclient-4.8.0/releasenotes/notes/add-driver-cli-fields-selector-b0f527eb5f6fb2a9.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-5.1.0/releasenotes/notes/add-driver-cli-fields-selector-b0f527eb5f6fb2a9.yaml
2023-02-17 11:37:51.000000000 +0100
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ Adds support for fields selector in driver cli.
+ See `story 1674775
+ <https://storyboard.openstack.org/#!/story/1674775>`_.
+
+ * ``openstack baremetal driver list --fields <field> [<field> ...]``
+ * ``openstack baremetal driver show <driver_name> --fields <field>
[<field> ...]``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/notes/add-node-history-b9b9beeb0200f185.yaml
new/python-ironicclient-5.1.0/releasenotes/notes/add-node-history-b9b9beeb0200f185.yaml
---
old/python-ironicclient-4.8.0/releasenotes/notes/add-node-history-b9b9beeb0200f185.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-5.1.0/releasenotes/notes/add-node-history-b9b9beeb0200f185.yaml
2023-02-17 11:37:51.000000000 +0100
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ Adds support for API version ``1.78`` and "node history" functionality
+ allowing users to query a list of events, and retrieve a single history
+ event from a baremetal node.
+ - Adds ``get_history_list`` and ``get_history_event`` methods to the python
+ client library. These methods allow operators to query recorded node event
+ information from an ironic API, where supported and enabled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/notes/address-cross-distro-iso-tools-006711c9f150037a.yaml
new/python-ironicclient-5.1.0/releasenotes/notes/address-cross-distro-iso-tools-006711c9f150037a.yaml
---
old/python-ironicclient-4.8.0/releasenotes/notes/address-cross-distro-iso-tools-006711c9f150037a.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-5.1.0/releasenotes/notes/address-cross-distro-iso-tools-006711c9f150037a.yaml
2023-02-17 11:37:51.000000000 +0100
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Embedded configuration drive generation support has been updated to
+ support ``mkisofs`` and ``xorrisofs`` in adition to the previously
+ supported ``genisoimage`` utility. This is as distributions such as
+ Debian and OpenSUSE do not ship ``genisoimage``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/notes/logging-9c452e4869d80de9.yaml
new/python-ironicclient-5.1.0/releasenotes/notes/logging-9c452e4869d80de9.yaml
---
old/python-ironicclient-4.8.0/releasenotes/notes/logging-9c452e4869d80de9.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-5.1.0/releasenotes/notes/logging-9c452e4869d80de9.yaml
2023-02-17 11:37:51.000000000 +0100
@@ -0,0 +1,9 @@
+---
+fixes:
+ - |
+ OpenStackSDK log messages are no longer sent to stdout and no longer break
+ parsing the output.
+ - |
+ The logging configuration now respects the ``--verbose`` flag.
+ - |
+ Some warnings are no longer duplicated.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/source/conf.py
new/python-ironicclient-5.1.0/releasenotes/source/conf.py
--- old/python-ironicclient-4.8.0/releasenotes/source/conf.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/releasenotes/source/conf.py 2023-02-17
11:37:51.000000000 +0100
@@ -61,8 +61,8 @@
master_doc = 'index'
# General information about the project.
-project = u'Ironic Client Release Notes'
-copyright = u'2015, Ironic Developers'
+project = 'Ironic Client Release Notes'
+copyright = '2015, Ironic Developers'
# Release notes are version independent.
# The short X.Y version.
@@ -208,8 +208,8 @@
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'IronicClientReleaseNotes.tex',
- u'Ironic Client Release Notes Documentation',
- u'Ironic Developers', 'manual'),
+ 'Ironic Client Release Notes Documentation',
+ 'Ironic Developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@@ -239,8 +239,8 @@
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'ironicclientreleasenotes',
- u'Ironic Client Release Notes Documentation',
- [u'Ironic Developers'], 1)
+ 'Ironic Client Release Notes Documentation',
+ ['Ironic Developers'], 1)
]
# If true, show URL addresses after external links.
@@ -254,8 +254,8 @@
# dir menu entry, description, category)
texinfo_documents = [
('index', 'IronicClientReleaseNotes',
- u'Ironic Client Release Notes Documentation',
- u'Ironic Developers', 'IronicClientReleaseNotes',
+ 'Ironic Client Release Notes Documentation',
+ 'Ironic Developers', 'IronicClientReleaseNotes',
'Bare metal provisioning service client.',
'Miscellaneous'),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/source/index.rst
new/python-ironicclient-5.1.0/releasenotes/source/index.rst
--- old/python-ironicclient-4.8.0/releasenotes/source/index.rst 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/releasenotes/source/index.rst 2023-02-17
11:37:51.000000000 +0100
@@ -6,6 +6,9 @@
:maxdepth: 1
unreleased
+ zed
+ yoga
+ xena
wallaby
victoria
ussuri
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/source/xena.rst
new/python-ironicclient-5.1.0/releasenotes/source/xena.rst
--- old/python-ironicclient-4.8.0/releasenotes/source/xena.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/python-ironicclient-5.1.0/releasenotes/source/xena.rst 2023-02-17
11:37:51.000000000 +0100
@@ -0,0 +1,6 @@
+=========================
+Xena Series Release Notes
+=========================
+
+.. release-notes::
+ :branch: stable/xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/source/yoga.rst
new/python-ironicclient-5.1.0/releasenotes/source/yoga.rst
--- old/python-ironicclient-4.8.0/releasenotes/source/yoga.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/python-ironicclient-5.1.0/releasenotes/source/yoga.rst 2023-02-17
11:37:51.000000000 +0100
@@ -0,0 +1,6 @@
+=========================
+Yoga Series Release Notes
+=========================
+
+.. release-notes::
+ :branch: stable/yoga
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/releasenotes/source/zed.rst
new/python-ironicclient-5.1.0/releasenotes/source/zed.rst
--- old/python-ironicclient-4.8.0/releasenotes/source/zed.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/python-ironicclient-5.1.0/releasenotes/source/zed.rst 2023-02-17
11:37:51.000000000 +0100
@@ -0,0 +1,6 @@
+========================
+Zed Series Release Notes
+========================
+
+.. release-notes::
+ :branch: stable/zed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/requirements.txt
new/python-ironicclient-5.1.0/requirements.txt
--- old/python-ironicclient-4.8.0/requirements.txt 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/requirements.txt 2023-02-17
11:37:51.000000000 +0100
@@ -1,3 +1,7 @@
+# Requirements lower bounds listed here are our best effort to keep them up to
+# date but we do not test them so no guarantee of having them all correct. If
+# you find any incorrect lower bounds, let us know or propose a fix.
+
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/setup.cfg
new/python-ironicclient-5.1.0/setup.cfg
--- old/python-ironicclient-4.8.0/setup.cfg 2021-08-31 15:09:07.817825600
+0200
+++ new/python-ironicclient-5.1.0/setup.cfg 2023-02-17 11:38:39.215122500
+0100
@@ -5,7 +5,7 @@
author = OpenStack
author_email = [email protected]
home_page = https://docs.openstack.org/python-ironicclient/latest/
-python_requires = >=3.6
+python_requires = >=3.8
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -16,9 +16,8 @@
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.6
- Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
[files]
packages = ironicclient
@@ -69,6 +68,8 @@
baremetal_node_create =
ironicclient.osc.v1.baremetal_node:CreateBaremetalNode
baremetal_node_delete =
ironicclient.osc.v1.baremetal_node:DeleteBaremetalNode
baremetal_node_deploy =
ironicclient.osc.v1.baremetal_node:DeployBaremetalNode
+ baremetal_node_history_list =
ironicclient.osc.v1.baremetal_node:NodeHistoryList
+ baremetal_node_history_get =
ironicclient.osc.v1.baremetal_node:NodeHistoryEventGet
baremetal_node_inspect =
ironicclient.osc.v1.baremetal_node:InspectBaremetalNode
baremetal_node_list =
ironicclient.osc.v1.baremetal_node:ListBaremetalNode
baremetal_node_maintenance_set =
ironicclient.osc.v1.baremetal_node:MaintenanceSetBaremetalNode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/tools/install_venv_common.py
new/python-ironicclient-5.1.0/tools/install_venv_common.py
--- old/python-ironicclient-4.8.0/tools/install_venv_common.py 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/tools/install_venv_common.py 2023-02-17
11:37:51.000000000 +0100
@@ -16,16 +16,12 @@
"""Provides methods needed by installation script for OpenStack development
virtual environments.
-Since this script is used to bootstrap a virtualenv from the system's Python
-environment, it should be kept strictly compatible with Python 3.6.
-
Synced in from openstack-common
"""
import optparse
import os
import subprocess
-import sys
class InstallVenv(object):
@@ -44,10 +40,6 @@
print(message % args, file=sys.stderr)
sys.exit(1)
- def check_python_version(self):
- if sys.version_info < (3, 6):
- self.die("Need Python Version >= 3.6")
-
def run_command_with_code(self, cmd, redirect_output=True,
check_exit_code=True):
"""Runs a command in an out-of-process shell.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/tox.ini
new/python-ironicclient-5.1.0/tox.ini
--- old/python-ironicclient-4.8.0/tox.ini 2021-08-31 15:08:24.000000000
+0200
+++ new/python-ironicclient-5.1.0/tox.ini 2023-02-17 11:37:51.000000000
+0100
@@ -1,7 +1,6 @@
[tox]
minversion = 3.18.0
envlist = py3,pep8
-skipsdist = True
ignore_basepython_conflict=true
[testenv]
@@ -12,7 +11,6 @@
# .stestr.conf uses TESTS_DIR
TESTS_DIR=./ironicclient/tests/unit
usedevelop = True
-install_command = pip install {opts} {packages}
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
@@ -91,9 +89,3 @@
[hacking]
import_exceptions = testtools.matchers, ironicclient.common.i18n
-
-[testenv:lower-constraints]
-deps =
- -c{toxinidir}/lower-constraints.txt
- -r{toxinidir}/test-requirements.txt
- -r{toxinidir}/requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.8.0/zuul.d/ironicclient-jobs.yaml
new/python-ironicclient-5.1.0/zuul.d/ironicclient-jobs.yaml
--- old/python-ironicclient-4.8.0/zuul.d/ironicclient-jobs.yaml 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/zuul.d/ironicclient-jobs.yaml 2023-02-17
11:37:51.000000000 +0100
@@ -41,5 +41,4 @@
- openstack/python-ironicclient
vars:
devstack_localrc:
- IRONIC_DEFAULT_BOOT_OPTION: netboot
EBTABLES_RACE_FIX: True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.8.0/zuul.d/project.yaml
new/python-ironicclient-5.1.0/zuul.d/project.yaml
--- old/python-ironicclient-4.8.0/zuul.d/project.yaml 2021-08-31
15:08:24.000000000 +0200
+++ new/python-ironicclient-5.1.0/zuul.d/project.yaml 2023-02-17
11:37:51.000000000 +0100
@@ -2,8 +2,7 @@
templates:
- check-requirements
- openstack-cover-jobs
- - openstack-lower-constraints-master-branch-jobs
- - openstack-python3-xena-jobs
+ - openstack-python3-antelope-jobs
- openstackclient-plugin-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
@@ -12,7 +11,6 @@
- ironicclient-functional
- ironicclient-tempest
gate:
- queue: ironic
jobs:
- ironicclient-functional
- ironicclient-tempest