Hello community,
here is the log from the commit of package python-keystoneclient for
openSUSE:Factory checked in at 2018-09-07 15:37:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keystoneclient (Old)
and /work/SRC/openSUSE:Factory/.python-keystoneclient.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keystoneclient"
Fri Sep 7 15:37:38 2018 rev:29 rq:633075 version:3.17.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-keystoneclient/python-keystoneclient.changes
2018-03-19 23:34:47.953099938 +0100
+++
/work/SRC/openSUSE:Factory/.python-keystoneclient.new/python-keystoneclient.changes
2018-09-07 15:37:41.654646301 +0200
@@ -1,0 +2,17 @@
+Mon Sep 3 08:53:21 UTC 2018 - [email protected]
+
+- update to version 3.17.0
+ - Add support for registered limits
+ - Add support for project-specific limits
+ - fix tox python3 overrides
+ - Update reno for stable/queens
+ - Update links in README
+ - Trivial: Update pypi url to new url
+ - Fix python3 test compat
+ - fix a typo in docstring
+ - Remove PyPI downloads
+ - Override find function in project
+ - Updated from global requirements
+ - add lower-constraints job
+
+-------------------------------------------------------------------
Old:
----
python-keystoneclient-3.15.0.tar.gz
New:
----
python-keystoneclient-3.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-keystoneclient.spec ++++++
--- /var/tmp/diff_new_pack.esiyCB/_old 2018-09-07 15:37:42.050645875 +0200
+++ /var/tmp/diff_new_pack.esiyCB/_new 2018-09-07 15:37:42.050645875 +0200
@@ -17,50 +17,50 @@
Name: python-keystoneclient
-Version: 3.15.0
+Version: 3.17.0
Release: 0
Summary: Client library for OpenStack Identity API
License: Apache-2.0
Group: Development/Languages/Python
-Url: https://launchpad.net/python-keystoneclient
-Source0:
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-3.15.0.tar.gz
+URL: https://launchpad.net/python-keystoneclient
+Source0:
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-3.17.0.tar.gz
BuildRequires: openssl
BuildRequires: openstack-macros
BuildRequires: python-devel
BuildRequires: python2-debtcollector >= 1.2.0
-BuildRequires: python2-keystoneauth1 >= 3.3.0
-BuildRequires: python2-lxml >= 3.4.1
-BuildRequires: python2-mock >= 2.0.0
-BuildRequires: python2-oslo.config >= 5.1.0
+BuildRequires: python2-keystoneauth1 >= 3.4.0
+BuildRequires: python2-lxml
+BuildRequires: python2-mock
+BuildRequires: python2-oslo.config >= 5.2.0
BuildRequires: python2-oslo.i18n >= 3.15.3
BuildRequires: python2-oslo.serialization >= 2.18.0
BuildRequires: python2-oslo.utils >= 3.33.0
-BuildRequires: python2-oslotest >= 3.2.0
+BuildRequires: python2-oslotest
BuildRequires: python2-pbr >= 2.0.0
-BuildRequires: python2-requests-mock >= 1.1.0
+BuildRequires: python2-requests-mock
BuildRequires: python2-six >= 1.10.0
-BuildRequires: python2-testrepository >= 0.0.18
-BuildRequires: python2-testresources >= 2.0.0
-BuildRequires: python2-testscenarios >= 0.4
+BuildRequires: python2-testrepository
+BuildRequires: python2-testresources
+BuildRequires: python2-testscenarios
BuildRequires: python3-debtcollector >= 1.2.0
BuildRequires: python3-devel
-BuildRequires: python3-keystoneauth1 >= 3.3.0
-BuildRequires: python3-lxml >= 3.4.1
-BuildRequires: python3-mock >= 2.0.0
-BuildRequires: python3-oslo.config >= 5.1.0
+BuildRequires: python3-keystoneauth1 >= 3.4.0
+BuildRequires: python3-lxml
+BuildRequires: python3-mock
+BuildRequires: python3-oslo.config >= 5.2.0
BuildRequires: python3-oslo.i18n >= 3.15.3
BuildRequires: python3-oslo.serialization >= 2.18.0
BuildRequires: python3-oslo.utils >= 3.33.0
-BuildRequires: python3-oslotest >= 3.2.0
+BuildRequires: python3-oslotest
BuildRequires: python3-pbr >= 2.0.0
-BuildRequires: python3-requests-mock >= 1.1.0
+BuildRequires: python3-requests-mock
BuildRequires: python3-six >= 1.10.0
-BuildRequires: python3-testrepository >= 0.0.18
-BuildRequires: python3-testresources >= 2.0.0
-BuildRequires: python3-testscenarios >= 0.4
+BuildRequires: python3-testrepository
+BuildRequires: python3-testresources
+BuildRequires: python3-testscenarios
Requires: python-debtcollector >= 1.2.0
-Requires: python-keystoneauth1 >= 3.3.0
-Requires: python-oslo.config >= 5.1.0
+Requires: python-keystoneauth1 >= 3.4.0
+Requires: python-oslo.config >= 5.2.0
Requires: python-oslo.i18n >= 3.15.3
Requires: python-oslo.serialization >= 2.18.0
Requires: python-oslo.utils >= 3.33.0
@@ -77,14 +77,14 @@
Summary: Documentation for OpenStack Identity API Client
Group: Documentation/HTML
BuildRequires: python-Sphinx
-BuildRequires: python-openstackdocstheme >= 1.18.1
+BuildRequires: python-openstackdocstheme
%description -n python-keystoneclient-doc
Documentation for the client library for interacting with Openstack
Identity API.
%prep
-%autosetup -p1 -n python-keystoneclient-3.15.0
+%autosetup -p1 -n python-keystoneclient-3.17.0
%py_req_cleanup
# disable intersphinx - no network access during build
echo "intersphinx_mapping = {}" >> doc/source/conf.py
++++++ _service ++++++
--- /var/tmp/diff_new_pack.esiyCB/_old 2018-09-07 15:37:42.074645850 +0200
+++ /var/tmp/diff_new_pack.esiyCB/_new 2018-09-07 15:37:42.074645850 +0200
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
+ <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/python-keystoneclient/python-keystoneclient.spec.j2</param>
<param name="output-name">python-keystoneclient.spec</param>
- <param
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/requirements.txt</param>
+ <param
name="requirements">https://raw.githubusercontent.com/openstack/python-keystoneclient/stable/rocky/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,python-keystoneclient</param>
</service>
++++++ python-keystoneclient-3.15.0.tar.gz ->
python-keystoneclient-3.17.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/.zuul.yaml
new/python-keystoneclient-3.17.0/.zuul.yaml
--- old/python-keystoneclient-3.15.0/.zuul.yaml 1970-01-01 01:00:00.000000000
+0100
+++ new/python-keystoneclient-3.17.0/.zuul.yaml 2018-06-21 01:15:51.000000000
+0200
@@ -0,0 +1,7 @@
+- project:
+ check:
+ jobs:
+ - openstack-tox-lower-constraints
+ gate:
+ jobs:
+ - openstack-tox-lower-constraints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/AUTHORS
new/python-keystoneclient-3.17.0/AUTHORS
--- old/python-keystoneclient-3.15.0/AUTHORS 2018-01-24 21:10:42.000000000
+0100
+++ new/python-keystoneclient-3.17.0/AUTHORS 2018-06-21 01:17:42.000000000
+0200
@@ -36,6 +36,7 @@
Chang Bo Guo <[email protected]>
ChangBo Guo(gcb) <[email protected]>
Charles V Bock <[email protected]>
+Chen <[email protected]>
Chmouel Boudjnah <[email protected]>
Christian Berendt <[email protected]>
Christian Schwede <[email protected]>
@@ -208,6 +209,7 @@
Tom Cocozzello <[email protected]>
Tom Fifield <[email protected]>
Tony Breeds <[email protected]>
+Tovin Seven <[email protected]>
Trevor McKay <[email protected]>
Tristan Cacqueray <[email protected]>
Van Hung Pham <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/ChangeLog
new/python-keystoneclient-3.17.0/ChangeLog
--- old/python-keystoneclient-3.15.0/ChangeLog 2018-01-24 21:10:42.000000000
+0100
+++ new/python-keystoneclient-3.17.0/ChangeLog 2018-06-21 01:17:42.000000000
+0200
@@ -1,6 +1,28 @@
CHANGES
=======
+3.17.0
+------
+
+* Add support for project-specific limits
+* Add support for registered limits
+* Fix python3 test compat
+* fix tox python3 overrides
+* Remove PyPI downloads
+* fix a typo in docstring
+* Trivial: Update pypi url to new url
+
+3.16.0
+------
+
+* add lower-constraints job
+* Updated from global requirements
+* Updated from global requirements
+* Update links in README
+* Updated from global requirements
+* Override find function in project
+* Update reno for stable/queens
+
3.15.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/PKG-INFO
new/python-keystoneclient-3.17.0/PKG-INFO
--- old/python-keystoneclient-3.15.0/PKG-INFO 2018-01-24 21:10:43.000000000
+0100
+++ new/python-keystoneclient-3.17.0/PKG-INFO 2018-06-21 01:17:43.000000000
+0200
@@ -1,18 +1,17 @@
Metadata-Version: 1.1
Name: python-keystoneclient
-Version: 3.15.0
+Version: 3.17.0
Summary: Client Library for OpenStack Identity
Home-page: https://docs.openstack.org/python-keystoneclient/latest/
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description-Content-Type: UNKNOWN
Description: ========================
Team and repository tags
========================
- .. image::
https://governance.openstack.org/badges/python-keystoneclient.svg
- :target: https://governance.openstack.org/reference/tags/index.html
+ .. image::
https://governance.openstack.org/tc/badges/python-keystoneclient.svg
+ :target:
https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -20,13 +19,9 @@
========================================================
.. image:: https://img.shields.io/pypi/v/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
+ :target: https://pypi.org/project/python-keystoneclient/
:alt: Latest Version
- .. image:: https://img.shields.io/pypi/dm/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
- :alt: Downloads
-
This is a client for the OpenStack Identity API, implemented by the
Keystone
team; it contains a Python API (the ``keystoneclient`` module) for
OpenStack's Identity Service. For command line interface support, use
@@ -41,13 +36,13 @@
* `Specs`_
* `How to Contribute`_
- .. _PyPi: https://pypi.python.org/pypi/python-keystoneclient
+ .. _PyPi: https://pypi.org/project/python-keystoneclient
.. _Online Documentation:
https://docs.openstack.org/python-keystoneclient/latest/
.. _Launchpad project: https://launchpad.net/python-keystoneclient
.. _Blueprints: https://blueprints.launchpad.net/python-keystoneclient
.. _Bugs: https://bugs.launchpad.net/python-keystoneclient
.. _Source:
https://git.openstack.org/cgit/openstack/python-keystoneclient
- .. _OpenStackClient:
https://pypi.python.org/pypi/python-openstackclient
+ .. _OpenStackClient: https://pypi.org/project/python-openstackclient
.. _How to Contribute:
https://docs.openstack.org/infra/manual/developers.html
.. _Specs: https://specs.openstack.org/openstack/keystone-specs/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/README.rst
new/python-keystoneclient-3.17.0/README.rst
--- old/python-keystoneclient-3.15.0/README.rst 2018-01-24 21:08:40.000000000
+0100
+++ new/python-keystoneclient-3.17.0/README.rst 2018-06-21 01:15:51.000000000
+0200
@@ -2,8 +2,8 @@
Team and repository tags
========================
-.. image:: https://governance.openstack.org/badges/python-keystoneclient.svg
- :target: https://governance.openstack.org/reference/tags/index.html
+.. image:: https://governance.openstack.org/tc/badges/python-keystoneclient.svg
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -11,13 +11,9 @@
========================================================
.. image:: https://img.shields.io/pypi/v/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
+ :target: https://pypi.org/project/python-keystoneclient/
:alt: Latest Version
-.. image:: https://img.shields.io/pypi/dm/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
- :alt: Downloads
-
This is a client for the OpenStack Identity API, implemented by the Keystone
team; it contains a Python API (the ``keystoneclient`` module) for
OpenStack's Identity Service. For command line interface support, use
@@ -32,13 +28,13 @@
* `Specs`_
* `How to Contribute`_
-.. _PyPi: https://pypi.python.org/pypi/python-keystoneclient
+.. _PyPi: https://pypi.org/project/python-keystoneclient
.. _Online Documentation:
https://docs.openstack.org/python-keystoneclient/latest/
.. _Launchpad project: https://launchpad.net/python-keystoneclient
.. _Blueprints: https://blueprints.launchpad.net/python-keystoneclient
.. _Bugs: https://bugs.launchpad.net/python-keystoneclient
.. _Source: https://git.openstack.org/cgit/openstack/python-keystoneclient
-.. _OpenStackClient: https://pypi.python.org/pypi/python-openstackclient
+.. _OpenStackClient: https://pypi.org/project/python-openstackclient
.. _How to Contribute: https://docs.openstack.org/infra/manual/developers.html
.. _Specs: https://specs.openstack.org/openstack/keystone-specs/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/doc/requirements.txt
new/python-keystoneclient-3.17.0/doc/requirements.txt
--- old/python-keystoneclient-3.15.0/doc/requirements.txt 2018-01-24
21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/doc/requirements.txt 2018-06-21
01:15:51.000000000 +0200
@@ -3,8 +3,8 @@
# process, which may cause wedges in the gate later.
# These are needed for docs generation
-openstackdocstheme>=1.17.0 # Apache-2.0
-sphinx!=1.6.6,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
reno>=2.5.0 # Apache-2.0
lxml!=3.7.0,>=3.4.1 # BSD
fixtures>=3.0.0 # Apache-2.0/BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/contrib/auth/v3/saml2.py
new/python-keystoneclient-3.17.0/keystoneclient/contrib/auth/v3/saml2.py
--- old/python-keystoneclient-3.15.0/keystoneclient/contrib/auth/v3/saml2.py
2018-01-24 21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/contrib/auth/v3/saml2.py
2018-06-21 01:15:51.000000000 +0200
@@ -327,7 +327,7 @@
authenticated user. This function directs the HTTP request to SP
managed URL, for instance: ``https://<host>:<port>/Shibboleth.sso/
SAML2/ECP``.
- Upon success the there's a session created and access to the protected
+ Upon success there's a session created and access to the protected
resource is granted. Many implementations of the SP return HTTP 302/303
status code pointing to the protected URL (``https://<host>:<port>/v3/
OS-FEDERATION/identity_providers/{identity_provider}/protocols/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/test_session.py
new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/test_session.py
--- old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/test_session.py
2018-01-24 21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/test_session.py
2018-06-21 01:15:51.000000000 +0200
@@ -266,7 +266,7 @@
# elements to make sure that all joins are appropriately
# handled (any join of unicode and byte strings should
# raise a UnicodeDecodeError)
- session.post(unicode(self.TEST_URL), data=data)
+ session.post(six.text_type(self.TEST_URL), data=data)
self.assertNotIn('my data', self.logger.output)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/v3/test_limits.py
new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/v3/test_limits.py
---
old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/v3/test_limits.py
1970-01-01 01:00:00.000000000 +0100
+++
new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/v3/test_limits.py
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,77 @@
+# 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.
+
+import uuid
+
+from keystoneclient.tests.unit.v3 import utils
+from keystoneclient.v3 import limits
+
+
+class LimitTests(utils.ClientTestCase, utils.CrudTests):
+ def setUp(self):
+ super(LimitTests, self).setUp()
+ self.key = 'limit'
+ self.collection_key = 'limits'
+ self.model = limits.Limit
+ self.manager = self.client.limits
+
+ def new_ref(self, **kwargs):
+ ref = {
+ 'id': uuid.uuid4().hex,
+ 'project_id': uuid.uuid4().hex,
+ 'service_id': uuid.uuid4().hex,
+ 'resource_name': uuid.uuid4().hex,
+ 'resource_limit': 15,
+ 'description': uuid.uuid4().hex
+ }
+ ref.update(kwargs)
+ return ref
+
+ def test_create(self):
+ # This test overrides the generic test case provided by the CrudTests
+ # class because the limits API supports creating multiple limits in a
+ # single POST request. As a result, it returns the limits as a list of
+ # all the created limits from the request. This is different from what
+ # the base test_create() method assumes about keystone's API. The
+ # changes here override the base test to closely model how the actual
+ # limit API behaves.
+ ref = self.new_ref()
+ manager_ref = ref.copy()
+ manager_ref.pop('id')
+ req_ref = [manager_ref.copy()]
+
+ self.stub_entity('POST', entity=req_ref, status_code=201)
+
+ returned = self.manager.create(**utils.parameterize(manager_ref))
+ self.assertIsInstance(returned, self.model)
+
+ expected_limit = req_ref.pop()
+ for attr in expected_limit:
+ self.assertEqual(
+ getattr(returned, attr),
+ expected_limit[attr],
+ 'Expected different %s' % attr)
+ self.assertEntityRequestBodyIs([expected_limit])
+
+ def test_list_filter_by_service(self):
+ service_id = uuid.uuid4().hex
+ expected_query = {'service_id': service_id}
+ self.test_list(expected_query=expected_query, service=service_id)
+
+ def test_list_filtered_by_resource_name(self):
+ resource_name = uuid.uuid4().hex
+ self.test_list(resource_name=resource_name)
+
+ def test_list_filtered_by_region(self):
+ region_id = uuid.uuid4().hex
+ expected_query = {'region_id': region_id}
+ self.test_list(expected_query=expected_query, region=region_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/v3/test_registered_limits.py
new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/v3/test_registered_limits.py
---
old/python-keystoneclient-3.15.0/keystoneclient/tests/unit/v3/test_registered_limits.py
1970-01-01 01:00:00.000000000 +0100
+++
new/python-keystoneclient-3.17.0/keystoneclient/tests/unit/v3/test_registered_limits.py
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,76 @@
+# 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.
+
+import uuid
+
+from keystoneclient.tests.unit.v3 import utils
+from keystoneclient.v3 import registered_limits
+
+
+class RegisteredLimitTests(utils.ClientTestCase, utils.CrudTests):
+ def setUp(self):
+ super(RegisteredLimitTests, self).setUp()
+ self.key = 'registered_limit'
+ self.collection_key = 'registered_limits'
+ self.model = registered_limits.RegisteredLimit
+ self.manager = self.client.registered_limits
+
+ def new_ref(self, **kwargs):
+ ref = {
+ 'id': uuid.uuid4().hex,
+ 'service_id': uuid.uuid4().hex,
+ 'resource_name': uuid.uuid4().hex,
+ 'default_limit': 10,
+ 'description': uuid.uuid4().hex
+ }
+ ref.update(kwargs)
+ return ref
+
+ def test_create(self):
+ # This test overrides the generic test case provided by the CrudTests
+ # class because the registered limits API supports creating multiple
+ # limits in a single POST request. As a result, it returns the
+ # registered limits as a list of all the created limits from the
+ # request. This is different from what the base test_create() method
+ # assumes about keystone's API. The changes here override the base test
+ # to closely model how the actual registered limit API behaves.
+ ref = self.new_ref()
+ manager_ref = ref.copy()
+ manager_ref.pop('id')
+ req_ref = [manager_ref.copy()]
+
+ self.stub_entity('POST', entity=req_ref, status_code=201)
+
+ returned = self.manager.create(**utils.parameterize(manager_ref))
+ self.assertIsInstance(returned, self.model)
+
+ expected_limit = req_ref.pop()
+ for attr in expected_limit:
+ self.assertEqual(
+ getattr(returned, attr),
+ expected_limit[attr],
+ 'Expected different %s' % attr)
+ self.assertEntityRequestBodyIs([expected_limit])
+
+ def test_list_filter_by_service(self):
+ service_id = uuid.uuid4().hex
+ expected_query = {'service_id': service_id}
+ self.test_list(expected_query=expected_query, service=service_id)
+
+ def test_list_filter_resource_name(self):
+ resource_name = uuid.uuid4().hex
+ self.test_list(resource_name=resource_name)
+
+ def test_list_filter_region(self):
+ region_id = uuid.uuid4().hex
+ expected_query = {'region_id': region_id}
+ self.test_list(expected_query=expected_query, region=region_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/v3/client.py
new/python-keystoneclient-3.17.0/keystoneclient/v3/client.py
--- old/python-keystoneclient-3.15.0/keystoneclient/v3/client.py
2018-01-24 21:09:04.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/v3/client.py
2018-06-21 01:16:07.000000000 +0200
@@ -37,9 +37,11 @@
from keystoneclient.v3 import endpoint_groups
from keystoneclient.v3 import endpoints
from keystoneclient.v3 import groups
+from keystoneclient.v3 import limits
from keystoneclient.v3 import policies
from keystoneclient.v3 import projects
from keystoneclient.v3 import regions
+from keystoneclient.v3 import registered_limits
from keystoneclient.v3 import role_assignments
from keystoneclient.v3 import roles
from keystoneclient.v3 import services
@@ -158,6 +160,10 @@
:py:class:`keystoneclient.v3.groups.GroupManager`
+ .. py:attribute:: limits
+
+ :py:class:`keystoneclient.v3.limits.LimitManager`
+
.. py:attribute:: oauth1
:py:class:`keystoneclient.v3.contrib.oauth1.core.OAuthManager`
@@ -170,6 +176,10 @@
:py:class:`keystoneclient.v3.regions.RegionManager`
+ .. py:attribute:: registered_limits
+
+ :py:class:`keystoneclient.v3.registered_limits.RegisteredLimitManager`
+
.. py:attribute:: role_assignments
:py:class:`keystoneclient.v3.role_assignments.RoleAssignmentManager`
@@ -230,9 +240,12 @@
self.domains = domains.DomainManager(self._adapter)
self.federation = federation.FederationManager(self._adapter)
self.groups = groups.GroupManager(self._adapter)
+ self.limits = limits.LimitManager(self._adapter)
self.oauth1 = oauth1.create_oauth_manager(self._adapter)
self.policies = policies.PolicyManager(self._adapter)
self.projects = projects.ProjectManager(self._adapter)
+ self.registered_limits = registered_limits.RegisteredLimitManager(
+ self._adapter)
self.regions = regions.RegionManager(self._adapter)
self.role_assignments = (
role_assignments.RoleAssignmentManager(self._adapter))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/v3/limits.py
new/python-keystoneclient-3.17.0/keystoneclient/v3/limits.py
--- old/python-keystoneclient-3.15.0/keystoneclient/v3/limits.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/v3/limits.py
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,148 @@
+# 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 keystoneclient import base
+
+
+class Limit(base.Resource):
+ """Represents a project limit.
+
+ Attributes:
+ * id: a UUID that identifies the project limit
+ * service_id: a UUID that identifies the service for the limit
+ * region_id: a UUID that identifies the region for the limit
+ * project_id: a UUID that identifies the project for the limit
+ * resource_name: the name of the resource to limit
+ * resource_limit: the limit to apply to the project
+ * description: a description for the project limit
+
+ """
+
+ pass
+
+
+class LimitManager(base.CrudManager):
+ """Manager class for project limits."""
+
+ resource_class = Limit
+ collection_key = 'limits'
+ key = 'limit'
+
+ def create(self, project, service, resource_name, resource_limit,
+ description=None, region=None, **kwargs):
+ """Create a project-specific limit.
+
+ :param project: the project to create a limit for.
+ :type project: str or :class:`keystoneclient.v3.projects.Project`
+ :param service: the service that owns the resource to limit.
+ :type service: str or :class:`keystoneclient.v3.services.Service`
+ :param resource_name: the name of the resource to limit
+ :type resource_name: str
+ :param resource_limit: the quantity of the limit
+ :type resource_limit: int
+ :param description: a description of the limit
+ :type description: str
+ :param region: region the limit applies to
+ :type region: str or :class:`keystoneclient.v3.regions.Region`
+
+ :returns: a reference of the created limit
+ :rtype: :class:`keystoneclient.v3.limits.Limit`
+
+ """
+ limit_data = base.filter_none(
+ project_id=base.getid(project),
+ service_id=base.getid(service),
+ resource_name=resource_name,
+ resource_limit=resource_limit,
+ description=description,
+ region_id=base.getid(region),
+ **kwargs
+ )
+ body = {self.collection_key: [limit_data]}
+ resp, body = self.client.post('/limits', body=body)
+ limit = body[self.collection_key].pop()
+ return self.resource_class(self, limit)
+
+ def update(self, limit, project=None, service=None, resource_name=None,
+ resource_limit=None, description=None, **kwargs):
+ """Update a project-specific limit.
+
+ :param limit: a limit to update
+ :param project: the project ID of the limit to update
+ :type project: str or :class:`keystoneclient.v3.projects.Project`
+ :param resource_limit: the limit of the limit's resource to update
+ :type: resource_limit: int
+ :param description: a description of the limit
+ :type description: str
+
+ :returns: a reference of the updated limit.
+ :rtype: :class:`keystoneclient.v3.limits.Limit`
+
+ """
+ return super(LimitManager, self).update(
+ limit_id=base.getid(limit),
+ project_id=base.getid(project),
+ service_id=base.getid(service),
+ resource_name=resource_name,
+ resource_limit=resource_limit,
+ description=description,
+ **kwargs
+ )
+
+ def get(self, limit):
+ """Retrieve a project limit.
+
+ :param limit:
+ the project-specific limit to be retrieved.
+ :type limit:
+ str or :class:`keystoneclient.v3.limit.Limit`
+
+ :returns: a project-specific limit
+ :rtype: :class:`keystoneclient.v3.limit.Limit`
+
+ """
+ return super(LimitManager, self).get(limit_id=base.getid(limit))
+
+ def list(self, service=None, region=None, resource_name=None, **kwargs):
+ """List project-specific limits.
+
+ Any parameter provided will be passed to the server as a filter
+
+ :param service: service to filter limits by
+ :type service: UUID or :class:`keystoneclient.v3.services.Service`
+ :param region: region to filter limits by
+ :type region: UUID or :class:`keystoneclient.v3.regions.Region`
+ :param resource_name: the name of the resource to filter limits by
+ :type resource_name: str
+
+ :returns: a list of project-specific limits.
+ :rtype: list of :class:`keystoneclient.v3.limits.Limit`
+
+ """
+ return super(LimitManager, self).list(
+ service_id=base.getid(service),
+ region_id=base.getid(region),
+ resource_name=resource_name,
+ **kwargs
+ )
+
+ def delete(self, limit):
+ """Delete a project-specific limit.
+
+ :param limit: the project-specific limit to be deleted.
+ :type limit: str or :class:`keystoneclient.v3.limit.Limit`
+
+ :returns: Response object with 204 status
+ :rtype: :class:`requests.models.Response`
+
+ """
+ return super(LimitManager, self).delete(limit_id=base.getid(limit))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/v3/projects.py
new/python-keystoneclient-3.17.0/keystoneclient/v3/projects.py
--- old/python-keystoneclient-3.15.0/keystoneclient/v3/projects.py
2018-01-24 21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/v3/projects.py
2018-06-21 01:15:51.000000000 +0200
@@ -205,6 +205,11 @@
p.tags = self._encode_tags(getattr(p, 'tags', []))
return p
+ def find(self, **kwargs):
+ p = super(ProjectManager, self).find(**kwargs)
+ p.tags = self._encode_tags(getattr(p, 'tags', []))
+ return p
+
def update(self, project, name=None, domain=None, description=None,
enabled=None, **kwargs):
"""Update a project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/keystoneclient/v3/registered_limits.py
new/python-keystoneclient-3.17.0/keystoneclient/v3/registered_limits.py
--- old/python-keystoneclient-3.15.0/keystoneclient/v3/registered_limits.py
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-3.17.0/keystoneclient/v3/registered_limits.py
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,158 @@
+# 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 keystoneclient import base
+
+
+class RegisteredLimit(base.Resource):
+ """Represents a registered limit.
+
+ Attributes:
+ * id: a UUID that identifies the registered limit
+ * service_id: a UUID that identifies the service for the limit
+ * region_id: a UUID that identifies the region for the limit
+ * resource_name: the name of the resource to limit
+ * default_limit: the default limit for projects to assume
+ * description: a description of the registered limit
+
+ """
+
+ pass
+
+
+class RegisteredLimitManager(base.CrudManager):
+ """Manager class for registered limits."""
+
+ resource_class = RegisteredLimit
+ collection_key = 'registered_limits'
+ key = 'registered_limit'
+
+ def create(self, service, resource_name, default_limit,
+ description=None, region=None, **kwargs):
+ """Create a registered limit.
+
+ :param service: a UUID that identifies the service for the limit.
+ :type service: str
+ :param resource_name: the name of the resource to limit.
+ :type resource_name: str
+ :param default_limit: the default limit for projects to assume.
+ :type default_limit: int
+ :param description: a string that describes the limit
+ :type description: str
+ :param region: a UUID that identifies the region for the limit.
+ :type region: str
+
+ :returns: a reference of the created registered limit.
+ :rtype: :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ """
+ # NOTE(lbragstad): Keystone's registered limit API supports creation of
+ # limits in batches. This client accepts a single limit and passes it
+ # to the identity service as a list of a single item.
+ limit_data = base.filter_none(
+ service_id=base.getid(service),
+ resource_name=resource_name,
+ default_limit=default_limit,
+ description=description,
+ region_id=base.getid(region),
+ **kwargs
+ )
+ body = {self.collection_key: [limit_data]}
+ resp, body = self.client.post('/registered_limits', body=body)
+ registered_limit = body[self.collection_key].pop()
+ return self.resource_class(self, registered_limit)
+
+ def update(self, registered_limit, service=None, resource_name=None,
+ default_limit=None, description=None, region=None, **kwargs):
+ """Update a registered limit.
+
+ :param registered_limit:
+ the UUID or reference of the registered limit to update.
+ :param registered_limit:
+ str or :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+ :param service: a UUID that identifies the service for the limit.
+ :type service: str
+ :param resource_name: the name of the resource to limit.
+ :type resource_name: str
+ :param default_limit: the default limit for projects to assume.
+ :type defaut slt_limit: int
+ :param description: a string that describes the limit
+ :type description: str
+ :param region: a UUID that identifies the region for the limit.
+ :type region: str
+
+ :returns: a reference of the updated registered limit.
+ :rtype: :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ """
+ return super(RegisteredLimitManager, self).update(
+ registered_limit_id=base.getid(registered_limit),
+ service_id=base.getid(service),
+ resource_name=resource_name,
+ default_limit=default_limit,
+ description=description,
+ region=region,
+ **kwargs
+ )
+
+ def get(self, registered_limit):
+ """Retrieve a registered limit.
+
+ :param registered_limit: the registered limit to get.
+ :type registered_limit:
+ str or :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ :returns: a specific registered limit.
+ :rtype: :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ """
+ return super(RegisteredLimitManager, self).get(
+ registered_limit_id=base.getid(registered_limit))
+
+ def list(self, service=None, resource_name=None, region=None, **kwargs):
+ """List registered limits.
+
+ Any parameter provided will be passed to the server as a filter.
+
+ :param service: filter registered limits by service
+ :type service: a UUID or :class:`keystoneclient.v3.services.Service`
+ :param resource_name: filter registered limits by resource name
+ :type resource_name: str
+ :param region: filter registered limits by region
+ :type region: a UUID or :class:`keystoneclient.v3.regions.Region`
+
+ :returns: a list of registered limits.
+ :rtype: list of
+ :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ """
+ return super(RegisteredLimitManager, self).list(
+ service_id=base.getid(service),
+ resource_name=resource_name,
+ region_id=base.getid(region),
+ **kwargs)
+
+ def delete(self, registered_limit):
+ """Delete a registered limit.
+
+ :param registered_limit: the registered limit to delete.
+ :type registered_limit:
+ str or :class:`keystoneclient.v3.registered_limits.RegisteredLimit`
+
+ :returns: Response object with 204 status.
+ :rtype: :class:`requests.models.Response`
+
+ """
+ registered_limit_id = base.getid(registered_limit)
+ return super(RegisteredLimitManager, self).delete(
+ registered_limit_id=registered_limit_id
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/lower-constraints.txt
new/python-keystoneclient-3.17.0/lower-constraints.txt
--- old/python-keystoneclient-3.15.0/lower-constraints.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/python-keystoneclient-3.17.0/lower-constraints.txt 2018-06-21
01:15:51.000000000 +0200
@@ -0,0 +1,77 @@
+appdirs==1.3.0
+asn1crypto==0.23.0
+Babel==2.3.4
+bandit==1.1.0
+cffi==1.7.0
+cliff==2.8.0
+cmd2==0.8.0
+coverage==4.0
+cryptography==2.1
+debtcollector==1.2.0
+extras==1.0.0
+fasteners==0.7.0
+fixtures==3.0.0
+flake8-docstrings==0.2.1.post1
+flake8==2.2.4
+future==0.16.0
+gitdb==0.6.4
+GitPython==1.0.1
+hacking==0.10.0
+idna==2.6
+iso8601==0.1.11
+jsonschema==2.6.0
+keyring==5.5.1
+keystoneauth1==3.4.0
+linecache2==1.0.0
+lxml==3.4.1
+mccabe==0.2.1
+mock==2.0.0
+monotonic==0.6
+mox3==0.20.0
+msgpack-python==0.4.0
+netaddr==0.7.18
+netifaces==0.10.4
+oauthlib==0.6.2
+os-client-config==1.28.0
+os-testr==1.0.0
+oslo.concurrency==3.25.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
+pep257==0.7.0
+pep8==1.5.7
+prettytable==0.7.2
+pyasn1==0.1.8
+pycparser==2.18
+pyflakes==0.8.1
+pyinotify==0.9.6
+pyparsing==2.1.0
+pyperclip==1.5.27
+python-dateutil==2.5.3
+python-mimeparse==1.6.0
+python-subunit==1.0.0
+pytz==2013.6
+PyYAML==3.12
+requests-mock==1.2.0
+requests==2.14.2
+requestsexceptions==1.2.0
+rfc3986==0.3.1
+six==1.10.0
+smmap==0.9.0
+stestr==1.0.0
+stevedore==1.20.0
+tempest==17.1.0
+testrepository==0.0.18
+testresources==2.0.0
+testscenarios==0.4
+testtools==2.2.0
+traceback2==1.4.0
+unittest2==1.1.0
+urllib3==1.21.1
+wrapt==1.7.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/PKG-INFO
new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/PKG-INFO
--- old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/PKG-INFO
2018-01-24 21:10:42.000000000 +0100
+++ new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/PKG-INFO
2018-06-21 01:17:42.000000000 +0200
@@ -1,18 +1,17 @@
Metadata-Version: 1.1
Name: python-keystoneclient
-Version: 3.15.0
+Version: 3.17.0
Summary: Client Library for OpenStack Identity
Home-page: https://docs.openstack.org/python-keystoneclient/latest/
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description-Content-Type: UNKNOWN
Description: ========================
Team and repository tags
========================
- .. image::
https://governance.openstack.org/badges/python-keystoneclient.svg
- :target: https://governance.openstack.org/reference/tags/index.html
+ .. image::
https://governance.openstack.org/tc/badges/python-keystoneclient.svg
+ :target:
https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -20,13 +19,9 @@
========================================================
.. image:: https://img.shields.io/pypi/v/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
+ :target: https://pypi.org/project/python-keystoneclient/
:alt: Latest Version
- .. image:: https://img.shields.io/pypi/dm/python-keystoneclient.svg
- :target: https://pypi.python.org/pypi/python-keystoneclient/
- :alt: Downloads
-
This is a client for the OpenStack Identity API, implemented by the
Keystone
team; it contains a Python API (the ``keystoneclient`` module) for
OpenStack's Identity Service. For command line interface support, use
@@ -41,13 +36,13 @@
* `Specs`_
* `How to Contribute`_
- .. _PyPi: https://pypi.python.org/pypi/python-keystoneclient
+ .. _PyPi: https://pypi.org/project/python-keystoneclient
.. _Online Documentation:
https://docs.openstack.org/python-keystoneclient/latest/
.. _Launchpad project: https://launchpad.net/python-keystoneclient
.. _Blueprints: https://blueprints.launchpad.net/python-keystoneclient
.. _Bugs: https://bugs.launchpad.net/python-keystoneclient
.. _Source:
https://git.openstack.org/cgit/openstack/python-keystoneclient
- .. _OpenStackClient:
https://pypi.python.org/pypi/python-openstackclient
+ .. _OpenStackClient: https://pypi.org/project/python-openstackclient
.. _How to Contribute:
https://docs.openstack.org/infra/manual/developers.html
.. _Specs: https://specs.openstack.org/openstack/keystone-specs/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/SOURCES.txt
new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/SOURCES.txt
--- old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/SOURCES.txt
2018-01-24 21:10:43.000000000 +0100
+++ new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/SOURCES.txt
2018-06-21 01:17:43.000000000 +0200
@@ -1,6 +1,7 @@
.coveragerc
.mailmap
.testr.conf
+.zuul.yaml
AUTHORS
CONTRIBUTING.rst
ChangeLog
@@ -9,6 +10,7 @@
README.rst
babel.cfg
bindep.txt
+lower-constraints.txt
requirements.txt
setup.cfg
setup.py
@@ -197,10 +199,12 @@
keystoneclient/tests/unit/v3/test_endpoints.py
keystoneclient/tests/unit/v3/test_federation.py
keystoneclient/tests/unit/v3/test_groups.py
+keystoneclient/tests/unit/v3/test_limits.py
keystoneclient/tests/unit/v3/test_oauth1.py
keystoneclient/tests/unit/v3/test_policies.py
keystoneclient/tests/unit/v3/test_projects.py
keystoneclient/tests/unit/v3/test_regions.py
+keystoneclient/tests/unit/v3/test_registered_limits.py
keystoneclient/tests/unit/v3/test_role_assignments.py
keystoneclient/tests/unit/v3/test_roles.py
keystoneclient/tests/unit/v3/test_service_catalog.py
@@ -234,9 +238,11 @@
keystoneclient/v3/endpoint_groups.py
keystoneclient/v3/endpoints.py
keystoneclient/v3/groups.py
+keystoneclient/v3/limits.py
keystoneclient/v3/policies.py
keystoneclient/v3/projects.py
keystoneclient/v3/regions.py
+keystoneclient/v3/registered_limits.py
keystoneclient/v3/role_assignments.py
keystoneclient/v3/roles.py
keystoneclient/v3/services.py
@@ -274,6 +280,8 @@
python_keystoneclient.egg-info/top_level.txt
releasenotes/notes/.placeholder
releasenotes/notes/Add-allow-expired-flag-to-validate-25b8914f4deb359b.yaml
+releasenotes/notes/add-support-for-limits-6f883d6d3054a500.yaml
+releasenotes/notes/add-support-for-registered-limits-d83b888ea65a614b.yaml
releasenotes/notes/bp-application-credentials-27728ded876d7d5a.yaml
releasenotes/notes/bp-domain-config-9566e672a98f4e7f.yaml
releasenotes/notes/bp-pci-dss-query-password-expired-users-b0c4b1bbdcf33f16.yaml
@@ -297,6 +305,7 @@
releasenotes/source/newton.rst
releasenotes/source/ocata.rst
releasenotes/source/pike.rst
+releasenotes/source/queens.rst
releasenotes/source/unreleased.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/pbr.json
new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/pbr.json
--- old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/pbr.json
2018-01-24 21:10:42.000000000 +0100
+++ new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/pbr.json
2018-06-21 01:17:42.000000000 +0200
@@ -1 +1 @@
-{"git_version": "1e8c930", "is_release": true}
\ No newline at end of file
+{"git_version": "234ea50", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/requires.txt
new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/requires.txt
---
old/python-keystoneclient-3.15.0/python_keystoneclient.egg-info/requires.txt
2018-01-24 21:10:42.000000000 +0100
+++
new/python-keystoneclient-3.17.0/python_keystoneclient.egg-info/requires.txt
2018-06-21 01:17:42.000000000 +0200
@@ -1,7 +1,7 @@
pbr!=2.1.0,>=2.0.0
debtcollector>=1.2.0
-keystoneauth1>=3.3.0
-oslo.config>=5.1.0
+keystoneauth1>=3.4.0
+oslo.config>=5.2.0
oslo.i18n>=3.15.3
oslo.serialization!=2.19.1,>=2.18.0
oslo.utils>=3.33.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/releasenotes/notes/add-support-for-limits-6f883d6d3054a500.yaml
new/python-keystoneclient-3.17.0/releasenotes/notes/add-support-for-limits-6f883d6d3054a500.yaml
---
old/python-keystoneclient-3.15.0/releasenotes/notes/add-support-for-limits-6f883d6d3054a500.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-keystoneclient-3.17.0/releasenotes/notes/add-support-for-limits-6f883d6d3054a500.yaml
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Added support for managing project-specific limits. The ``POST`` API for
+ limits in keystone supports batch creation, but the client implementation
+ does not. Creation for limits using the client must be done one at a time.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/releasenotes/notes/add-support-for-registered-limits-d83b888ea65a614b.yaml
new/python-keystoneclient-3.17.0/releasenotes/notes/add-support-for-registered-limits-d83b888ea65a614b.yaml
---
old/python-keystoneclient-3.15.0/releasenotes/notes/add-support-for-registered-limits-d83b888ea65a614b.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-keystoneclient-3.17.0/releasenotes/notes/add-support-for-registered-limits-d83b888ea65a614b.yaml
2018-06-21 01:16:07.000000000 +0200
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Added support for managing registered limits. The ``POST`` API for
+ registered limits in keystone supports batch creation, but the client
+ implementation does not. Creation of registered limits using the client
+ must be done one at a time.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/releasenotes/source/index.rst
new/python-keystoneclient-3.17.0/releasenotes/source/index.rst
--- old/python-keystoneclient-3.15.0/releasenotes/source/index.rst
2018-01-24 21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/releasenotes/source/index.rst
2018-06-21 01:15:51.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ queens
pike
ocata
newton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-keystoneclient-3.15.0/releasenotes/source/queens.rst
new/python-keystoneclient-3.17.0/releasenotes/source/queens.rst
--- old/python-keystoneclient-3.15.0/releasenotes/source/queens.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-3.17.0/releasenotes/source/queens.rst
2018-06-21 01:15:51.000000000 +0200
@@ -0,0 +1,6 @@
+===================================
+ Queens Series Release Notes
+===================================
+
+.. release-notes::
+ :branch: stable/queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/requirements.txt
new/python-keystoneclient-3.17.0/requirements.txt
--- old/python-keystoneclient-3.15.0/requirements.txt 2018-01-24
21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/requirements.txt 2018-06-21
01:15:51.000000000 +0200
@@ -5,8 +5,8 @@
pbr!=2.1.0,>=2.0.0 # Apache-2.0
debtcollector>=1.2.0 # Apache-2.0
-keystoneauth1>=3.3.0 # Apache-2.0
-oslo.config>=5.1.0 # Apache-2.0
+keystoneauth1>=3.4.0 # Apache-2.0
+oslo.config>=5.2.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
oslo.utils>=3.33.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/test-requirements.txt
new/python-keystoneclient-3.17.0/test-requirements.txt
--- old/python-keystoneclient-3.15.0/test-requirements.txt 2018-01-24
21:08:40.000000000 +0100
+++ new/python-keystoneclient-3.17.0/test-requirements.txt 2018-06-21
01:15:51.000000000 +0200
@@ -10,9 +10,9 @@
keyring>=5.5.1 # MIT/PSF
lxml!=3.7.0,>=3.4.1 # BSD
mock>=2.0.0 # BSD
-oauthlib>=0.6.0 # BSD
+oauthlib>=0.6.2 # BSD
oslotest>=3.2.0 # Apache-2.0
-requests-mock>=1.1.0 # Apache-2.0
+requests-mock>=1.2.0 # Apache-2.0
tempest>=17.1.0 # Apache-2.0
testrepository>=0.0.18 # Apache-2.0/BSD
testresources>=2.0.0 # Apache-2.0/BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-keystoneclient-3.15.0/tox.ini
new/python-keystoneclient-3.17.0/tox.ini
--- old/python-keystoneclient-3.15.0/tox.ini 2018-01-24 21:08:40.000000000
+0100
+++ new/python-keystoneclient-3.17.0/tox.ini 2018-06-21 01:15:51.000000000
+0200
@@ -19,23 +19,28 @@
whitelist_externals = find
[testenv:pep8]
+basepython = python3
commands =
flake8
bandit -r keystoneclient -x tests -n5
[testenv:bandit]
+basepython = python3
# NOTE(browne): This is required for the integration test job of the bandit
# project. Please do not remove.
commands = bandit -r keystoneclient -x tests -n5
[testenv:venv]
+basepython = python3
commands = {posargs}
[testenv:cover]
+basepython = python3
commands = python setup.py testr --coverage --testr-args='{posargs}'
coverage report
[testenv:debug]
+basepython = python3
commands = oslo_debug_helper -t keystoneclient/tests {posargs}
[testenv:functional]
@@ -55,10 +60,12 @@
exclude = .venv,.tox,dist,doc,*egg,build
[testenv:docs]
+basepython = python3
commands = python setup.py build_sphinx
deps = -r{toxinidir}/doc/requirements.txt
[testenv:releasenotes]
+basepython = python3
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
deps = -r{toxinidir}/doc/requirements.txt
@@ -67,9 +74,17 @@
keystoneclient.i18n
[testenv:bindep]
+basepython = python3
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
commands = bindep test
+
+[testenv:lower-constraints]
+basepython = python3
+deps =
+ -c{toxinidir}/lower-constraints.txt
+ -r{toxinidir}/test-requirements.txt
+ -r{toxinidir}/requirements.txt