Hello community,
here is the log from the commit of package python-openstacksdk for
openSUSE:Factory checked in at 2020-03-24 22:33:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-openstacksdk (Old)
and /work/SRC/openSUSE:Factory/.python-openstacksdk.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-openstacksdk"
Tue Mar 24 22:33:24 2020 rev:12 rq:787565 version:0.36.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-openstacksdk/python-openstacksdk.changes
2019-12-04 14:19:10.746377391 +0100
+++
/work/SRC/openSUSE:Factory/.python-openstacksdk.new.3160/python-openstacksdk.changes
2020-03-24 22:33:31.049123676 +0100
@@ -1,0 +2,27 @@
+Mon Mar 23 17:21:41 UTC 2020 - Dirk Mueller <[email protected]>
+
+- add obsoletes
+
+-------------------------------------------------------------------
+Mon Mar 23 17:21:31 UTC 2020 - [email protected]
+
+- update to version 0.36.2
+ - Fix error handling in network trunks operations
+ - Handle HTTP errors in add/remove router interface calls
+ - Consistent normalization of Machine objects in the cloud layer
+ - Fix error handling on add/remove router iface calls
+ - Include "fields" to "SecurityGroup" query parameters
+ - Use has_service in functional test's require_service
+ - Update TOX/UPPER_CONSTRAINTS_FILE for stable/train
+ - Fix microversion negotiation in some bare metal node call
+ - Keep connection backrefs with weakref.proxy
+ - Update .gitreview for stable/train
+ - Fix server for later microversion
+ - baremetal node: 'error' is a failed state
+
+-------------------------------------------------------------------
+Sat Mar 14 15:37:35 UTC 2020 - Dirk Mueller <[email protected]>
+
+- switch to python 3.x only builds
+
+-------------------------------------------------------------------
Old:
----
openstacksdk-0.36.0.tar.gz
New:
----
openstacksdk-0.36.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-openstacksdk.spec ++++++
--- /var/tmp/diff_new_pack.d77gC3/_old 2020-03-24 22:33:31.857124068 +0100
+++ /var/tmp/diff_new_pack.d77gC3/_new 2020-03-24 22:33:31.873124077 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-openstacksdk
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,48 +16,19 @@
#
+# and cause timeouts due to swapping. Disabling for now
+%define with_tests 0
Name: python-openstacksdk
-Version: 0.36.0
+Version: 0.36.2
Release: 0
Summary: An SDK for building applications to work with OpenStack
License: Apache-2.0
Group: Development/Languages/Python
URL: https://launchpad.net/openstacksdk
-Source0:
https://files.pythonhosted.org/packages/source/o/openstacksdk/openstacksdk-0.36.0.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/o/openstacksdk/openstacksdk-0.36.2.tar.gz
# https://review.opendev.org/692323
Patch0: 0001-Increase-test-timeout-for-2-tests-in-TestImageProxy-.patch
BuildRequires: openstack-macros
-BuildRequires: python-devel
-BuildRequires: python2-PyYAML >= 3.12
-BuildRequires: python2-appdirs >= 1.3.0
-BuildRequires: python2-beautifulsoup4
-BuildRequires: python2-decorator >= 3.4.0
-BuildRequires: python2-deprecation
-BuildRequires: python2-dogpile.cache >= 0.6.2
-BuildRequires: python2-extras
-BuildRequires: python2-fixtures
-BuildRequires: python2-futures >= 3.0.0
-BuildRequires: python2-ipaddress >= 1.0.17
-BuildRequires: python2-jmespath >= 0.9.0
-BuildRequires: python2-jsonpatch >= 1.16
-BuildRequires: python2-jsonschema
-BuildRequires: python2-keystoneauth1 >= 3.16.0
-BuildRequires: python2-mock
-BuildRequires: python2-munch >= 2.1.0
-BuildRequires: python2-netifaces >= 0.10.4
-BuildRequires: python2-os-service-types >= 1.7.0
-BuildRequires: python2-oslo.config
-BuildRequires: python2-oslotest
-BuildRequires: python2-pbr >= 2.0.0
-BuildRequires: python2-python-subunit
-BuildRequires: python2-requests-mock
-BuildRequires: python2-requestsexceptions >= 1.2.0
-BuildRequires: python2-six >= 1.10.0
-BuildRequires: python2-statsd
-BuildRequires: python2-stestr
-BuildRequires: python2-stevedore
-BuildRequires: python2-testscenarios
-BuildRequires: python2-testtools
BuildRequires: python3-PyYAML >= 3.12
BuildRequires: python3-appdirs >= 1.3.0
BuildRequires: python3-beautifulsoup4
@@ -87,31 +58,40 @@
BuildRequires: python3-stevedore
BuildRequires: python3-testscenarios
BuildRequires: python3-testtools
-Requires: python-PyYAML >= 3.12
-Requires: python-appdirs >= 1.3.0
-Requires: python-cryptography >= 2.1
-Requires: python-decorator >= 3.4.0
-Requires: python-dogpile.cache >= 0.6.2
-Requires: python-iso8601 >= 0.1.11
-Requires: python-jmespath >= 0.9.0
-Requires: python-jsonpatch >= 1.16
-Requires: python-keystoneauth1 >= 3.16.0
-Requires: python-munch >= 2.1.0
-Requires: python-netifaces >= 0.10.4
-Requires: python-os-service-types >= 1.7.0
-Requires: python-requestsexceptions >= 1.2.0
-Requires: python-six >= 1.10.0
BuildArch: noarch
-%ifpython2
-Requires: python-futures >= 3.0.0
-Requires: python-ipaddress >= 1.0.17
-%endif
%if 0%{?suse_version}
# RDO does not package prometheus_client
-BuildRequires: python2-prometheus_client
BuildRequires: python3-prometheus_client
-Requires(post): update-alternatives
-Requires(postun): update-alternatives
+%endif
+
+%description
+The openstacksdk is a library for building applications to work
+with OpenStack clouds.
+The project aims to provide a consistent and complete set of
+interactions with OpenStack's many services, along with complete
+documentation, examples, and tools.
+
+%package -n python3-openstacksdk
+Summary: An SDK for building applications to work with OpenStack
+Group: Development/Languages/Python
+Requires: python3-PyYAML >= 3.12
+Requires: python3-appdirs >= 1.3.0
+Requires: python3-cryptography >= 2.1
+Requires: python3-decorator >= 3.4.0
+Requires: python3-dogpile.cache >= 0.6.2
+Requires: python3-iso8601 >= 0.1.11
+Requires: python3-jmespath >= 0.9.0
+Requires: python3-jsonpatch >= 1.16
+Requires: python3-keystoneauth1 >= 3.16.0
+Requires: python3-munch >= 2.1.0
+Requires: python3-netifaces >= 0.10.4
+Requires: python3-os-service-types >= 1.7.0
+Requires: python3-requestsexceptions >= 1.2.0
+Requires: python3-six >= 1.10.0
+%if 0%{?suse_version}
+Obsoletes: python2-openstacksdk < 1.0.0
+%endif
+%if 0%{?suse_version}
%if 0%{?sle_version} >= 150000 || 0%{?suse_version} > 1500
Requires: mkisofs
%else
@@ -119,25 +99,23 @@
%endif
%else
Requires: genisoimage
-# on RDO, update-alternatives is in chkconfig
-Requires(post): chkconfig
-Requires(postun): chkconfig
%endif
-%python_subpackages
-%description
+%description -n python3-openstacksdk
The openstacksdk is a library for building applications to work
with OpenStack clouds.
The project aims to provide a consistent and complete set of
interactions with OpenStack's many services, along with complete
documentation, examples, and tools.
+This package contains the Python 3.x module
+
%package -n python-openstacksdk-doc
Summary: %{summary} - Documentation
Group: Documentation/HTML
BuildRequires: python3-Sphinx
BuildRequires: python3-openstackdocstheme
-Requires: %{name} = %{version}
+Requires: python3-openstacksdk = %{version}
%description -n python-openstacksdk-doc
The openstacksdk is a library for building applications to work
@@ -150,7 +128,7 @@
applications to work with OpenStack clouds.
%prep
-%autosetup -p1 -n openstacksdk-0.36.0
+%autosetup -p1 -n openstacksdk-0.36.2
%py_req_cleanup
sed -i -e 's,coverage.*,,' test-requirements.txt || true
sed -i -e "s,'sphinx.ext.intersphinx'\,,," doc/source/conf.py
@@ -160,31 +138,26 @@
%endif
%build
-%python_build
-PBR_VERSION=0.36.0 %sphinx_build -b html doc/source doc/build/html
+%py3_build
+PBR_VERSION=0.36.2 %sphinx_build -b html doc/source doc/build/html
rm -rf doc/build/html/.{doctrees,buildinfo}
%install
-%python_install
-%python_clone -a %{buildroot}%{_bindir}/openstack-inventory
-
-%post
-%python_install_alternative openstack-inventory
-
-%postun
-%python_uninstall_alternative openstack-inventory
+%py3_install
+%if 0%{?with_tests}
%check
export OS_LOG_CAPTURE=true
export OS_TEST_TIMEOUT=30
-%python_exec -m stestr.cli run
+python3 -m stestr.cli run
+%endif
-%files %{python_files}
+%files -n python3-openstacksdk
%license LICENSE
%doc ChangeLog README.rst
-%python_alternative %{_bindir}/openstack-inventory
-%{python_sitelib}/openstack
-%{python_sitelib}/*.egg-info
+%{_bindir}/openstack-inventory
+%{python3_sitelib}/openstack
+%{python3_sitelib}/*.egg-info
%files -n python-openstacksdk-doc
%license LICENSE
++++++ openstacksdk-0.36.0.tar.gz -> openstacksdk-0.36.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/AUTHORS
new/openstacksdk-0.36.2/AUTHORS
--- old/openstacksdk-0.36.0/AUTHORS 2019-09-18 17:50:24.000000000 +0200
+++ new/openstacksdk-0.36.2/AUTHORS 2020-03-16 17:32:10.000000000 +0100
@@ -28,6 +28,7 @@
B.Haleblian <[email protected]>
Bailey Miller <[email protected]>
Bence Romsics <[email protected]>
+Bence Romsics <[email protected]>
Benoît Knecht <[email protected]>
Bernard Cafarelli <[email protected]>
Bharat Kunwar <[email protected]>
@@ -176,6 +177,7 @@
Maxime Vidori <[email protected]>
Michael Gugino <[email protected]>
Michael Johnson <[email protected]>
+Michał Dulko <[email protected]>
Miguel Angel Ajo <[email protected]>
Mike Perez <[email protected]>
Mohammed Naser <[email protected]>
@@ -211,6 +213,7 @@
Romil Gupta <[email protected]>
Rosario Di Somma <[email protected]>
Rosario Di Somma <[email protected]>
+Ruby Loo <[email protected]>
Rui Chen <[email protected]>
Ryan Brady <[email protected]>
Sahid Orentino Ferdjaoui <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/ChangeLog
new/openstacksdk-0.36.2/ChangeLog
--- old/openstacksdk-0.36.0/ChangeLog 2019-09-18 17:50:23.000000000 +0200
+++ new/openstacksdk-0.36.2/ChangeLog 2020-03-16 17:32:09.000000000 +0100
@@ -1,6 +1,26 @@
CHANGES
=======
+0.36.2
+------
+
+* Fix microversion negotiation in some bare metal node call
+* Consistent normalization of Machine objects in the cloud layer
+* Include "fields" to "SecurityGroup" query parameters
+* Fix error handling in network trunks operations
+* Fix error handling on add/remove router iface calls
+* Handle HTTP errors in add/remove router interface calls
+
+0.36.1
+------
+
+* Keep connection backrefs with weakref.proxy
+* baremetal node: 'error' is a failed state
+* Fix server for later microversion
+* Use has\_service in functional test's require\_service
+* Update TOX/UPPER\_CONSTRAINTS\_FILE for stable/train
+* Update .gitreview for stable/train
+
0.36.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/PKG-INFO
new/openstacksdk-0.36.2/PKG-INFO
--- old/openstacksdk-0.36.0/PKG-INFO 2019-09-18 17:50:24.000000000 +0200
+++ new/openstacksdk-0.36.2/PKG-INFO 2020-03-16 17:32:10.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: openstacksdk
-Version: 0.36.0
+Version: 0.36.2
Summary: An SDK for building applications to work with OpenStack
Home-page: https://docs.openstack.org/openstacksdk/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/baremetal/v1/_common.py
new/openstacksdk-0.36.2/openstack/baremetal/v1/_common.py
--- old/openstacksdk-0.36.0/openstack/baremetal/v1/_common.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/baremetal/v1/_common.py 2020-03-16
17:30:48.000000000 +0100
@@ -58,6 +58,15 @@
VIF_VERSION = '1.28'
"""API version in which the VIF operations were introduced."""
+CONFIG_DRIVE_REBUILD_VERSION = '1.35'
+"""API version in which rebuild accepts a configdrive."""
+
+RESET_INTERFACES_VERSION = '1.45'
+"""API version in which the reset_interfaces parameter was introduced."""
+
+CONFIG_DRIVE_DICT_VERSION = '1.56'
+"""API version in which configdrive can be a dictionary."""
+
class ListMixin(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/baremetal/v1/node.py
new/openstacksdk-0.36.2/openstack/baremetal/v1/node.py
--- old/openstacksdk-0.36.0/openstack/baremetal/v1/node.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/baremetal/v1/node.py 2020-03-16
17:30:49.000000000 +0100
@@ -337,11 +337,11 @@
if config_drive:
# Some config drive actions require a higher version.
if isinstance(config_drive, dict):
- version = '1.56'
+ version = _common.CONFIG_DRIVE_DICT_VERSION
elif target == 'rebuild':
- version = '1.35'
+ version = _common.CONFIG_DRIVE_REBUILD_VERSION
- version = utils.pick_microversion(session, version)
+ version = self._assert_microversion_for(session, 'commit', version)
body = {'target': target}
if config_drive:
@@ -487,7 +487,8 @@
elif not abort_on_failed_state:
return False
- if self.provision_state.endswith(' failed'):
+ if (self.provision_state.endswith(' failed') or
+ self.provision_state == 'error'):
raise exceptions.ResourceFailure(
"Node %(node)s reached failure state \"%(state)s\"; "
"the last error is %(error)s" %
@@ -522,7 +523,7 @@
else:
version = None
- version = utils.pick_microversion(session, version)
+ version = self._assert_microversion_for(session, 'commit', version)
# TODO(dtantsur): server timeout support
body = {'target': target}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/cloud/_baremetal.py
new/openstacksdk-0.36.2/openstack/cloud/_baremetal.py
--- old/openstacksdk-0.36.0/openstack/cloud/_baremetal.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/cloud/_baremetal.py 2020-03-16
17:30:49.000000000 +0100
@@ -68,7 +68,7 @@
:returns: list of ``munch.Munch`` representing machines.
"""
- return [self._normalize_machine(node._to_munch())
+ return [self._normalize_machine(node)
for node in self.baremetal.nodes()]
def get_machine(self, name_or_id):
@@ -83,8 +83,7 @@
nodes are found.
"""
try:
- return self._normalize_machine(
- self.baremetal.get_node(name_or_id)._to_munch())
+ return self._normalize_machine(self.baremetal.get_node(name_or_id))
except exc.OpenStackCloudResourceNotFound:
return None
@@ -159,7 +158,7 @@
wait=True,
timeout=timeout)
- return node._to_munch()
+ return self._normalize_machine(node)
def register_machine(self, nics, wait=False, timeout=3600,
lock_timeout=600, **kwargs):
@@ -477,7 +476,7 @@
change_list = [change['path'] for change in patch]
node = self.baremetal.update_node(machine, **attrs)
return dict(
- node=self._normalize_machine(node._to_munch()),
+ node=self._normalize_machine(node),
changes=change_list
)
@@ -573,7 +572,7 @@
node = self.baremetal.set_node_provision_state(
name_or_id, target=state, config_drive=configdrive,
wait=wait, timeout=timeout)
- return node._to_munch()
+ return self._normalize_machine(node)
def set_machine_maintenance_state(
self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/cloud/_normalize.py
new/openstacksdk-0.36.2/openstack/cloud/_normalize.py
--- old/openstacksdk-0.36.0/openstack/cloud/_normalize.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/cloud/_normalize.py 2020-03-16
17:30:49.000000000 +0100
@@ -1168,13 +1168,14 @@
def _normalize_machine(self, machine):
"""Normalize Ironic Machine"""
- machine = machine.copy()
+ if isinstance(machine, resource.Resource):
+ machine = machine._to_munch()
+ else:
+ machine = machine.copy()
# Discard noise
self._remove_novaclient_artifacts(machine)
- # TODO(mordred) Normalize this resource
-
return machine
def _normalize_roles(self, roles):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/cloud/meta.py
new/openstacksdk-0.36.2/openstack/cloud/meta.py
--- old/openstacksdk-0.36.0/openstack/cloud/meta.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/cloud/meta.py 2020-03-16
17:30:48.000000000 +0100
@@ -484,10 +484,17 @@
"""
server_vars = add_server_interfaces(cloud, server)
- flavor_id = server['flavor']['id']
- flavor_name = cloud.get_flavor_name(flavor_id)
- if flavor_name:
- server_vars['flavor']['name'] = flavor_name
+ flavor_id = server['flavor'].get('id')
+ if flavor_id:
+ # In newer nova, the flavor record can be kept around for flavors
+ # that no longer exist. The id and name are not there.
+ flavor_name = cloud.get_flavor_name(flavor_id)
+ if flavor_name:
+ server_vars['flavor']['name'] = flavor_name
+ elif 'original_name' in server['flavor']:
+ # Users might be have code still expecting name. That name is in
+ # original_name.
+ server_vars['flavor']['name'] = server['flavor']['original_name']
expand_server_security_groups(cloud, server)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/compute/v2/server_group.py
new/openstacksdk-0.36.2/openstack/compute/v2/server_group.py
--- old/openstacksdk-0.36.0/openstack/compute/v2/server_group.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/compute/v2/server_group.py
2020-03-16 17:30:48.000000000 +0100
@@ -70,7 +70,7 @@
if self.policies:
if not self.policy and isinstance(self.policies, list):
self.policy = self.policies[0]
- self.policies = None
+ self._body.clean(only={'policies'})
microversion = self._max_microversion
else:
if self.rules:
@@ -80,6 +80,6 @@
if self.policy:
if not self.policies:
self.policies = [self.policy]
- self.policy = None
+ self._body.clean(only={'policy'})
return microversion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/connection.py
new/openstacksdk-0.36.2/openstack/connection.py
--- old/openstacksdk-0.36.0/openstack/connection.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/connection.py 2020-03-16
17:30:49.000000000 +0100
@@ -177,6 +177,7 @@
:ref:`service-proxies` documentation.
"""
import warnings
+import weakref
import keystoneauth1.exceptions
import requestsexceptions
@@ -431,7 +432,7 @@
# Hide a reference to the connection on the session to help with
# backwards compatibility for folks trying to just pass
# conn.session to a Resource method's session argument.
- self.session._sdk_connection = self
+ self.session._sdk_connection = weakref.proxy(self)
return self._session
def add_service(self, service):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/network/v2/router.py
new/openstacksdk-0.36.2/openstack/network/v2/router.py
--- old/openstacksdk-0.36.0/openstack/network/v2/router.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/network/v2/router.py 2020-03-16
17:30:49.000000000 +0100
@@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+from openstack import exceptions
from openstack import resource
from openstack import utils
@@ -74,6 +75,11 @@
#: Timestamp when the router was created.
updated_at = resource.Body('updated_at')
+ def _put(self, session, url, body):
+ resp = session.put(url, json=body)
+ exceptions.raise_from_response(resp)
+ return resp
+
def add_interface(self, session, **body):
"""Add an internal interface to a logical router.
@@ -82,9 +88,11 @@
:param dict body: The body requested to be updated on the router
:returns: The body of the response as a dictionary.
+
+ :raises: :class:`~openstack.exceptions.SDKException` on error.
"""
url = utils.urljoin(self.base_path, self.id, 'add_router_interface')
- resp = session.put(url, json=body)
+ resp = self._put(session, url, body)
return resp.json()
def remove_interface(self, session, **body):
@@ -95,9 +103,11 @@
:param dict body: The body requested to be updated on the router
:returns: The body of the response as a dictionary.
+
+ :raises: :class:`~openstack.exceptions.SDKException` on error.
"""
url = utils.urljoin(self.base_path, self.id, 'remove_router_interface')
- resp = session.put(url, json=body)
+ resp = self._put(session, url, body)
return resp.json()
def add_gateway(self, session, **body):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/network/v2/security_group.py
new/openstacksdk-0.36.2/openstack/network/v2/security_group.py
--- old/openstacksdk-0.36.0/openstack/network/v2/security_group.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/network/v2/security_group.py
2020-03-16 17:30:49.000000000 +0100
@@ -26,8 +26,8 @@
allow_list = True
_query_mapping = resource.QueryParameters(
- 'description', 'name', 'project_id', 'tenant_id', 'revision_number',
- 'sort_dir', 'sort_key',
+ 'description', 'fields', 'name', 'project_id', 'tenant_id',
+ 'revision_number', 'sort_dir', 'sort_key',
**resource.TagMixin._tag_query_parameters
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/network/v2/trunk.py
new/openstacksdk-0.36.2/openstack/network/v2/trunk.py
--- old/openstacksdk-0.36.0/openstack/network/v2/trunk.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/network/v2/trunk.py 2020-03-16
17:30:48.000000000 +0100
@@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+from openstack import exceptions
from openstack import resource
from openstack import utils
@@ -54,18 +55,21 @@
def add_subports(self, session, subports):
url = utils.urljoin('/trunks', self.id, 'add_subports')
- session.put(url, json={'sub_ports': subports})
- self._body.attributes.update({'sub_ports': subports})
+ resp = session.put(url, json={'sub_ports': subports})
+ exceptions.raise_from_response(resp)
+ self._body.attributes.update(resp.json())
return self
def delete_subports(self, session, subports):
url = utils.urljoin('/trunks', self.id, 'remove_subports')
- session.put(url, json={'sub_ports': subports})
- self._body.attributes.update({'sub_ports': subports})
+ resp = session.put(url, json={'sub_ports': subports})
+ exceptions.raise_from_response(resp)
+ self._body.attributes.update(resp.json())
return self
def get_subports(self, session):
url = utils.urljoin('/trunks', self.id, 'get_subports')
resp = session.get(url)
+ exceptions.raise_from_response(resp)
self._body.attributes.update(resp.json())
return resp.json()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstack/resource.py
new/openstacksdk-0.36.2/openstack/resource.py
--- old/openstacksdk-0.36.0/openstack/resource.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/resource.py 2020-03-16
17:30:49.000000000 +0100
@@ -1215,7 +1215,10 @@
raise exceptions.NotSupported(message)
actual = self._get_microversion_for(session, action)
- if actual is None:
+
+ if expected is None:
+ return actual
+ elif actual is None:
message = ("API version %s is required, but the default "
"version will be used.") % expected
_raise(message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/functional/baremetal/test_baremetal_node.py
new/openstacksdk-0.36.2/openstack/tests/functional/baremetal/test_baremetal_node.py
---
old/openstacksdk-0.36.0/openstack/tests/functional/baremetal/test_baremetal_node.py
2019-09-18 17:49:02.000000000 +0200
+++
new/openstacksdk-0.36.2/openstack/tests/functional/baremetal/test_baremetal_node.py
2020-03-16 17:30:49.000000000 +0100
@@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import random
import uuid
from openstack import exceptions
@@ -154,6 +155,24 @@
wait=True)
self.assertEqual(node.provision_state, 'available')
+ def test_node_create_in_enroll_provide_by_name(self):
+ name = 'node-%d' % random.randint(0, 1000)
+ node = self.create_node(provision_state='enroll', name=name)
+ self.node_id = node.id
+
+ self.assertEqual(node.driver, 'fake-hardware')
+ self.assertEqual(node.provision_state, 'enroll')
+ self.assertIsNone(node.power_state)
+ self.assertFalse(node.is_maintenance)
+
+ node = self.conn.baremetal.set_node_provision_state(name, 'manage',
+ wait=True)
+ self.assertEqual(node.provision_state, 'manageable')
+
+ node = self.conn.baremetal.set_node_provision_state(name, 'provide',
+ wait=True)
+ self.assertEqual(node.provision_state, 'available')
+
def test_node_power_state(self):
node = self.create_node()
self.assertIsNone(node.power_state)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/functional/base.py
new/openstacksdk-0.36.2/openstack/tests/functional/base.py
--- old/openstacksdk-0.36.0/openstack/tests/functional/base.py 2019-09-18
17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/functional/base.py 2020-03-16
17:30:49.000000000 +0100
@@ -14,7 +14,6 @@
import openstack.config
from keystoneauth1 import discover
-from keystoneauth1 import exceptions as _exceptions
from openstack import connection
from openstack.tests import base
@@ -114,8 +113,6 @@
self.assertIsNone(result)
self.addCleanup(cleanup)
- # TODO(shade) Replace this with call to conn.has_service when we've merged
- # the shade methods into Connection.
def require_service(self, service_type, min_microversion=None, **kwargs):
"""Method to check whether a service exists
@@ -128,16 +125,16 @@
:returns: True if the service exists, otherwise False.
"""
- try:
- data = self.conn.session.get_endpoint_data(
- service_type=service_type, **kwargs)
- except _exceptions.EndpointNotFound:
+ if not self.conn.has_service(service_type):
self.skipTest('Service {service_type} not found in cloud'.format(
service_type=service_type))
if not min_microversion:
return
+ data = self.conn.session.get_endpoint_data(
+ service_type=service_type, **kwargs)
+
if not (data.min_microversion
and data.max_microversion
and discover.version_between(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/functional/cloud/test_inventory.py
new/openstacksdk-0.36.2/openstack/tests/functional/cloud/test_inventory.py
--- old/openstacksdk-0.36.0/openstack/tests/functional/cloud/test_inventory.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/functional/cloud/test_inventory.py
2020-03-16 17:30:49.000000000 +0100
@@ -49,12 +49,15 @@
def _test_host_content(self, host):
self.assertEqual(host['image']['id'], self.image.id)
self.assertNotIn('links', host['image'])
- self.assertEqual(host['flavor']['id'], self.flavor.id)
+ # TODO(mordred) Add this back wnen ksa releases
+ # self.assertNotIn('id', host['flavor'])
self.assertNotIn('links', host['flavor'])
self.assertNotIn('links', host)
self.assertIsInstance(host['volumes'], list)
self.assertIsInstance(host['metadata'], dict)
self.assertIn('interface_ip', host)
+ # TODO(mordred) Add this back wnen ksa releases
+ # self.assertIn('ram', host['flavor'])
def _test_expanded_host_content(self, host):
self.assertEqual(host['image']['name'], self.image.name)
@@ -81,9 +84,12 @@
self.assertEqual(host['image']['id'], self.image.id)
self.assertNotIn('links', host['image'])
self.assertNotIn('name', host['name'])
- self.assertEqual(host['flavor']['id'], self.flavor.id)
+ # TODO(mordred) Add this back wnen ksa releases
+ # self.assertNotIn('id', host['flavor'])
self.assertNotIn('links', host['flavor'])
self.assertNotIn('name', host['flavor'])
+ # TODO(mordred) Add this back wnen ksa releases
+ # self.assertIn('ram', host['flavor'])
host_found = False
for host in self.inventory.list_hosts(expand=False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/unit/baremetal/v1/test_node.py
new/openstacksdk-0.36.2/openstack/tests/unit/baremetal/v1/test_node.py
--- old/openstacksdk-0.36.0/openstack/tests/unit/baremetal/v1/test_node.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/unit/baremetal/v1/test_node.py
2020-03-16 17:30:49.000000000 +0100
@@ -183,6 +183,18 @@
self.node.wait_for_provision_state,
self.session, 'manageable')
+ def test_failure_error(self, mock_fetch):
+ def _get_side_effect(_self, session):
+ self.node.provision_state = 'error'
+ self.assertIs(session, self.session)
+
+ mock_fetch.side_effect = _get_side_effect
+
+ self.assertRaisesRegex(exceptions.ResourceFailure,
+ 'failure state "error"',
+ self.node.wait_for_provision_state,
+ self.session, 'manageable')
+
def test_enroll_as_failure(self, mock_fetch):
def _get_side_effect(_self, session):
self.node.provision_state = 'enroll'
@@ -214,6 +226,11 @@
abort_on_failed_state=False)
+def _fake_assert(self, session, action, expected, error_message=None):
+ return expected
+
+
[email protected](node.Node, '_assert_microversion_for', _fake_assert)
@mock.patch.object(node.Node, 'fetch', lambda self, session: self)
@mock.patch.object(exceptions, 'raise_from_response', mock.Mock())
class TestNodeSetProvisionState(base.TestCase):
@@ -538,6 +555,7 @@
mock_fetch.assert_called_with(self.node, self.session)
[email protected](node.Node, '_assert_microversion_for', _fake_assert)
@mock.patch.object(exceptions, 'raise_from_response', mock.Mock())
class TestNodeSetPowerState(base.TestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/unit/cloud/test_baremetal_node.py
new/openstacksdk-0.36.2/openstack/tests/unit/cloud/test_baremetal_node.py
--- old/openstacksdk-0.36.0/openstack/tests/unit/cloud/test_baremetal_node.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/unit/cloud/test_baremetal_node.py
2020-03-16 17:30:48.000000000 +0100
@@ -213,8 +213,9 @@
json=self.fake_baremetal_node,
validate=dict(json=test_patch)),
])
- self.cloud.patch_machine(
+ result = self.cloud.patch_machine(
self.fake_baremetal_node['uuid'], test_patch)
+ self.assertEqual(self.fake_baremetal_node['uuid'], result['uuid'])
self.assert_calls()
@@ -759,10 +760,11 @@
append=[self.fake_baremetal_node['uuid']]),
json=self.fake_baremetal_node),
])
- self.cloud.node_set_provision_state(
+ result = self.cloud.node_set_provision_state(
self.fake_baremetal_node['uuid'],
'active',
configdrive='http://host/file')
+ self.assertEqual(self.fake_baremetal_node['uuid'], result['uuid'])
self.assert_calls()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_router.py
new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_router.py
--- old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_router.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_router.py
2020-03-16 17:30:49.000000000 +0100
@@ -11,6 +11,9 @@
# under the License.
import mock
+import testtools
+
+from openstack import exceptions
from openstack.tests.unit import base
from openstack.network.v2 import router
@@ -118,6 +121,7 @@
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "2"}
response.json = mock.Mock(return_value=response.body)
+ response.status_code = 200
sess = mock.Mock()
sess.put = mock.Mock(return_value=response)
body = {"subnet_id": "3"}
@@ -133,6 +137,7 @@
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "3"}
response.json = mock.Mock(return_value=response.body)
+ response.status_code = 200
sess = mock.Mock()
sess.put = mock.Mock(return_value=response)
@@ -149,6 +154,7 @@
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "2"}
response.json = mock.Mock(return_value=response.body)
+ response.status_code = 200
sess = mock.Mock()
sess.put = mock.Mock(return_value=response)
body = {"subnet_id": "3"}
@@ -164,6 +170,7 @@
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "3"}
response.json = mock.Mock(return_value=response.body)
+ response.status_code = 200
sess = mock.Mock()
sess.put = mock.Mock(return_value=response)
body = {"network_id": 3, "enable_snat": True}
@@ -173,6 +180,39 @@
sess.put.assert_called_with(url,
json=body)
+ def test_add_interface_4xx(self):
+ # Neutron may return 4xx, we have to raise if that happens
+ sot = router.Router(**EXAMPLE)
+ response = mock.Mock()
+ msg = '.*borked'
+ response.body = {'NeutronError': {'message': msg}}
+ response.json = mock.Mock(return_value=response.body)
+ response.ok = False
+ response.status_code = 409
+ response.headers = {'content-type': 'application/json'}
+ sess = mock.Mock()
+ sess.put = mock.Mock(return_value=response)
+ body = {'subnet_id': '3'}
+ with testtools.ExpectedException(exceptions.ConflictException, msg):
+ sot.add_interface(sess, **body)
+
+ def test_remove_interface_4xx(self):
+ # Neutron may return 4xx for example if a router interface has
+ # extra routes referring to it as a nexthop
+ sot = router.Router(**EXAMPLE)
+ response = mock.Mock()
+ msg = '.*borked'
+ response.body = {'NeutronError': {'message': msg}}
+ response.json = mock.Mock(return_value=response.body)
+ response.ok = False
+ response.status_code = 409
+ response.headers = {'content-type': 'application/json'}
+ sess = mock.Mock()
+ sess.put = mock.Mock(return_value=response)
+ body = {'subnet_id': '3'}
+ with testtools.ExpectedException(exceptions.ConflictException, msg):
+ sot.remove_interface(sess, **body)
+
def test_add_router_gateway(self):
# Add gateway to a router
sot = router.Router(**EXAMPLE_WITH_OPTIONAL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_security_group.py
new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_security_group.py
---
old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_security_group.py
2019-09-18 17:49:02.000000000 +0200
+++
new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_security_group.py
2020-03-16 17:30:49.000000000 +0100
@@ -78,6 +78,7 @@
self.assertDictEqual({'any_tags': 'tags-any',
'description': 'description',
+ 'fields': 'fields',
'limit': 'limit',
'marker': 'marker',
'name': 'name',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_trunk.py
new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_trunk.py
--- old/openstacksdk-0.36.0/openstack/tests/unit/network/v2/test_trunk.py
2019-09-18 17:49:02.000000000 +0200
+++ new/openstacksdk-0.36.2/openstack/tests/unit/network/v2/test_trunk.py
2020-03-16 17:30:48.000000000 +0100
@@ -10,9 +10,12 @@
# License for the specific language governing permissions and limitations
# under the License.
-from openstack.tests.unit import base
+import mock
+import testtools
+from openstack import exceptions
from openstack.network.v2 import trunk
+from openstack.tests.unit import base
EXAMPLE = {
'id': 'IDENTIFIER',
@@ -31,7 +34,7 @@
}
-class TestQoSPolicy(base.TestCase):
+class TestTrunk(base.TestCase):
def test_basic(self):
sot = trunk.Trunk()
@@ -54,3 +57,37 @@
self.assertEqual(EXAMPLE['port_id'], sot.port_id)
self.assertEqual(EXAMPLE['status'], sot.status)
self.assertEqual(EXAMPLE['sub_ports'], sot.sub_ports)
+
+ def test_add_subports_4xx(self):
+ # Neutron may return 4xx for example if a port does not exist
+ sot = trunk.Trunk(**EXAMPLE)
+ response = mock.Mock()
+ msg = '.*borked'
+ response.body = {'NeutronError': {'message': msg}}
+ response.json = mock.Mock(return_value=response.body)
+ response.ok = False
+ response.status_code = 404
+ response.headers = {'content-type': 'application/json'}
+ sess = mock.Mock()
+ sess.put = mock.Mock(return_value=response)
+ subports = [{'port_id': 'abc', 'segmentation_id': '123',
+ 'segmentation_type': 'vlan'}]
+ with testtools.ExpectedException(exceptions.ResourceNotFound, msg):
+ sot.add_subports(sess, subports)
+
+ def test_delete_subports_4xx(self):
+ # Neutron may return 4xx for example if a port does not exist
+ sot = trunk.Trunk(**EXAMPLE)
+ response = mock.Mock()
+ msg = '.*borked'
+ response.body = {'NeutronError': {'message': msg}}
+ response.json = mock.Mock(return_value=response.body)
+ response.ok = False
+ response.status_code = 404
+ response.headers = {'content-type': 'application/json'}
+ sess = mock.Mock()
+ sess.put = mock.Mock(return_value=response)
+ subports = [{'port_id': 'abc', 'segmentation_id': '123',
+ 'segmentation_type': 'vlan'}]
+ with testtools.ExpectedException(exceptions.ResourceNotFound, msg):
+ sot.delete_subports(sess, subports)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstacksdk.egg-info/PKG-INFO
new/openstacksdk-0.36.2/openstacksdk.egg-info/PKG-INFO
--- old/openstacksdk-0.36.0/openstacksdk.egg-info/PKG-INFO 2019-09-18
17:50:24.000000000 +0200
+++ new/openstacksdk-0.36.2/openstacksdk.egg-info/PKG-INFO 2020-03-16
17:32:10.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: openstacksdk
-Version: 0.36.0
+Version: 0.36.2
Summary: An SDK for building applications to work with OpenStack
Home-page: https://docs.openstack.org/openstacksdk/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/openstacksdk.egg-info/SOURCES.txt
new/openstacksdk-0.36.2/openstacksdk.egg-info/SOURCES.txt
--- old/openstacksdk-0.36.0/openstacksdk.egg-info/SOURCES.txt 2019-09-18
17:50:24.000000000 +0200
+++ new/openstacksdk-0.36.2/openstacksdk.egg-info/SOURCES.txt 2020-03-16
17:32:10.000000000 +0100
@@ -1256,6 +1256,7 @@
releasenotes/notes/fix-dns-return-c810d5e6736322f1.yaml
releasenotes/notes/fix-endpoint-override-ac41baeec9549ab3.yaml
releasenotes/notes/fix-floating-ip-private-matching-84e369eee380a185.yaml
+releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
releasenotes/notes/fix-image-task-ae79502dd5c7ecba.yaml
releasenotes/notes/fix-list-networks-a592725df64c306e.yaml
releasenotes/notes/fix-missing-futures-a0617a1c1ce6e659.yaml
@@ -1322,12 +1323,14 @@
releasenotes/notes/node-set-provision-state-3472cbd81c47458f.yaml
releasenotes/notes/norm_role_assignments-a13f41768e62d40c.yaml
releasenotes/notes/normalize-images-1331bea7bfffa36a.yaml
+releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
releasenotes/notes/nova-flavor-to-rest-0a5757e35714a690.yaml
releasenotes/notes/nova-old-microversion-5e4b8e239ba44096.yaml
releasenotes/notes/object-checksum-generation-ea1c1e47d2290054.yaml
releasenotes/notes/object-chunked-data-ee619b7d4759b8d2.yaml
releasenotes/notes/object-search-a5f5ec4b2df3e045.yaml
releasenotes/notes/option-precedence-1fecab21fdfb2c33.yaml
+releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
releasenotes/notes/remote-profile-100218d08b25019d.yaml
releasenotes/notes/remove-auto-container-527f1807605b42c0.yaml
releasenotes/notes/remove-block-store-details-classes-158ab1f46655320a.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/openstacksdk.egg-info/pbr.json
new/openstacksdk-0.36.2/openstacksdk.egg-info/pbr.json
--- old/openstacksdk-0.36.0/openstacksdk.egg-info/pbr.json 2019-09-18
17:50:24.000000000 +0200
+++ new/openstacksdk-0.36.2/openstacksdk.egg-info/pbr.json 2020-03-16
17:32:10.000000000 +0100
@@ -1 +1 @@
-{"git_version": "8b85e8c9", "is_release": true}
\ No newline at end of file
+{"git_version": "211bdc68", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
new/openstacksdk-0.36.2/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
---
old/openstacksdk-0.36.0/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/openstacksdk-0.36.2/releasenotes/notes/fix-for-microversion-70cd686b6d6e3fd0.yaml
2020-03-16 17:30:48.000000000 +0100
@@ -0,0 +1,14 @@
+---
+fixes:
+ - |
+ In April 2019 the microversion support for the Server resource was
increased
+ to ``2.72``. Unfortunately, due to an issue with version discovery
documents,
+ this increase never actually became effective. A fix is coming in
``3.17.2`` of
+ ``keystoneauth`` which will unbreak version discovery and cause the
microversion
+ support to start working.
+upgrade:
+ - |
+ Due to the fix in microversion support in `keystoneauth`, Servers will be
+ fetched using microversion ``2.72``. Code that assumes the existence of a
+ ``flavor.id`` field in the Server record should be removed, as it does not
exist
+ in new microversions and cannot be filled in behind the scenes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
new/openstacksdk-0.36.2/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
---
old/openstacksdk-0.36.0/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/openstacksdk-0.36.2/releasenotes/notes/normalize-machine-290d9f2a3b3a7ef0.yaml
2020-03-16 17:30:48.000000000 +0100
@@ -0,0 +1,4 @@
+---
+fixes:
+ - |
+ Fixes normalization of bare metal machines in the ``patch_machine`` call.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openstacksdk-0.36.0/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
new/openstacksdk-0.36.2/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
---
old/openstacksdk-0.36.0/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/openstacksdk-0.36.2/releasenotes/notes/provision-state-negotiation-0155b4d0e932054c.yaml
2020-03-16 17:30:49.000000000 +0100
@@ -0,0 +1,11 @@
+---
+fixes:
+ - |
+ Fixes API version negotiation in the following bare metal node calls:
+
+ * ``set_node_provision_state``
+ * ``set_node_power_state``
+
+ Previously an unexpectingly low version could be negotiated, breaking
+ certain features, for example calling the ``provide`` provisioning action
+ with a node name.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openstacksdk-0.36.0/tox.ini
new/openstacksdk-0.36.2/tox.ini
--- old/openstacksdk-0.36.0/tox.ini 2019-09-18 17:49:08.000000000 +0200
+++ new/openstacksdk-0.36.2/tox.ini 2020-03-16 17:30:49.000000000 +0100
@@ -18,7 +18,7 @@
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/train}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
commands = stestr run {posargs}
@@ -78,14 +78,14 @@
[testenv:docs]
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/train}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -d doc/build/doctrees -b html doc/source/
doc/build/html
[testenv:releasenotes]
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
+
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/train}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html