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 2021-05-10 15:37:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ironicclient (Old)
and /work/SRC/openSUSE:Factory/.python-ironicclient.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ironicclient"
Mon May 10 15:37:23 2021 rev:22 rq:889969 version:4.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ironicclient/python-ironicclient.changes
2021-02-02 14:26:01.183424293 +0100
+++
/work/SRC/openSUSE:Factory/.python-ironicclient.new.2988/python-ironicclient.changes
2021-05-10 15:39:35.737511309 +0200
@@ -1,0 +2,23 @@
+Sun May 2 17:21:48 UTC 2021 - [email protected]
+
+- update to version 4.6.1
+ - Add 'deploy steps' for provisioning API
+ - Use TOX_CONSTRAINTS_FILE
+ - Remove lower-constraints job
+ - Add tests for 'baremetal port create' command
+ - Support YAML files wherever JSON files are accepted
+ - Add Python3 wallaby unit tests
+ - remove lower-constraints job tox.ini
+ - Move pep8 dependencies from test-requirements to tox.ini
+ - Set safe version of hacking
+ - Support setting automated_clean to False
+ - Update minversion of tox
+ - Update create node from file example
+ - requirements: Drop os-testr
+ - Add PyPi link to readme.rst
+ - Fix l-c job
+ - Update master for stable/victoria
+ - Remove install unnecessary packages
+ - Clearer error message when unable to parse JSON
+
+-------------------------------------------------------------------
Old:
----
python-ironicclient-4.4.0.tar.gz
New:
----
python-ironicclient-4.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ironicclient.spec ++++++
--- /var/tmp/diff_new_pack.fhzdjE/_old 2021-05-10 15:39:36.141509654 +0200
+++ /var/tmp/diff_new_pack.fhzdjE/_new 2021-05-10 15:39:36.145509638 +0200
@@ -17,13 +17,13 @@
Name: python-ironicclient
-Version: 4.4.0
+Version: 4.6.1
Release: 0
Summary: Python API and CLI for OpenStack Ironic
License: Apache-2.0
Group: Development/Languages/Python
-URL: https://launchpad.net/python-ironicclient
-Source0:
https://files.pythonhosted.org/packages/source/p/python-ironicclient/python-ironicclient-4.4.0.tar.gz
+URL: https://docs.openstack.org/python-ironicclient
+Source0:
https://files.pythonhosted.org/packages/source/p/python-ironicclient/python-ironicclient-4.6.1.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-Babel
BuildRequires: python3-PyYAML >= 3.13
@@ -31,7 +31,6 @@
BuildRequires: python3-dogpile.cache >= 0.8.0
BuildRequires: python3-fixtures
BuildRequires: python3-jsonschema >= 3.2.0
-BuildRequires: python3-mock
BuildRequires: python3-openstackclient
BuildRequires: python3-osc-lib >= 2.0.0
BuildRequires: python3-oslo.i18n
@@ -53,7 +52,6 @@
%package -n python3-ironicclient
Summary: Python API and CLI for OpenStack Ironic
-Group: Development/Languages/Python
Requires: python3-PyYAML >= 3.13
Requires: python3-appdirs >= 1.3.0
Requires: python3-dogpile.cache >= 0.8.0
@@ -90,13 +88,13 @@
This package contains auto-generated documentation.
%prep
-%autosetup -p1 -n python-ironicclient-4.4.0
+%autosetup -p1 -n python-ironicclient-4.6.1
%py_req_cleanup
%build
%{py3_build}
-PBR_VERSION=4.4.0 %sphinx_build -b html doc/source doc/build/html
+PBR_VERSION=4.6.1 %sphinx_build -b html doc/source doc/build/html
# remove the sphinx-build leftovers
rm -rf doc/build/html/.{doctrees,buildinfo}
++++++ _service ++++++
--- /var/tmp/diff_new_pack.fhzdjE/_old 2021-05-10 15:39:36.169509540 +0200
+++ /var/tmp/diff_new_pack.fhzdjE/_new 2021-05-10 15:39:36.173509524 +0200
@@ -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-ironicclient/python-ironicclient.spec.j2?h=stable/victoria</param>
+ <param
name="input-template">https://git.openstack.org/cgit/openstack/rpm-packaging/plain/openstack/python-ironicclient/python-ironicclient.spec.j2?h=stable/wallaby</param>
<param name="output-name">python-ironicclient.spec</param>
- <param
name="requirements">https://opendev.org/openstack/python-ironicclient/raw/branch/stable/victoria/requirements.txt</param>
+ <param
name="requirements">https://opendev.org/openstack/python-ironicclient/raw/branch/stable/wallaby/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,python-ironicclient</param>
</service>
++++++ python-ironicclient-4.4.0.tar.gz -> python-ironicclient-4.6.1.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/AUTHORS
new/python-ironicclient-4.6.1/AUTHORS
--- old/python-ironicclient-4.4.0/AUTHORS 2020-10-16 11:54:01.000000000
+0200
+++ new/python-ironicclient-4.6.1/AUTHORS 2021-03-12 18:04:50.000000000
+0100
@@ -1,4 +1,5 @@
Adam Gandelman <[email protected]>
+Aija Jaunt??va <[email protected]>
Alexey Galkin <[email protected]>
Aline Bousquet <[email protected]>
Andreas Jaeger <[email protected]>
@@ -150,11 +151,14 @@
huang.zhiping <[email protected]>
jiang wei <[email protected]>
jiangfei <[email protected]>
+likui <[email protected]>
linbing <[email protected]>
linggao <[email protected]>
lingyongxu <[email protected]>
liuqing <[email protected]>
+liushuobj <[email protected]>
llg8212 <[email protected]>
+maaoyu <[email protected]>
max_lobur <[email protected]>
melissaml <[email protected]>
qinchunhua <[email protected]>
@@ -169,6 +173,7 @@
wangfaxin <[email protected]>
wu.chunyang <[email protected]>
wu.chunyang <[email protected]>
+wu.shiming <[email protected]>
xiexs <[email protected]>
ya.wang <[email protected]>
zhengchuan hu <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/ChangeLog
new/python-ironicclient-4.6.1/ChangeLog
--- old/python-ironicclient-4.4.0/ChangeLog 2020-10-16 11:54:01.000000000
+0200
+++ new/python-ironicclient-4.6.1/ChangeLog 2021-03-12 18:04:50.000000000
+0100
@@ -1,12 +1,36 @@
CHANGES
=======
-4.4.0
+4.6.1
-----
+
+4.6.0
+-----
+
+* Clearer error message when unable to parse JSON
+* Support YAML files wherever JSON files are accepted
+* Update minversion of tox
+* Add 'deploy steps' for provisioning API
+
+4.5.0
+-----
+
+* Add PyPi link to readme.rst
+* Support setting automated\_clean to False
+* Move pep8 dependencies from test-requirements to tox.ini
+* remove lower-constraints job tox.ini
+* Remove lower-constraints job
+* Use TOX\_CONSTRAINTS\_FILE
+* Update create node from file example
+* Set safe version of hacking
+* Remove install unnecessary packages
+* requirements: Drop os-testr
+* Remove install unnecessary packages
* Fix l-c job
-* Update TOX\_CONSTRAINTS\_FILE for stable/victoria
-* Update .gitreview for stable/victoria
+* Add Python3 wallaby unit tests
+* Update master for stable/victoria
+* Add tests for 'baremetal port create' command
4.3.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/PKG-INFO
new/python-ironicclient-4.6.1/PKG-INFO
--- old/python-ironicclient-4.4.0/PKG-INFO 2020-10-16 11:54:01.000000000
+0200
+++ new/python-ironicclient-4.6.1/PKG-INFO 2021-03-12 18:04:51.037501000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironicclient
-Version: 4.4.0
+Version: 4.6.1
Summary: OpenStack Bare Metal Provisioning API Client Library
Home-page: https://docs.openstack.org/python-ironicclient/latest/
Author: OpenStack
@@ -41,6 +41,7 @@
* Documentation: https://docs.openstack.org/python-ironicclient/latest/
* Source: https://opendev.org/openstack/python-ironicclient
+ * PyPi: https://pypi.org/project/python-ironicclient
* Bugs: https://storyboard.openstack.org/#!/project/959
* Release notes:
https://docs.openstack.org/releasenotes/python-ironicclient/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/README.rst
new/python-ironicclient-4.6.1/README.rst
--- old/python-ironicclient-4.4.0/README.rst 2020-10-16 11:52:54.000000000
+0200
+++ new/python-ironicclient-4.6.1/README.rst 2021-03-12 18:03:56.000000000
+0100
@@ -33,6 +33,7 @@
* Documentation: https://docs.openstack.org/python-ironicclient/latest/
* Source: https://opendev.org/openstack/python-ironicclient
+* PyPi: https://pypi.org/project/python-ironicclient
* Bugs: https://storyboard.openstack.org/#!/project/959
* Release notes: https://docs.openstack.org/releasenotes/python-ironicclient/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/doc/source/user/create_command.rst
new/python-ironicclient-4.6.1/doc/source/user/create_command.rst
--- old/python-ironicclient-4.4.0/doc/source/user/create_command.rst
2020-10-16 11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/doc/source/user/create_command.rst
2021-03-12 18:03:56.000000000 +0100
@@ -75,7 +75,7 @@
"nodes": [
{
"name": "node-3",
- "driver": "agent_ipmitool",
+ "driver": "ipmi",
"portgroups": [
{
"name": "switch.cz7882.ports.1-2",
@@ -96,11 +96,16 @@
{
"address": "00:00:00:00:00:03"
}
- ]
+ ],
+ "driver_info": {
+ "ipmi_address": "192.168.1.23",
+ "ipmi_username": "BmcUsername",
+ "ipmi_password": "BmcPassword",
+ }
},
{
"name": "node-4",
- "driver": "agent_ipmitool",
+ "driver": "ipmi",
"ports": [
{
"address": "00:00:00:00:00:04"
@@ -116,7 +121,7 @@
"nodes": [
{
"name": "node-5",
- "driver": "pxe_ipmitool",
+ "driver": "ipmi",
"chassis_uuid": "74d93e6e-7384-4994-a614-fd7b399b0785",
"ports": [
{
@@ -126,7 +131,7 @@
},
{
"name": "node-6",
- "driver": "pxe_ipmitool"
+ "driver": "ipmi"
}
]
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/common/http.py
new/python-ironicclient-4.6.1/ironicclient/common/http.py
--- old/python-ironicclient-4.4.0/ironicclient/common/http.py 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/common/http.py 2021-03-12
18:03:56.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 = 67
+LAST_KNOWN_API_VERSION = 69
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.4.0/ironicclient/common/utils.py
new/python-ironicclient-4.6.1/ironicclient/common/utils.py
--- old/python-ironicclient-4.4.0/ironicclient/common/utils.py 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/common/utils.py 2021-03-12
18:03:56.000000000 +0100
@@ -26,6 +26,7 @@
import time
from oslo_utils import strutils
+import yaml
from ironicclient.common.i18n import _
from ironicclient import exc
@@ -366,7 +367,7 @@
def handle_json_or_file_arg(json_arg):
"""Attempts to read JSON argument from file or string.
- :param json_arg: May be a file name containing the JSON, or
+ :param json_arg: May be a file name containing the YAML or JSON, or
a JSON string.
:returns: A list or dictionary parsed from JSON.
:raises: InvalidAttribute if the argument cannot be parsed.
@@ -375,16 +376,16 @@
if os.path.isfile(json_arg):
try:
with open(json_arg, 'r') as f:
- json_arg = f.read().strip()
+ return yaml.safe_load(f)
except Exception as e:
- err = _("Cannot get JSON from file '%(file)s'. "
+ err = _("Cannot get JSON/YAML from file '%(file)s'. "
"Error: %(err)s") % {'err': e, 'file': json_arg}
raise exc.InvalidAttribute(err)
try:
json_arg = json.loads(json_arg)
except ValueError as e:
- err = (_("For JSON: '%(string)s', error: '%(err)s'") %
- {'err': e, 'string': json_arg})
+ err = (_("Value '%(string)s' is not a file and cannot be parsed "
+ "as JSON: '%(err)s'") % {'err': e, 'string': json_arg})
raise exc.InvalidAttribute(err)
return json_arg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/osc/v1/baremetal_deploy_template.py
new/python-ironicclient-4.6.1/ironicclient/osc/v1/baremetal_deploy_template.py
---
old/python-ironicclient-4.4.0/ironicclient/osc/v1/baremetal_deploy_template.py
2020-10-16 11:52:54.000000000 +0200
+++
new/python-ironicclient-4.6.1/ironicclient/osc/v1/baremetal_deploy_template.py
2021-03-12 18:03:56.000000000 +0100
@@ -25,9 +25,9 @@
_DEPLOY_STEPS_HELP = _(
- "The deploy steps in JSON format. May be the path to a file containing "
- "the deploy steps; OR '-', with the deploy steps being read from standard "
- "input; OR a string. The value should be a list of deploy-step "
+ "The deploy steps. May be the path to a YAML file containing the deploy "
+ "steps; OR '-', with the deploy steps being read from standard "
+ "input; OR a JSON string. The value should be a list of deploy-step "
"dictionaries; each dictionary should have keys 'interface', 'step', "
"'args' and 'priority'.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/osc/v1/baremetal_node.py
new/python-ironicclient-4.6.1/ironicclient/osc/v1/baremetal_node.py
--- old/python-ironicclient-4.4.0/ironicclient/osc/v1/baremetal_node.py
2020-10-16 11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/osc/v1/baremetal_node.py
2021-03-12 18:03:56.000000000 +0100
@@ -40,7 +40,7 @@
NETWORK_DATA_ARG_HELP = _(
- "JSON string or a file or '-' for stdin to read static network "
+ "JSON string or a YAML file or '-' for stdin to read static network "
"configuration for the baremetal node associated with this ironic node. "
"Format of this file should comply with Nova network data metadata "
"(network_data.json). Depending on ironic boot interface capabilities "
@@ -81,6 +81,9 @@
clean_steps = getattr(parsed_args, 'clean_steps', None)
clean_steps = utils.handle_json_arg(clean_steps, 'clean steps')
+ deploy_steps = getattr(parsed_args, 'deploy_steps', None)
+ deploy_steps = utils.handle_json_arg(deploy_steps, 'deploy steps')
+
config_drive = getattr(parsed_args, 'config_drive', None)
if config_drive:
try:
@@ -98,6 +101,7 @@
parsed_args.provision_state,
configdrive=config_drive,
cleansteps=clean_steps,
+ deploysteps=deploy_steps,
rescue_password=rescue_password)
@@ -252,10 +256,10 @@
metavar='<clean-steps>',
required=True,
default=None,
- help=_("The clean steps in JSON format. May be the path to a file "
+ help=_("The clean steps. May be the path to a YAML file "
"containing the clean steps; OR '-', with the clean steps "
- "being read from standard input; OR a string. The value "
- "should be a list of clean-step dictionaries; each "
+ "being read from standard input; OR a JSON string. The "
+ "value should be a list of clean-step dictionaries; each "
"dictionary should have keys 'interface' and 'step', and "
"optional key 'args'."))
return parser
@@ -456,11 +460,18 @@
'--conductor-group',
metavar='<conductor_group>',
help=_('Conductor group the node will belong to'))
- parser.add_argument(
+ clean = parser.add_mutually_exclusive_group()
+ clean.add_argument(
'--automated-clean',
action='store_true',
default=None,
help=_('Enable automated cleaning for the node'))
+ clean.add_argument(
+ '--no-automated-clean',
+ action='store_false',
+ dest='automated_clean',
+ default=None,
+ help=_('Explicitly disable automated cleaning for the node'))
parser.add_argument(
'--owner',
metavar='<owner>',
@@ -554,6 +565,18 @@
metavar='<config-drive>',
default=None,
help=CONFIG_DRIVE_ARG_HELP)
+
+ parser.add_argument(
+ '--deploy-steps',
+ metavar='<deploy-steps>',
+ required=False,
+ default=None,
+ help=_("The deploy steps. May be the path to a YAML file "
+ "containing the deploy steps; OR '-', with the deploy "
+ "steps being read from standard input; OR a JSON string. "
+ "The value should be a list of deploy-step dictionaries; "
+ "each dictionary should have keys 'interface' and 'step', "
+ "and optional key 'args'."))
return parser
@@ -1029,6 +1052,18 @@
metavar='<config-drive>',
default=None,
help=CONFIG_DRIVE_ARG_HELP)
+
+ parser.add_argument(
+ '--deploy-steps',
+ metavar='<deploy-steps>',
+ required=False,
+ default=None,
+ help=_("The deploy steps in JSON format. May be the path to a "
+ "file containing the deploy steps; OR '-', with the deploy "
+ "steps being read from standard input; OR a string. The "
+ "value should be a list of deploy-step dictionaries; each "
+ "dictionary should have keys 'interface', 'step', "
+ "'priority' and optional key 'args'."))
return parser
@@ -1191,11 +1226,18 @@
metavar='<conductor_group>',
help=_('Set the conductor group for the node'),
)
- parser.add_argument(
+ clean = parser.add_mutually_exclusive_group()
+ clean.add_argument(
'--automated-clean',
action='store_true',
- help=_('Enable automated cleaning for the node'),
- )
+ default=None,
+ help=_('Enable automated cleaning for the node'))
+ clean.add_argument(
+ '--no-automated-clean',
+ action='store_false',
+ dest='automated_clean',
+ default=None,
+ help=_('Explicitly disable automated cleaning for the node'))
parser.add_argument(
'--protected',
action='store_true',
@@ -1220,7 +1262,7 @@
'--target-raid-config',
metavar='<target_raid_config>',
help=_('Set the target RAID configuration (JSON) for the node. '
- 'This can be one of: 1. a file containing JSON data of the '
+ 'This can be one of: 1. a file containing YAML data of the '
'RAID configuration; 2. "-" to read the contents from '
'standard input; or 3. a valid JSON string.'),
)
@@ -1284,7 +1326,7 @@
raid_config)
properties = []
- for field in ['automated_clean', 'instance_uuid', 'name',
+ for field in ['instance_uuid', 'name',
'chassis_uuid', 'driver', 'resource_class',
'conductor_group', 'protected', 'protected_reason',
'retired', 'retired_reason', 'owner', 'lessee',
@@ -1294,6 +1336,10 @@
properties.extend(utils.args_array_to_patch(
'add', ["%s=%s" % (field, value)]))
+ if parsed_args.automated_clean is not None:
+ properties.extend(utils.args_array_to_patch(
+ 'add', ["automated_clean=%s" % parsed_args.automated_clean]))
+
if parsed_args.reset_interfaces and not parsed_args.driver:
raise exc.CommandError(
_("--reset-interfaces can only be specified with --driver"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_allocation.py
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_allocation.py
---
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_allocation.py
2020-10-16 11:52:54.000000000 +0200
+++
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_allocation.py
2021-03-12 18:03:56.000000000 +0100
@@ -129,16 +129,14 @@
@ddt.data(
('--uuid', '', 'expected one argument'),
- ('--uuid', '!@#$^*&%^', 'Expected a UUID'),
+ ('--uuid', '!@#$^*&%^', 'Expected UUID for uuid'),
('--extra', '', 'expected one argument'),
('--name', '', 'expected one argument'),
('--name', 'not/a/name', 'invalid name'),
('--resource-class', '', 'expected one argument'),
- ('--resource-class', 'x' * 81,
- 'Value should have a maximum character requirement of 80'),
+ ('--resource-class', 'x' * 81, 'is too long'),
('--trait', '', 'expected one argument'),
- ('--trait', 'foo',
- 'A custom trait must start with the prefix CUSTOM_'),
+ ('--trait', 'foo', 'does not match'),
('--candidate-node', '', 'expected one argument'),
('--candidate-node', 'banana?', 'Nodes cannot be found'),
('--wait', 'meow', 'invalid int value'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_deploy_template_basic.py
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_deploy_template_basic.py
---
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_deploy_template_basic.py
2020-10-16 11:52:54.000000000 +0200
+++
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_deploy_template_basic.py
2021-03-12 18:03:56.000000000 +0100
@@ -158,12 +158,12 @@
@ddt.data(
('--uuid', '', 'expected one argument'),
- ('--uuid', '!@#$^*&%^', 'Expected a UUID'),
+ ('--uuid', '!@#$^*&%^', 'Expected UUID for uuid'),
('', '', 'the following arguments are required'),
- ('', 'not/a/name', 'Deploy template name must be a valid trait'),
- ('', 'foo', 'Deploy template name must be a valid trait'),
+ ('', 'not/a/name', 'does not match'),
+ ('', 'foo', 'does not match'),
('--steps', '', 'expected one argument'),
- ('--steps', '[]', 'No deploy steps specified'))
+ ('--steps', '[]', 'is too short'))
@ddt.unpack
def test_create_negative(self, argument, value, ex_text):
"""Check errors on invalid input parameters."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_node_create_negative.py
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_node_create_negative.py
---
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_node_create_negative.py
2020-10-16 11:52:54.000000000 +0200
+++
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_node_create_negative.py
2021-03-12 18:03:56.000000000 +0100
@@ -27,7 +27,7 @@
@ddt.data(
('--uuid', '', 'expected one argument'),
- ('--uuid', '!@#$^*&%^', 'Expected a UUID'),
+ ('--uuid', '!@#$^*&%^', 'Expected UUID for uuid'),
('--uuid', '0000 0000', 'unrecognized arguments'),
('--driver-info', '', 'expected one argument'),
('--driver-info', 'some info', 'unrecognized arguments'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_port_create.py
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_port_create.py
---
old/python-ironicclient-4.4.0/ironicclient/tests/functional/osc/v1/test_baremetal_port_create.py
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-4.6.1/ironicclient/tests/functional/osc/v1/test_baremetal_port_create.py
2021-03-12 18:03:56.000000000 +0100
@@ -0,0 +1,75 @@
+# Copyright (c) 2016 Mirantis, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from tempest.lib.common.utils import data_utils
+
+from ironicclient.tests.functional.osc.v1 import base
+
+
+class BaremetalPortCreate(base.TestCase):
+ """Detailed functional tests for baremetal port create command."""
+
+ def setUp(self):
+ super(BaremetalPortCreate, self).setUp()
+ self.node = self.node_create()
+
+ def test_extras(self):
+ """Check baremetal port create command with extra data.
+
+ Test steps:
+ 1) Create port using solitary and multiple --extra arguments.
+ 2) Check that port successfully created with right extras.
+ """
+ extras = [{'single_extra': 'yes'},
+ {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}]
+
+ for extra in extras:
+ params = self.generate_params('--extra', extra)
+ port = self.port_create(self.node['uuid'], params=params)
+ self.assert_dict_is_subset(extra, port['extra'])
+
+ def test_pxe_1_19(self):
+ """Check baremetal port create command with PXE option.
+
+ Test steps:
+ 1) Create port using --pxe-enabled argument.
+ 2) Check that port successfully created with right PXE option.
+ """
+ pxe_values = [True, False]
+ api_version = ' --os-baremetal-api-version 1.19'
+
+ for value in pxe_values:
+ port = self.port_create(
+ self.node['uuid'],
+ params='--pxe-enabled {0} {1}'.format(value, api_version))
+ self.assertEqual(value, port['pxe_enabled'])
+
+ def test_llc_1_19(self):
+ """Check baremetal port create command with LLC option.
+
+ Test steps:
+ 1) Create port using --local-link-connection argument.
+ 2) Check that port successfully created with right LLC data.
+ """
+ fake_port_id = data_utils.rand_name(prefix='ovs-node-')
+ fake_switch_id = data_utils.rand_mac_address()
+ llc_value = {"switch_info": "brbm",
+ "port_id": fake_port_id,
+ "switch_id": fake_switch_id}
+ api_version = ' --os-baremetal-api-version 1.19'
+
+ params = self.generate_params('--local-link-connection', llc_value)
+ port = self.port_create(self.node['uuid'],
+ params='{0} {1}'.format(params, api_version))
+ self.assert_dict_is_subset(llc_value, port['local_link_connection'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/unit/common/test_utils.py
new/python-ironicclient-4.6.1/ironicclient/tests/unit/common/test_utils.py
--- old/python-ironicclient-4.4.0/ironicclient/tests/unit/common/test_utils.py
2020-10-16 11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/tests/unit/common/test_utils.py
2021-03-12 18:03:56.000000000 +0100
@@ -342,7 +342,7 @@
def test_handle_json_or_file_arg_bad_json(self):
cleansteps = 'foo'
self.assertRaisesRegex(exc.InvalidAttribute,
- 'For JSON',
+ 'is not a file and cannot be parsed as JSON',
utils.handle_json_or_file_arg, cleansteps)
def test_handle_json_or_file_arg_file(self):
@@ -355,17 +355,24 @@
self.assertEqual(json.loads(contents), steps)
+ def test_handle_yaml_or_file_arg_file(self):
+ contents = '''---
+- step: upgrade
+ interface: deploy'''
+
+ with tempfile.NamedTemporaryFile(mode='w') as f:
+ f.write(contents)
+ f.flush()
+ steps = utils.handle_json_or_file_arg(f.name)
+
+ self.assertEqual([{"step": "upgrade", "interface": "deploy"}], steps)
+
@mock.patch.object(builtins, 'open', autospec=True)
def test_handle_json_or_file_arg_file_fail(self, mock_open):
- mock_file_object = mock.MagicMock()
- mock_file_handle = mock.MagicMock()
- mock_file_handle.__enter__.return_value = mock_file_object
- mock_open.return_value = mock_file_handle
- mock_file_object.read.side_effect = IOError
+ mock_open.return_value.__enter__.side_effect = IOError
with tempfile.NamedTemporaryFile(mode='w') as f:
self.assertRaisesRegex(exc.InvalidAttribute,
"from file",
utils.handle_json_or_file_arg, f.name)
mock_open.assert_called_once_with(f.name, 'r')
- mock_file_object.read.assert_called_once_with()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
new/python-ironicclient-4.6.1/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
---
old/python-ironicclient-4.4.0/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
2020-10-16 11:52:54.000000000 +0200
+++
new/python-ironicclient-4.6.1/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
2021-03-12 18:03:56.000000000 +0100
@@ -56,7 +56,8 @@
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
'node_uuid', 'adopt',
- cleansteps=None, configdrive=None, rescue_password=None)
+ cleansteps=None, deploysteps=None, configdrive=None,
+ rescue_password=None)
def test_adopt_no_wait(self):
arglist = ['node_uuid']
@@ -465,6 +466,11 @@
[('automated_clean', True)],
{'automated_clean': True})
+ def test_baremetal_create_with_no_automated_clean(self):
+ self.check_with_options(['--no-automated-clean'],
+ [('automated_clean', False)],
+ {'automated_clean': False})
+
def test_baremetal_create_with_owner(self):
self.check_with_options(['--owner', 'owner 1'],
[('owner', 'owner 1')],
@@ -1441,11 +1447,13 @@
def test_deploy_baremetal_provision_state_active_and_configdrive(self):
arglist = ['node_uuid',
- '--config-drive', 'path/to/drive']
+ '--config-drive', 'path/to/drive',
+ '--deploy-steps', '[{"interface":"deploy"}]']
verifylist = [
('node', 'node_uuid'),
('provision_state', 'active'),
('config_drive', 'path/to/drive'),
+ ('deploy_steps', '[{"interface":"deploy"}]')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1454,7 +1462,8 @@
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
'node_uuid', 'active',
- cleansteps=None, configdrive='path/to/drive', rescue_password=None)
+ cleansteps=None, deploysteps=[{"interface": "deploy"}],
+ configdrive='path/to/drive', rescue_password=None)
def test_deploy_baremetal_provision_state_active_and_configdrive_dict(
self):
@@ -1472,7 +1481,7 @@
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
'node_uuid', 'active',
- cleansteps=None, configdrive={'meta_data': {}},
+ cleansteps=None, deploysteps=None, configdrive={'meta_data': {}},
rescue_password=None)
def test_deploy_no_wait(self):
@@ -1674,8 +1683,8 @@
self.cmd.take_action(parsed_args)
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
- 'node_uuid', 'rescue', cleansteps=None, configdrive=None,
- rescue_password='supersecret')
+ 'node_uuid', 'rescue', cleansteps=None, deploysteps=None,
+ configdrive=None, rescue_password='supersecret')
def test_rescue_baremetal_provision_state_rescue_and_wait(self):
arglist = ['node_uuid',
@@ -1850,11 +1859,13 @@
def test_rebuild_baremetal_provision_state_active_and_configdrive(self):
arglist = ['node_uuid',
- '--config-drive', 'path/to/drive']
+ '--config-drive', 'path/to/drive',
+ '--deploy-steps', '[{"interface":"deploy"}]']
verifylist = [
('node', 'node_uuid'),
('provision_state', 'rebuild'),
('config_drive', 'path/to/drive'),
+ ('deploy_steps', '[{"interface":"deploy"}]')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1863,8 +1874,8 @@
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
'node_uuid', 'rebuild',
- cleansteps=None, configdrive='path/to/drive',
- rescue_password=None)
+ cleansteps=None, deploysteps=[{"interface": "deploy"}],
+ configdrive='path/to/drive', rescue_password=None)
def test_rebuild_no_wait(self):
arglist = ['node_uuid']
@@ -1879,7 +1890,7 @@
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
'node_uuid', 'rebuild',
- cleansteps=None, configdrive=None,
+ cleansteps=None, deploysteps=None, configdrive=None,
rescue_password=None)
self.baremetal_mock.node.wait_for_provision_state.assert_not_called()
@@ -1997,8 +2008,8 @@
self.cmd.take_action(parsed_args)
self.baremetal_mock.node.set_provision_state.assert_called_once_with(
- 'node_uuid', 'unrescue', cleansteps=None, configdrive=None,
- rescue_password=None)
+ 'node_uuid', 'unrescue', cleansteps=None, deploysteps=None,
+ configdrive=None, rescue_password=None)
def test_unrescue_baremetal_provision_state_active_and_wait(self):
arglist = ['node_uuid',
@@ -2477,6 +2488,26 @@
reset_interfaces=None,
)
+ def test_baremetal_set_no_automated_clean(self):
+ arglist = [
+ 'node_uuid',
+ '--no-automated-clean'
+ ]
+ verifylist = [
+ ('node', 'node_uuid'),
+ ('automated_clean', False)
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ self.baremetal_mock.node.update.assert_called_once_with(
+ 'node_uuid',
+ [{'path': '/automated_clean', 'value': 'False', 'op': 'add'}],
+ reset_interfaces=None,
+ )
+
def test_baremetal_set_protected(self):
arglist = [
'node_uuid',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/ironicclient/tests/unit/v1/test_node.py
new/python-ironicclient-4.6.1/ironicclient/tests/unit/v1/test_node.py
--- old/python-ironicclient-4.4.0/ironicclient/tests/unit/v1/test_node.py
2020-10-16 11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/tests/unit/v1/test_node.py
2021-03-12 18:03:56.000000000 +0100
@@ -1564,6 +1564,31 @@
]
self.assertEqual(expect, self.api.calls)
+ def test_node_set_provision_state_with_deploysteps(self):
+ deploysteps = [{"step": "upgrade", "interface": "deploy"}]
+ target_state = 'active'
+ self.mgr.set_provision_state(NODE1['uuid'], target_state,
+ deploysteps=deploysteps)
+ body = {'target': target_state, 'deploy_steps': deploysteps}
+ expect = [
+ ('PUT', '/v1/nodes/%s/states/provision' % NODE1['uuid'], {}, body),
+ ]
+ self.assertEqual(expect, self.api.calls)
+
+ def test_node_set_provision_state_with_configdrive_and_deploysteps(self):
+ deploysteps = [{"step": "upgrade", "interface": "deploy"}]
+ target_state = 'active'
+ self.mgr.set_provision_state(NODE1['uuid'], target_state,
+ configdrive={'user_data': ''},
+ deploysteps=deploysteps)
+ body = {'target': target_state,
+ 'configdrive': {'user_data': ''},
+ 'deploy_steps': deploysteps}
+ expect = [
+ ('PUT', '/v1/nodes/%s/states/provision' % NODE1['uuid'], {}, body),
+ ]
+ self.assertEqual(expect, self.api.calls)
+
def test_node_set_provision_state_with_rescue_password(self):
rescue_password = 'supersecret'
target_state = 'rescue'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/ironicclient/v1/node.py
new/python-ironicclient-4.6.1/ironicclient/v1/node.py
--- old/python-ironicclient-4.4.0/ironicclient/v1/node.py 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/ironicclient/v1/node.py 2021-03-12
18:03:56.000000000 +0100
@@ -619,7 +619,7 @@
def set_provision_state(
self, node_uuid, state, configdrive=None, cleansteps=None,
rescue_password=None, os_ironic_api_version=None,
- global_request_id=None):
+ global_request_id=None, deploysteps=None):
"""Set the provision state for the node.
:param node_uuid: The UUID or name of the node.
@@ -644,8 +644,12 @@
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.
-
- :raises: InvalidAttribute if there was an error with the clean steps
+ :param deploysteps: The deploy steps as a list of deploy-step
+ dictionaries; each dictionary should have keys 'interface', 'step',
+ 'priority', and optional key 'args'. This is optional and is
+ only valid when setting provision-state to 'active' or 'rebuild'.
+ :raises: InvalidAttribute if there was an error with the clean steps or
+ deploy steps
:returns: The status of the request
"""
@@ -671,6 +675,9 @@
elif rescue_password:
body['rescue_password'] = rescue_password
+ if deploysteps:
+ body['deploy_steps'] = deploysteps
+
return self.update(path, body, http_method='PUT',
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.4.0/lower-constraints.txt
new/python-ironicclient-4.6.1/lower-constraints.txt
--- old/python-ironicclient-4.4.0/lower-constraints.txt 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/lower-constraints.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-appdirs==1.3.0
-asn1crypto==0.23.0
-Babel==2.3.4
-cffi==1.14.0
-chardet==3.0.4
-cliff==2.8.0
-cmd2==0.8.0
-coverage==4.0
-cryptography==2.7
-ddt==1.0.1
-debtcollector==1.2.0
-decorator==3.4.0
-doc8==0.6.0
-docutils==0.11
-dogpile.cache==0.8.0
-extras==1.0.0
-fasteners==0.7.0
-fixtures==3.0.0
-flake8==2.5.5
-flake8-import-order==0.17.1
-future==0.16.0
-hacking==3.0.0
-idna==2.6
-iso8601==0.1.11
-jmespath==0.9.0
-jsonpatch==1.16
-jsonpointer==1.13
-jsonschema==3.2.0
-keystoneauth1==3.4.0
-linecache2==1.0.0
-mccabe==0.2.1
-monotonic==0.6
-mox3==0.20.0
-msgpack-python==0.4.0
-munch==2.1.0
-netaddr==0.7.18
-netifaces==0.10.4
-openstacksdk==0.18.0
-os-client-config==1.28.0
-os-service-types==1.2.0
-os-testr==1.0.0
-osc-lib==2.0.0
-oslo.concurrency==3.26.0
-oslo.config==5.2.0
-oslo.context==2.19.2
-oslo.i18n==3.15.3
-oslo.log==3.36.0
-oslo.serialization==2.18.0
-oslo.utils==3.33.0
-oslotest==3.2.0
-paramiko==2.0.0
-pbr==2.0.0
-pep8==1.5.7
-positional==1.2.1
-prettytable==0.7.1
-pyasn1==0.1.8
-pycodestyle==2.5.0
-pycparser==2.18
-pyflakes==0.8.1
-Pygments==2.2.0
-pyinotify==0.9.6
-pyOpenSSL==17.1.0
-pyparsing==2.1.0
-pyperclip==1.5.27
-python-cinderclient==3.3.0
-python-dateutil==2.5.3
-python-glanceclient==2.8.0
-python-keystoneclient==3.8.0
-python-mimeparse==1.6.0
-python-novaclient==9.1.0
-python-openstackclient==3.12.0
-python-subunit==1.0.0
-pytz==2013.6
-PyYAML==3.13
-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
-stestr==1.0.0
-stevedore==1.20.0
-tempest==17.1.0
-testrepository==0.0.20
-testtools==2.2.0
-traceback2==1.4.0
-unittest2==1.1.0
-urllib3==1.21.1
-warlock==1.2.0
-wrapt==1.7.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/python_ironicclient.egg-info/PKG-INFO
new/python-ironicclient-4.6.1/python_ironicclient.egg-info/PKG-INFO
--- old/python-ironicclient-4.4.0/python_ironicclient.egg-info/PKG-INFO
2020-10-16 11:54:01.000000000 +0200
+++ new/python-ironicclient-4.6.1/python_ironicclient.egg-info/PKG-INFO
2021-03-12 18:04:50.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: python-ironicclient
-Version: 4.4.0
+Version: 4.6.1
Summary: OpenStack Bare Metal Provisioning API Client Library
Home-page: https://docs.openstack.org/python-ironicclient/latest/
Author: OpenStack
@@ -41,6 +41,7 @@
* Documentation: https://docs.openstack.org/python-ironicclient/latest/
* Source: https://opendev.org/openstack/python-ironicclient
+ * PyPi: https://pypi.org/project/python-ironicclient
* Bugs: https://storyboard.openstack.org/#!/project/959
* Release notes:
https://docs.openstack.org/releasenotes/python-ironicclient/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/python_ironicclient.egg-info/SOURCES.txt
new/python-ironicclient-4.6.1/python_ironicclient.egg-info/SOURCES.txt
--- old/python-ironicclient-4.4.0/python_ironicclient.egg-info/SOURCES.txt
2020-10-16 11:54:01.000000000 +0200
+++ new/python-ironicclient-4.6.1/python_ironicclient.egg-info/SOURCES.txt
2021-03-12 18:04:50.000000000 +0100
@@ -5,7 +5,6 @@
ChangeLog
LICENSE
README.rst
-lower-constraints.txt
requirements.txt
setup.cfg
setup.py
@@ -70,6 +69,7 @@
ironicclient/tests/functional/osc/v1/test_baremetal_node_power_states.py
ironicclient/tests/functional/osc/v1/test_baremetal_node_provision_states.py
ironicclient/tests/functional/osc/v1/test_baremetal_port_basic.py
+ironicclient/tests/functional/osc/v1/test_baremetal_port_create.py
ironicclient/tests/functional/osc/v1/test_baremetal_portgroup_basic.py
ironicclient/tests/unit/__init__.py
ironicclient/tests/unit/test_client.py
@@ -147,6 +147,7 @@
releasenotes/notes/add-chassis_uuid-removal-possibility-5bc0bc3a7953eaa5.yaml
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-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
@@ -217,6 +218,7 @@
releasenotes/notes/manual-clean-09f6b49df7d2513f.yaml
releasenotes/notes/missing-session-cc11e62dc966b4e0.yaml
releasenotes/notes/negative-wrap-fix-4197e91b2ecfb722.yaml
+releasenotes/notes/no-automated-clean-0e437581ded44eb3.yaml
releasenotes/notes/no-osc-requirement-411f25fd10f18caa.yaml
releasenotes/notes/no-resource-attributeerror-d0cb327abab7dcc0.yaml
releasenotes/notes/node-deploy-step-061e8925dfee3918.yaml
@@ -282,6 +284,7 @@
releasenotes/notes/version-overrides-4e9ba1266a238c6a.yaml
releasenotes/notes/vif-attach-port-29a421b245e19f2b.yaml
releasenotes/notes/wait-for-prov-last-error-5f49b1c488879775.yaml
+releasenotes/notes/yaml-files-79cd8367d7a4c2f2.yaml
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/mitaka.rst
@@ -294,6 +297,7 @@
releasenotes/source/train.rst
releasenotes/source/unreleased.rst
releasenotes/source/ussuri.rst
+releasenotes/source/victoria.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
tools/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/python_ironicclient.egg-info/pbr.json
new/python-ironicclient-4.6.1/python_ironicclient.egg-info/pbr.json
--- old/python-ironicclient-4.4.0/python_ironicclient.egg-info/pbr.json
2020-10-16 11:54:01.000000000 +0200
+++ new/python-ironicclient-4.6.1/python_ironicclient.egg-info/pbr.json
2021-03-12 18:04:50.000000000 +0100
@@ -1 +1 @@
-{"git_version": "2b60460", "is_release": true}
\ No newline at end of file
+{"git_version": "59ffddd", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/python_ironicclient.egg-info/requires.txt
new/python-ironicclient-4.6.1/python_ironicclient.egg-info/requires.txt
--- old/python-ironicclient-4.4.0/python_ironicclient.egg-info/requires.txt
2020-10-16 11:54:01.000000000 +0200
+++ new/python-ironicclient-4.6.1/python_ironicclient.egg-info/requires.txt
2021-03-12 18:04:50.000000000 +0100
@@ -15,13 +15,9 @@
python-openstackclient>=3.12.0
[test]
-Pygments>=2.2.0
coverage!=4.4,>=4.0
ddt>=1.0.1
-doc8>=0.6.0
fixtures>=3.0.0
-flake8-import-order>=0.17.1
-hacking<3.1.0,>=3.0.0
oslotest>=3.2.0
python-openstackclient>=3.12.0
requests-mock>=1.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/releasenotes/notes/add-deploy-steps-arg-0b127e29c8cf976d.yaml
new/python-ironicclient-4.6.1/releasenotes/notes/add-deploy-steps-arg-0b127e29c8cf976d.yaml
---
old/python-ironicclient-4.4.0/releasenotes/notes/add-deploy-steps-arg-0b127e29c8cf976d.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-4.6.1/releasenotes/notes/add-deploy-steps-arg-0b127e29c8cf976d.yaml
2021-03-12 18:03:56.000000000 +0100
@@ -0,0 +1,15 @@
+---
+features:
+ - |
+ Adds support for providing optional deploy steps when deploying or
+ rebuilding; available with ironic-api-version 1.69 or higher. Baremetal CLI
+ is ``baremetal node <provision-state> <node> --deploy-steps
+ <deploy-steps>`` where ``<provision-state>`` is 'deploy' or 'rebuild' and
+ ``<deploy-steps>`` are deploy steps in JSON format. May be path to a file
+ containing deploy steps; OR '-', with the deploy steps being read from
+ standard input; OR a string. The value should be a list of deploy-step
+ dictionaries; each dictionary should have keys 'interface', 'step' and
+ 'priority', and optional key 'args'. When overlapping, these steps override
+ deploy template and driver steps. For more information see
+ `Deploy Steps in Node Deployment documentation
<https://docs.openstack.org/ironic/latest/admin/node-deployment.html#id3>`_.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/releasenotes/notes/no-automated-clean-0e437581ded44eb3.yaml
new/python-ironicclient-4.6.1/releasenotes/notes/no-automated-clean-0e437581ded44eb3.yaml
---
old/python-ironicclient-4.4.0/releasenotes/notes/no-automated-clean-0e437581ded44eb3.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-4.6.1/releasenotes/notes/no-automated-clean-0e437581ded44eb3.yaml
2021-03-12 18:03:56.000000000 +0100
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Following a similar change to ironic, it is now possible to set the node's
+ ``automated_clean`` to False using the new ``--no-automated-clean``
+ argument to ``baremetal node set``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/releasenotes/notes/yaml-files-79cd8367d7a4c2f2.yaml
new/python-ironicclient-4.6.1/releasenotes/notes/yaml-files-79cd8367d7a4c2f2.yaml
---
old/python-ironicclient-4.4.0/releasenotes/notes/yaml-files-79cd8367d7a4c2f2.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-ironicclient-4.6.1/releasenotes/notes/yaml-files-79cd8367d7a4c2f2.yaml
2021-03-12 18:03:56.000000000 +0100
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ YAML files are now supported for the ``--network-data``,
+ ``--deploy-steps``, ``--clean-steps`` and ``--target-raid-config``
+ arguments, as well as for the ``--steps`` argument of deploy template
+ commands.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/releasenotes/source/index.rst
new/python-ironicclient-4.6.1/releasenotes/source/index.rst
--- old/python-ironicclient-4.4.0/releasenotes/source/index.rst 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/releasenotes/source/index.rst 2021-03-12
18:03:56.000000000 +0100
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ victoria
ussuri
train
stein
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-ironicclient-4.4.0/releasenotes/source/victoria.rst
new/python-ironicclient-4.6.1/releasenotes/source/victoria.rst
--- old/python-ironicclient-4.4.0/releasenotes/source/victoria.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/python-ironicclient-4.6.1/releasenotes/source/victoria.rst
2021-03-12 18:03:56.000000000 +0100
@@ -0,0 +1,6 @@
+=============================
+Victoria Series Release Notes
+=============================
+
+.. release-notes::
+ :branch: stable/victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-ironicclient-4.4.0/test-requirements.txt
new/python-ironicclient-4.6.1/test-requirements.txt
--- old/python-ironicclient-4.4.0/test-requirements.txt 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/test-requirements.txt 2021-03-12
18:03:56.000000000 +0100
@@ -1,10 +1,7 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking>=3.0.0,<3.1.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0
-doc8>=0.6.0 # Apache-2.0
-flake8-import-order>=0.17.1 # LGPLv3
fixtures>=3.0.0 # Apache-2.0/BSD
requests-mock>=1.2.0 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0
@@ -13,5 +10,3 @@
stestr>=1.0.0 # Apache-2.0
ddt>=1.0.1 # MIT
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-ironicclient-4.4.0/tox.ini
new/python-ironicclient-4.6.1/tox.ini
--- old/python-ironicclient-4.4.0/tox.ini 2020-10-16 11:52:54.000000000
+0200
+++ new/python-ironicclient-4.6.1/tox.ini 2021-03-12 18:03:56.000000000
+0100
@@ -1,5 +1,5 @@
[tox]
-minversion = 3.2.1
+minversion = 3.9.0
envlist = py3,pep8
skipsdist = True
ignore_basepython_conflict=true
@@ -14,7 +14,7 @@
usedevelop = True
install_command = pip install {opts} {packages}
deps =
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/victoria}
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
@@ -22,12 +22,17 @@
[testenv:releasenotes]
deps =
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/victoria}
- -r{toxinidir}/requirements.txt
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
[testenv:pep8]
+deps =
+ hacking>=3.1.0,<4.0.0 # Apache-2.0
+ doc8>=0.6.0 # Apache-2.0
+ flake8-import-order>=0.17.1 # LGPLv3
+ pycodestyle>=2.0.0,<2.7.0 # MIT
+ Pygments>=2.2.0 # BSD
commands =
flake8 {posargs}
doc8 doc/source CONTRIBUTING.rst README.rst
@@ -44,7 +49,7 @@
[testenv:venv]
deps =
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/victoria}
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
@@ -58,8 +63,7 @@
[testenv:docs]
deps =
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/victoria}
- -r{toxinidir}/requirements.txt
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -W -b html doc/source doc/build/html
@@ -87,9 +91,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.4.0/zuul.d/project.yaml
new/python-ironicclient-4.6.1/zuul.d/project.yaml
--- old/python-ironicclient-4.4.0/zuul.d/project.yaml 2020-10-16
11:52:54.000000000 +0200
+++ new/python-ironicclient-4.6.1/zuul.d/project.yaml 2021-03-12
18:03:56.000000000 +0100
@@ -2,8 +2,7 @@
templates:
- check-requirements
- openstack-cover-jobs
- - openstack-lower-constraints-jobs
- - openstack-python3-victoria-jobs
+ - openstack-python3-wallaby-jobs
- openstackclient-plugin-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3