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


Reply via email to