Hello community,

here is the log from the commit of package python-os-client-config for 
openSUSE:Factory checked in at 2017-02-21 13:39:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-os-client-config (Old)
 and      /work/SRC/openSUSE:Factory/.python-os-client-config.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-os-client-config"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-os-client-config/python-os-client-config.changes
  2016-09-30 15:29:13.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-os-client-config.new/python-os-client-config.changes
     2017-02-21 13:39:41.406514495 +0100
@@ -1,0 +2,38 @@
+Fri Feb 10 15:28:26 UTC 2017 - [email protected]
+
+- update to version 1.26.0:
+  - Revert "Split auth plugin loading into its own method"
+  - Add docutils contraint on 0.13.1 to fix building
+  - Fix interface_key for identity clients
+  - Use upper-constraints for tox envs
+  - Update ECS image_api_version to 1
+  - Enable release notes translation
+  - Update swift constructor to be Session aware
+  - Remove validate_auth_ksc
+  - Fix AttributeError in `get_config`
+  - Update reno for stable/newton
+  - Revert "Fix interface_key for identity clients"
+  - Normalize cloud config before osc-lib call
+  - List py35 in the default tox env list
+  - Show team and repo badges on README
+  - Fix a bunch of tests
+  - Add setter for session constructor
+  - Don't create envvars cloud if cloud or region are set
+  - Using assertIsNone() instead of assertEqual(None, ...)
+  - Magnum's service_type is container_infra
+  - cloud_config:get_session_endpoint: catch Keystone EndpointNotFound
+  - modify the home-page info with the developer documentation
+  - Add OpenTelekomCloud to the vendors
+  - Split auth plugin loading into its own method
+  - Update homepage with developer documentation page
+  - Support token_endpoint as an auth_type
+  - Add fuga.io to vendors
+  - Add support for Murano
+  - Add ability to configure Session constructor
+  - Remove 3.4 from tox envlist
+  - Add support for volumev3 service type
+  - Clarify how to set SSL settings
+  - Revert "Remove validate_auth_ksc"
+  - Don't build releasenotes in normal docs build
+
+-------------------------------------------------------------------

Old:
----
  os-client-config-1.21.1.tar.gz

New:
----
  os-client-config-1.26.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-os-client-config.spec ++++++
--- /var/tmp/diff_new_pack.Y42cx0/_old  2017-02-21 13:39:41.818456382 +0100
+++ /var/tmp/diff_new_pack.Y42cx0/_new  2017-02-21 13:39:41.818456382 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-os-client-config
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,28 +20,28 @@
 %bcond_with test
 %bcond_with docs
 Name:           python-os-client-config
-Version:        1.21.1
+Version:        1.26.0
 Release:        0
 Summary:        OpenStack Client Configuration Library
 License:        Apache-2.0
-Group:          Development/Libraries
+Group:          Development/Languages/Python
 Url:            https://launchpad.net/%{sname}
 Source0:        
https://pypi.io/packages/source/o/%{sname}/%{sname}-%{version}.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python-devel
-BuildRequires:  python-pbr >= 1.6
+BuildRequires:  python-pbr >= 1.8
 BuildRequires:  python-setuptools >= 16.0
-Requires:       python-PyYAML >= 3.1.0
+Requires:       python-PyYAML >= 3.10.0
 Requires:       python-appdirs >= 1.3.0
-Requires:       python-keystoneauth1 >= 2.10.0
+Requires:       python-keystoneauth1 >= 2.17.0
 Requires:       python-requestsexceptions >= 1.1.1
 BuildArch:      noarch
 %if %{with test}
 BuildRequires:  python-extras
 BuildRequires:  python-fixtures >= 3.0.0
-BuildRequires:  python-glanceclient >= 2.0.0
+BuildRequires:  python-glanceclient >= 2.5.0
 BuildRequires:  python-jsonschema >= 2.0.0
-BuildRequires:  python-keystoneclient >= 2.0.0
+BuildRequires:  python-keystoneclient >= 3.8.0
 BuildRequires:  python-mock >= 2.0
 BuildRequires:  python-oslotest >= 1.10.0
 BuildRequires:  python-python-subunit >= 0.0.18
@@ -61,9 +61,9 @@
 %if %{with docs}
 %package doc
 Summary:        Documentation for OpenStack client configuration library
-Group:          Development/Libraries
+Group:          Development/Languages/Python
 BuildRequires:  python-Sphinx
-BuildRequires:  python-oslosphinx >= 2.5.0
+BuildRequires:  python-oslosphinx >= 4.7.0
 BuildRequires:  python-reno >= 1.8.0
 
 %description doc
@@ -71,7 +71,8 @@
 %endif
 
 %prep
-%setup -q -n %{sname}-%{version}
+%autosetup -n %{sname}-%{version}
+%py_req_cleanup
 
 %build
 %{py2_build}
@@ -93,7 +94,7 @@
 
 %files
 %license LICENSE
-%doc README.rst AUTHORS
+%doc README.rst
 %{python2_sitelib}/os_client_config
 %{python2_sitelib}/*.egg-info
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.Y42cx0/_old  2017-02-21 13:39:41.854451304 +0100
+++ /var/tmp/diff_new_pack.Y42cx0/_new  2017-02-21 13:39:41.854451304 +0100
@@ -1,13 +1,12 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/master/openstack/os-client-config/os-client-config.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/ocata/openstack/os-client-config/os-client-config.spec.j2</param>
     <param name="output-name">python-os-client-config.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/global-requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/ocata/global-requirements.txt</param>
+    <param name="changelog-email">[email protected]</param>
+    <param name="changelog-provider">gh,openstack,os-client-config</param>
   </service>
   <service mode="disabled" name="download_files">
-    <param name="changesgenerate">enable</param>
-  </service>
-  <service name="refresh_patches" mode="disabled">
-    <param name="changesgenerate">enable</param>
   </service>
+  <service name="format_spec_file" mode="disabled"/>
 </services>

++++++ os-client-config-1.21.1.tar.gz -> os-client-config-1.26.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/AUTHORS 
new/os-client-config-1.26.0/AUTHORS
--- old/os-client-config-1.21.1/AUTHORS 2016-09-01 21:02:30.000000000 +0200
+++ new/os-client-config-1.26.0/AUTHORS 2017-01-19 10:34:38.000000000 +0100
@@ -1,7 +1,11 @@
 Alex Gaynor <[email protected]>
 Alvaro Lopez Garcia <[email protected]>
+Andreas Jaeger <[email protected]>
+Andy Botting <[email protected]>
 Anita Kuno <[email protected]>
 Arie Bregman <[email protected]>
+Cao Xuan Hoang <[email protected]>
+Cedric Brandily <[email protected]>
 ChangBo Guo(gcb) <[email protected]>
 Chris Church <[email protected]>
 Clark Boylan <[email protected]>
@@ -14,6 +18,7 @@
 Doug Hellmann <[email protected]>
 Doug Wiegley <[email protected]>
 Eric Harney <[email protected]>
+Flavio Percoco <[email protected]>
 Ghe Rivero <[email protected]>
 Gregory Haynes <[email protected]>
 Ilya Shakhat <[email protected]>
@@ -21,19 +26,24 @@
 Jamie Lennox <[email protected]>
 Javier Pena <[email protected]>
 Jeremy Stanley <[email protected]>
+Jordan Pittier <[email protected]>
 Julia Kreger <[email protected]>
 LiuNanke <[email protected]>
 Mathieu Gagné <[email protected]>
 Mohammed Naser <[email protected]>
 Monty Taylor <[email protected]>
+Paulo Matias <[email protected]>
 Shuquan Huang <[email protected]>
 Simon Leinen <[email protected]>
 Spencer Krum <[email protected]>
+Steve Martinelli <[email protected]>
 Steve Martinelli <[email protected]>
 TerryHowe <[email protected]>
 Thomas Bechtold <[email protected]>
 Tim Burke <[email protected]>
+Tony Xu <[email protected]>
 Xav Paice <[email protected]>
 Yaguang Tang <[email protected]>
 Yuriy Taraday <[email protected]>
+avnish <[email protected]>
 lifeless <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/ChangeLog 
new/os-client-config-1.26.0/ChangeLog
--- old/os-client-config-1.21.1/ChangeLog       2016-09-01 21:02:30.000000000 
+0200
+++ new/os-client-config-1.26.0/ChangeLog       2017-01-19 10:34:38.000000000 
+0100
@@ -1,6 +1,59 @@
 CHANGES
 =======
 
+1.26.0
+------
+
+* Revert "Fix interface_key for identity clients"
+* Add support for Murano
+
+1.25.0
+------
+
+* Add OpenTelekomCloud to the vendors
+* Remove 3.4 from tox envlist
+* Use upper-constraints for tox envs
+* Update swift constructor to be Session aware
+* Magnum's service_type is container_infra
+* Add docutils contraint on 0.13.1 to fix building
+* Fix interface_key for identity clients
+* Show team and repo badges on README
+
+1.24.0
+------
+
+* Revert "Remove validate_auth_ksc"
+
+1.23.0
+------
+
+* Remove validate_auth_ksc
+* Add fuga.io to vendors
+* Support token_endpoint as an auth_type
+* Add support for volumev3 service type
+* Normalize cloud config before osc-lib call
+* Fix a bunch of tests
+* Clarify how to set SSL settings
+* Update ECS image_api_version to 1
+
+1.22.0
+------
+
+* Revert "Split auth plugin loading into its own method"
+* Add setter for session constructor
+* Enable release notes translation
+* cloud_config:get_session_endpoint: catch Keystone EndpointNotFound
+* Using assertIsNone() instead of assertEqual(None, ...)
+* Update homepage with developer documentation page
+* List py35 in the default tox env list
+* Fix AttributeError in `get_config`
+* modify the home-page info with the developer documentation
+* Don't create envvars cloud if cloud or region are set
+* Don't build releasenotes in normal docs build
+* Update reno for stable/newton
+* Add ability to configure Session constructor
+* Split auth plugin loading into its own method
+
 1.21.1
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/PKG-INFO 
new/os-client-config-1.26.0/PKG-INFO
--- old/os-client-config-1.21.1/PKG-INFO        2016-09-01 21:02:31.000000000 
+0200
+++ new/os-client-config-1.26.0/PKG-INFO        2017-01-19 10:34:38.000000000 
+0100
@@ -1,12 +1,21 @@
 Metadata-Version: 1.1
 Name: os-client-config
-Version: 1.21.1
+Version: 1.26.0
 Summary: OpenStack Client Configuation Library
-Home-page: http://www.openstack.org/
+Home-page: http://docs.openstack.org/developer/os-client-config/
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
-Description: ================
+Description: ========================
+        Team and repository tags
+        ========================
+        
+        .. image:: http://governance.openstack.org/badges/os-client-config.svg
+            :target: http://governance.openstack.org/reference/tags/index.html
+        
+        .. Change things from this point on
+        
+        ================
         os-client-config
         ================
         
@@ -193,6 +202,19 @@
         location. In case the cert key is not included within the client cert 
file,
         its file location needs to be set via `key`.
         
+        .. code-block:: yaml
+        
+          # clouds.yaml
+          clouds:
+            secure:
+              auth: ...
+              key: /home/myhome/client-cert.key
+              cert: /home/myhome/client-cert.crt
+              cacert: /home/myhome/ca.crt
+            insecure:
+              auth: ...
+              verify: False
+        
         Cache Settings
         --------------
         
@@ -506,4 +528,4 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/README.rst 
new/os-client-config-1.26.0/README.rst
--- old/os-client-config-1.21.1/README.rst      2016-09-01 21:00:48.000000000 
+0200
+++ new/os-client-config-1.26.0/README.rst      2017-01-19 10:32:33.000000000 
+0100
@@ -1,3 +1,12 @@
+========================
+Team and repository tags
+========================
+
+.. image:: http://governance.openstack.org/badges/os-client-config.svg
+    :target: http://governance.openstack.org/reference/tags/index.html
+
+.. Change things from this point on
+
 ================
 os-client-config
 ================
@@ -185,6 +194,19 @@
 location. In case the cert key is not included within the client cert file,
 its file location needs to be set via `key`.
 
+.. code-block:: yaml
+
+  # clouds.yaml
+  clouds:
+    secure:
+      auth: ...
+      key: /home/myhome/client-cert.key
+      cert: /home/myhome/client-cert.crt
+      cacert: /home/myhome/ca.crt
+    insecure:
+      auth: ...
+      verify: False
+
 Cache Settings
 --------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/doc/source/releasenotes.rst 
new/os-client-config-1.26.0/doc/source/releasenotes.rst
--- old/os-client-config-1.21.1/doc/source/releasenotes.rst     2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/doc/source/releasenotes.rst     2017-01-19 
10:32:33.000000000 +0100
@@ -2,4 +2,5 @@
 Release Notes
 =============
 
-.. release-notes::
+Release notes for `os-client-config` can be found at
+http://docs.openstack.org/releasenotes/os-client-config/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/doc/source/vendor-support.rst 
new/os-client-config-1.26.0/doc/source/vendor-support.rst
--- old/os-client-config-1.21.1/doc/source/vendor-support.rst   2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/doc/source/vendor-support.rst   2017-01-19 
10:32:33.000000000 +0100
@@ -134,6 +134,21 @@
 * Public IPv4 is provided via NAT with Neutron Floating IP
 * IPv6 is provided to every server
 
+otc
+---
+
+https://iam.%(region_name)s.otc.t-systems.com/v3
+
+============== ================
+Region Name    Location
+============== ================
+eu-de          Germany
+============== ================
+
+* Identity API Version is 3
+* Images must be in `vhd` format
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
 elastx
 ------
 
@@ -160,8 +175,23 @@
 de-fra1        Frankfurt, DE
 ============== ================
 
+* Image API Version is 1
 * Volume API Version is 1
 
+fuga
+----
+
+https://identity.api.fuga.io:5000
+
+============== ================
+Region Name    Location
+============== ================
+cystack        Netherlands
+============== ================
+
+* Identity API Version is 3
+* Volume API Version is 3
+
 internap
 --------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/os_client_config/__init__.py 
new/os-client-config-1.26.0/os_client_config/__init__.py
--- old/os-client-config-1.21.1/os_client_config/__init__.py    2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/__init__.py    2017-01-19 
10:32:33.000000000 +0100
@@ -26,7 +26,7 @@
 def get_config(service_key=None, options=None, **kwargs):
     config = OpenStackConfig()
     if options:
-        config.register_argparse_options(options, sys.argv, service_key)
+        config.register_argparse_arguments(options, sys.argv, service_key)
         parsed_options = options.parse_known_args(sys.argv)
     else:
         parsed_options = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/cloud_config.py 
new/os-client-config-1.26.0/os_client_config/cloud_config.py
--- old/os-client-config-1.21.1/os_client_config/cloud_config.py        
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/cloud_config.py        
2017-01-19 10:32:33.000000000 +0100
@@ -16,6 +16,7 @@
 import warnings
 
 from keystoneauth1 import adapter
+import keystoneauth1.exceptions.catalog
 from keystoneauth1 import plugin
 from keystoneauth1 import session
 import requestsexceptions
@@ -70,7 +71,7 @@
 class CloudConfig(object):
     def __init__(self, name, region, config,
                  force_ipv4=False, auth_plugin=None,
-                 openstack_config=None):
+                 openstack_config=None, session_constructor=None):
         self.name = name
         self.region = region
         self.config = config
@@ -79,6 +80,7 @@
         self._auth = auth_plugin
         self._openstack_config = openstack_config
         self._keystone_session = None
+        self._session_constructor = session_constructor or session.Session
 
     def __getattr__(self, key):
         """Return arbitrary attributes."""
@@ -101,6 +103,10 @@
     def __ne__(self, other):
         return not self == other
 
+    def set_session_constructor(self, session_constructor):
+        """Sets the Session constructor."""
+        self._session_constructor = session_constructor
+
     def get_requests_verify_args(self):
         """Return the verify and cert values for the requests library."""
         if self.config['verify'] and self.config['cacert']:
@@ -154,9 +160,12 @@
         # atrocity from the as-yet-unsullied eyes of our users.
         # Of course, if the user requests a volumev2, that structure should
         # still work.
-        if (service_type == 'volume' and
-                self.get_api_version(service_type).startswith('2')):
-            service_type = 'volumev2'
+        # What's even more amazing is that they did it AGAIN with cinder v3
+        if service_type == 'volume':
+            if self.get_api_version(service_type).startswith('2'):
+                service_type = 'volumev2'
+            elif self.get_api_version(service_type).startswith('3'):
+                service_type = 'volumev3'
         return self.config.get(key, service_type)
 
     def get_service_name(self, service_type):
@@ -196,7 +205,7 @@
                     " since verify=False".format(
                         cloud=self.name, region=self.region))
             requestsexceptions.squelch_warnings(insecure_requests=not verify)
-            self._keystone_session = session.Session(
+            self._keystone_session = self._session_constructor(
                 auth=self._auth,
                 verify=verify,
                 cert=cert,
@@ -246,11 +255,18 @@
         if service_key == 'identity':
             endpoint = session.get_endpoint(interface=plugin.AUTH_INTERFACE)
         else:
-            endpoint = session.get_endpoint(
-                service_type=self.get_service_type(service_key),
-                service_name=self.get_service_name(service_key),
-                interface=self.get_interface(service_key),
-                region_name=self.region)
+            args = {
+                'service_type': self.get_service_type(service_key),
+                'service_name': self.get_service_name(service_key),
+                'interface': self.get_interface(service_key),
+                'region_name': self.region
+            }
+            try:
+                endpoint = session.get_endpoint(**args)
+            except keystoneauth1.exceptions.catalog.EndpointNotFound:
+                self.log.warning("Keystone catalog entry not found (%s)",
+                                 args)
+                endpoint = None
         return endpoint
 
     def get_legacy_client(
@@ -296,9 +312,6 @@
         if not client_class:
             client_class = _get_client(service_key)
 
-        # Because of course swift is different
-        if service_key == 'object-store':
-            return self._get_swift_client(client_class=client_class, **kwargs)
         interface = self.get_interface(service_key)
         # trigger exception on lack of service
         endpoint = self.get_session_endpoint(service_key)
@@ -310,12 +323,20 @@
             else:
                 interface_key = 'endpoint_type'
 
-        constructor_kwargs = dict(
-            session=self.get_session(),
-            service_name=self.get_service_name(service_key),
-            service_type=self.get_service_type(service_key),
-            endpoint_override=endpoint_override,
-            region_name=self.region)
+        if service_key == 'object-store':
+            constructor_kwargs = dict(
+                session=self.get_session(),
+                os_options=dict(
+                    service_type=self.get_service_type(service_key),
+                    object_storage_url=endpoint_override,
+                    region_name=self.region))
+        else:
+            constructor_kwargs = dict(
+                session=self.get_session(),
+                service_name=self.get_service_name(service_key),
+                service_type=self.get_service_type(service_key),
+                endpoint_override=endpoint_override,
+                region_name=self.region)
 
         if service_key == 'image':
             # os-client-config does not depend on glanceclient, but if
@@ -334,8 +355,11 @@
             if not endpoint_override:
                 constructor_kwargs['endpoint_override'] = endpoint
         constructor_kwargs.update(kwargs)
-        constructor_kwargs[interface_key] = interface
-        if pass_version_arg:
+        if service_key == 'object-store':
+            constructor_kwargs['os_options'][interface_key] = interface
+        else:
+            constructor_kwargs[interface_key] = interface
+        if pass_version_arg and service_key != 'object-store':
             if not version:
                 version = self.get_api_version(service_key)
             # Temporary workaround while we wait for python-openstackclient
@@ -361,56 +385,6 @@
 
         return client_class(**constructor_kwargs)
 
-    def _get_swift_client(self, client_class, **kwargs):
-        auth_args = self.get_auth_args()
-        auth_version = self.get_api_version('identity')
-        session = self.get_session()
-        token = session.get_token()
-        endpoint = self.get_session_endpoint(service_key='object-store')
-        if not endpoint:
-            return None
-        # If we have a username/password, we want to pass them to
-        # swift - because otherwise it will not re-up tokens appropriately
-        # However, if we only have non-password auth, then get a token
-        # and pass it in
-        swift_kwargs = dict(
-            auth_version=auth_version,
-            preauthurl=endpoint,
-            preauthtoken=token,
-            os_options=dict(
-                region_name=self.get_region_name(),
-                auth_token=token,
-                object_storage_url=endpoint,
-                service_type=self.get_service_type('object-store'),
-                endpoint_type=self.get_interface('object-store'),
-
-            ))
-        if self.config['api_timeout'] is not None:
-            swift_kwargs['timeout'] = float(self.config['api_timeout'])
-
-        # create with password
-        swift_kwargs['user'] = auth_args.get('username')
-        swift_kwargs['key'] = auth_args.get('password')
-        swift_kwargs['authurl'] = auth_args.get('auth_url')
-        os_options = {}
-        if auth_version == '2.0':
-            os_options['tenant_name'] = auth_args.get('project_name')
-            os_options['tenant_id'] = auth_args.get('project_id')
-        else:
-            os_options['project_name'] = auth_args.get('project_name')
-            os_options['project_id'] = auth_args.get('project_id')
-
-        for key in (
-                'user_id',
-                'project_domain_id',
-                'project_domain_name',
-                'user_domain_id',
-                'user_domain_name'):
-            os_options[key] = auth_args.get(key)
-        swift_kwargs['os_options'].update(os_options)
-
-        return client_class(**swift_kwargs)
-
     def get_cache_expiration_time(self):
         if self._openstack_config:
             return self._openstack_config.get_cache_expiration_time()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/os_client_config/config.py 
new/os-client-config-1.26.0/os_client_config/config.py
--- old/os-client-config-1.21.1/os_client_config/config.py      2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/config.py      2017-01-19 
10:32:33.000000000 +0100
@@ -105,12 +105,11 @@
     for k in environkeys:
         newkey = k.split('_', 1)[-1].lower()
         ret[newkey] = os.environ[k]
-    # If the only environ key is region name, don't make a cloud, because
-    # it's being used as a cloud selector
-    if not environkeys or (
-            len(environkeys) == 1 and 'region_name' in ret):
-        return None
-    return ret
+    # If the only environ keys are cloud and region_name, don't return anything
+    # because they are cloud selectors
+    if set(environkeys) - set(['OS_CLOUD', 'OS_REGION_NAME']):
+        return ret
+    return None
 
 
 def _merge_clouds(old_dict, new_dict):
@@ -174,8 +173,9 @@
     def __init__(self, config_files=None, vendor_files=None,
                  override_defaults=None, force_ipv4=None,
                  envvar_prefix=None, secure_files=None,
-                 pw_func=None):
+                 pw_func=None, session_constructor=None):
         self.log = _log.setup_logging(__name__)
+        self._session_constructor = session_constructor
 
         self._config_files = config_files or CONFIG_FILES
         self._secure_files = secure_files or SECURE_FILES
@@ -640,7 +640,7 @@
         # completely broken
         return cloud
 
-    def register_argparse_arguments(self, parser, argv, service_keys=[]):
+    def register_argparse_arguments(self, parser, argv, service_keys=None):
         """Register all of the common argparse options needed.
 
         Given an argparse parser, register the keystoneauth Session arguments,
@@ -659,6 +659,9 @@
                                                     is requested
         """
 
+        if service_keys is None:
+            service_keys = []
+
         # Fix argv in place - mapping any keys with embedded _ in them to -
         _fix_argv(argv)
 
@@ -851,6 +854,11 @@
             # Set to notused rather than None because validate_auth will
             # strip the value if it's actually python None
             config['auth']['token'] = 'notused'
+        elif config['auth_type'] == 'token_endpoint':
+            # Humans have been trained to use a thing called token_endpoint
+            # That it does not exist in keystoneauth is irrelvant- it not
+            # doing what they want causes them sorrow.
+            config['auth_type'] = 'admin_token'
         return loading.get_plugin_loader(config['auth_type'])
 
     def _validate_auth_ksc(self, config, cloud):
@@ -932,6 +940,15 @@
                 winning_value,
             )
 
+            if winning_value:
+                # Prefer the plugin configuration dest value if the value's key
+                # is marked as deprecated.
+                if p_opt.dest is None:
+                    good_name = p_opt.name.replace('-', '_')
+                    config['auth'][good_name] = winning_value
+                else:
+                    config['auth'][p_opt.dest] = winning_value
+
             # See if this needs a prompting
             config = self.option_prompt(config, p_opt)
 
@@ -1082,6 +1099,7 @@
                         config[key] = val
 
         config = self.magic_fixes(config)
+        config = self._normalize_keys(config)
 
         # NOTE(dtroyer): OSC needs a hook into the auth args before the
         #                plugin is loaded in order to maintain backward-
@@ -1124,10 +1142,11 @@
         return cloud_config.CloudConfig(
             name=cloud_name,
             region=config['region_name'],
-            config=self._normalize_keys(config),
+            config=config,
             force_ipv4=force_ipv4,
             auth_plugin=auth_plugin,
-            openstack_config=self
+            openstack_config=self,
+            session_constructor=self._session_constructor,
         )
 
     def get_one_cloud_osc(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/constructors.json 
new/os-client-config-1.26.0/os_client_config/constructors.json
--- old/os-client-config-1.21.1/os_client_config/constructors.json      
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/constructors.json      
2017-01-19 10:32:33.000000000 +0100
@@ -1,5 +1,7 @@
 {
+    "application-catalog": "muranoclient.client.Client",
     "compute": "novaclient.client.Client",
+    "container-infra": "magnumclient.client.Client",
     "database": "troveclient.client.Client",
     "identity": "keystoneclient.client.Client",
     "image": "glanceclient.Client",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/defaults.json 
new/os-client-config-1.26.0/os_client_config/defaults.json
--- old/os-client-config-1.21.1/os_client_config/defaults.json  2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/defaults.json  2017-01-19 
10:32:33.000000000 +0100
@@ -1,7 +1,9 @@
 {
+  "application_catalog_api_version": "1",
   "auth_type": "password",
   "baremetal_api_version": "1",
   "container_api_version": "1",
+  "container_infra_api_version": "1",
   "compute_api_version": "2",
   "database_api_version": "1.0",
   "disable_vendor_agent": {},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/tests/test_cloud_config.py 
new/os-client-config-1.26.0/os_client_config/tests/test_cloud_config.py
--- old/os-client-config-1.21.1/os_client_config/tests/test_cloud_config.py     
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/tests/test_cloud_config.py     
2017-01-19 10:32:33.000000000 +0100
@@ -12,6 +12,7 @@
 
 import copy
 
+from keystoneauth1 import exceptions as ksa_exceptions
 from keystoneauth1 import plugin as ksa_plugin
 from keystoneauth1 import session as ksa_session
 import mock
@@ -157,6 +158,11 @@
         cc.config['volume_api_version'] = '2'
         self.assertEqual('volumev2', cc.get_service_type('volume'))
 
+    def test_volume_override_v3(self):
+        cc = cloud_config.CloudConfig("test1", "region-al", fake_services_dict)
+        cc.config['volume_api_version'] = '3'
+        self.assertEqual('volumev3', cc.get_service_type('volume'))
+
     def test_get_session_no_auth(self):
         config_dict = defaults.get_defaults()
         config_dict.update(fake_services_dict)
@@ -235,6 +241,14 @@
             region_name='region-al',
             service_type='orchestration')
 
+    @mock.patch.object(cloud_config.CloudConfig, 'get_session')
+    def test_session_endpoint_not_found(self, mock_get_session):
+        exc_to_raise = ksa_exceptions.catalog.EndpointNotFound
+        mock_get_session.return_value.get_endpoint.side_effect = exc_to_raise
+        cc = cloud_config.CloudConfig(
+            "test1", "region-al", {}, auth_plugin=mock.Mock())
+        self.assertIsNone(cc.get_session_endpoint('notfound'))
+
     @mock.patch.object(cloud_config.CloudConfig, 'get_api_version')
     @mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
     @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')
@@ -258,26 +272,13 @@
             "test1", "region-al", config_dict, auth_plugin=mock.Mock())
         cc.get_legacy_client('object-store', mock_client)
         mock_client.assert_called_with(
-            preauthtoken=mock.ANY,
-            auth_version=u'3',
-            authurl='http://example.com',
-            key='testpassword',
+            session=mock.ANY,
             os_options={
-                'auth_token': mock.ANY,
                 'region_name': 'region-al',
-                'object_storage_url': 'http://swift.example.com',
-                'user_id': None,
-                'user_domain_name': None,
-                'project_name': 'testproject',
-                'project_domain_name': None,
-                'project_domain_id': None,
-                'project_id': None,
                 'service_type': 'object-store',
+                'object_storage_url': None,
                 'endpoint_type': 'public',
-                'user_domain_id': None
-            },
-            preauthurl='http://swift.example.com',
-            user='testuser')
+            })
 
     @mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
     @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')
@@ -297,26 +298,13 @@
             "test1", "region-al", config_dict, auth_plugin=mock.Mock())
         cc.get_legacy_client('object-store', mock_client)
         mock_client.assert_called_with(
-            preauthtoken=mock.ANY,
-            auth_version=u'2.0',
-            authurl='http://example.com',
-            key='testpassword',
+            session=mock.ANY,
             os_options={
-                'auth_token': mock.ANY,
                 'region_name': 'region-al',
-                'object_storage_url': 'http://swift.example.com',
-                'user_id': None,
-                'user_domain_name': None,
-                'tenant_name': 'testproject',
-                'project_domain_name': None,
-                'project_domain_id': None,
-                'tenant_id': None,
                 'service_type': 'object-store',
+                'object_storage_url': None,
                 'endpoint_type': 'public',
-                'user_domain_id': None
-            },
-            preauthurl='http://swift.example.com',
-            user='testuser')
+            })
 
     @mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
     @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')
@@ -331,26 +319,13 @@
             "test1", "region-al", config_dict, auth_plugin=mock.Mock())
         cc.get_legacy_client('object-store', mock_client)
         mock_client.assert_called_with(
-            preauthtoken=mock.ANY,
-            auth_version=u'2.0',
-            authurl=None,
-            key=None,
+            session=mock.ANY,
             os_options={
-                'auth_token': mock.ANY,
                 'region_name': 'region-al',
-                'object_storage_url': 'http://example.com/v2',
-                'user_id': None,
-                'user_domain_name': None,
-                'tenant_name': None,
-                'project_domain_name': None,
-                'project_domain_id': None,
-                'tenant_id': None,
                 'service_type': 'object-store',
+                'object_storage_url': None,
                 'endpoint_type': 'public',
-                'user_domain_id': None
-            },
-            preauthurl='http://example.com/v2',
-            user=None)
+            })
 
     @mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
     @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')
@@ -366,27 +341,13 @@
             "test1", "region-al", config_dict, auth_plugin=mock.Mock())
         cc.get_legacy_client('object-store', mock_client)
         mock_client.assert_called_with(
-            preauthtoken=mock.ANY,
-            auth_version=u'2.0',
-            authurl=None,
-            key=None,
+            session=mock.ANY,
             os_options={
-                'auth_token': mock.ANY,
                 'region_name': 'region-al',
-                'object_storage_url': 'http://example.com/v2',
-                'user_id': None,
-                'user_domain_name': None,
-                'tenant_name': None,
-                'project_domain_name': None,
-                'project_domain_id': None,
-                'tenant_id': None,
                 'service_type': 'object-store',
+                'object_storage_url': None,
                 'endpoint_type': 'public',
-                'user_domain_id': None
-            },
-            preauthurl='http://example.com/v2',
-            timeout=9.0,
-            user=None)
+            })
 
     @mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
     def test_legacy_client_object_store_endpoint(
@@ -400,26 +361,13 @@
             "test1", "region-al", config_dict, auth_plugin=mock.Mock())
         cc.get_legacy_client('object-store', mock_client)
         mock_client.assert_called_with(
-            preauthtoken=mock.ANY,
-            auth_version=u'2.0',
-            authurl=None,
-            key=None,
+            session=mock.ANY,
             os_options={
-                'auth_token': mock.ANY,
                 'region_name': 'region-al',
-                'object_storage_url': 'http://example.com/swift',
-                'user_id': None,
-                'user_domain_name': None,
-                'tenant_name': None,
-                'project_domain_name': None,
-                'project_domain_id': None,
-                'tenant_id': None,
                 'service_type': 'object-store',
+                'object_storage_url': 'http://example.com/swift',
                 'endpoint_type': 'public',
-                'user_domain_id': None
-            },
-            preauthurl='http://example.com/swift',
-            user=None)
+            })
 
     @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')
     def test_legacy_client_image(self, mock_get_session_endpoint):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/tests/test_config.py 
new/os-client-config-1.26.0/os_client_config/tests/test_config.py
--- old/os-client-config-1.21.1/os_client_config/tests/test_config.py   
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/tests/test_config.py   
2017-01-19 10:32:33.000000000 +0100
@@ -735,7 +735,7 @@
         self.assertEqual(opts.http_timeout, '20')
         with testtools.ExpectedException(AttributeError):
             opts.os_network_service_type
-        cloud = c.get_one_cloud(argparse=opts, verify=False)
+        cloud = c.get_one_cloud(argparse=opts, validate=False)
         self.assertEqual(cloud.config['service_type'], 'network')
         self.assertEqual(cloud.config['interface'], 'admin')
         self.assertEqual(cloud.config['api_timeout'], '20')
@@ -753,10 +753,10 @@
         opts, _remain = parser.parse_known_args(args)
         self.assertEqual(opts.os_service_type, 'network')
         self.assertEqual(opts.os_endpoint_type, 'admin')
-        self.assertEqual(opts.os_network_service_type, None)
-        self.assertEqual(opts.os_network_api_version, None)
+        self.assertIsNone(opts.os_network_service_type)
+        self.assertIsNone(opts.os_network_api_version)
         self.assertEqual(opts.network_api_version, '4')
-        cloud = c.get_one_cloud(argparse=opts, verify=False)
+        cloud = c.get_one_cloud(argparse=opts, validate=False)
         self.assertEqual(cloud.config['service_type'], 'network')
         self.assertEqual(cloud.config['interface'], 'admin')
         self.assertEqual(cloud.config['network_api_version'], '4')
@@ -776,14 +776,14 @@
             parser, args, ['compute', 'network', 'volume'])
         opts, _remain = parser.parse_known_args(args)
         self.assertEqual(opts.os_network_service_type, 'badtype')
-        self.assertEqual(opts.os_compute_service_type, None)
-        self.assertEqual(opts.os_volume_service_type, None)
+        self.assertIsNone(opts.os_compute_service_type)
+        self.assertIsNone(opts.os_volume_service_type)
         self.assertEqual(opts.os_service_type, 'compute')
         self.assertEqual(opts.os_compute_service_name, 'cloudServers')
         self.assertEqual(opts.os_endpoint_type, 'admin')
-        self.assertEqual(opts.os_network_api_version, None)
+        self.assertIsNone(opts.os_network_api_version)
         self.assertEqual(opts.network_api_version, '4')
-        cloud = c.get_one_cloud(argparse=opts, verify=False)
+        cloud = c.get_one_cloud(argparse=opts, validate=False)
         self.assertEqual(cloud.config['service_type'], 'compute')
         self.assertEqual(cloud.config['network_service_type'], 'badtype')
         self.assertEqual(cloud.config['interface'], 'admin')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/tests/test_environ.py 
new/os-client-config-1.26.0/os_client_config/tests/test_environ.py
--- old/os-client-config-1.21.1/os_client_config/tests/test_environ.py  
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/tests/test_environ.py  
2017-01-19 10:32:33.000000000 +0100
@@ -139,11 +139,30 @@
         self.assertRaises(
             exceptions.OpenStackConfigException, c.get_one_cloud, 'envvars')
 
+    def test_incomplete_envvars(self):
+        self.useFixture(
+            fixtures.EnvironmentVariable('NOVA_USERNAME', 'nova'))
+        self.useFixture(
+            fixtures.EnvironmentVariable('OS_USERNAME', 'user'))
+        config.OpenStackConfig(config_files=[self.cloud_yaml],
+                               vendor_files=[self.vendor_yaml])
+        # This is broken due to an issue that's fixed in a subsequent patch
+        # commenting it out in this patch to keep the patch size reasonable
+        # self.assertRaises(
+        #     keystoneauth1.exceptions.auth_plugins.MissingRequiredOptions,
+        #     c.get_one_cloud, 'envvars')
+
     def test_have_envvars(self):
         self.useFixture(
             fixtures.EnvironmentVariable('NOVA_USERNAME', 'nova'))
         self.useFixture(
+            fixtures.EnvironmentVariable('OS_AUTH_URL', 'http://example.com'))
+        self.useFixture(
             fixtures.EnvironmentVariable('OS_USERNAME', 'user'))
+        self.useFixture(
+            fixtures.EnvironmentVariable('OS_PASSWORD', 'password'))
+        self.useFixture(
+            fixtures.EnvironmentVariable('OS_PROJECT_NAME', 'project'))
         c = config.OpenStackConfig(config_files=[self.cloud_yaml],
                                    vendor_files=[self.vendor_yaml])
         cc = c.get_one_cloud('envvars')
@@ -152,6 +171,13 @@
     def test_old_envvars(self):
         self.useFixture(
             fixtures.EnvironmentVariable('NOVA_USERNAME', 'nova'))
+        self.useFixture(
+            fixtures.EnvironmentVariable(
+                'NOVA_AUTH_URL', 'http://example.com'))
+        self.useFixture(
+            fixtures.EnvironmentVariable('NOVA_PASSWORD', 'password'))
+        self.useFixture(
+            fixtures.EnvironmentVariable('NOVA_PROJECT_NAME', 'project'))
         c = config.OpenStackConfig(config_files=[self.cloud_yaml],
                                    vendor_files=[self.vendor_yaml],
                                    envvar_prefix='NOVA_')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/tests/test_init.py 
new/os-client-config-1.26.0/os_client_config/tests/test_init.py
--- old/os-client-config-1.21.1/os_client_config/tests/test_init.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.26.0/os_client_config/tests/test_init.py     
2017-01-19 10:32:33.000000000 +0100
@@ -0,0 +1,33 @@
+#  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 argparse
+
+import os_client_config
+from os_client_config.tests import base
+
+
+class TestInit(base.TestCase):
+    def test_get_config_without_arg_parser(self):
+        cloud_config = os_client_config.get_config(options=None)
+        self.assertIsInstance(
+            cloud_config,
+            os_client_config.cloud_config.CloudConfig
+        )
+
+    def test_get_config_with_arg_parser(self):
+        cloud_config = os_client_config.get_config(
+            options=argparse.ArgumentParser())
+        self.assertIsInstance(
+            cloud_config,
+            os_client_config.cloud_config.CloudConfig
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/vendors/entercloudsuite.json 
new/os-client-config-1.26.0/os_client_config/vendors/entercloudsuite.json
--- old/os-client-config-1.21.1/os_client_config/vendors/entercloudsuite.json   
2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config/vendors/entercloudsuite.json   
2017-01-19 10:32:33.000000000 +0100
@@ -5,6 +5,7 @@
       "auth_url": "https://api.entercloudsuite.com/";
     },
     "identity_api_version": "3",
+    "image_api_version": "1",
     "volume_api_version": "1",
     "regions": [
       "it-mil1",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/vendors/fuga.json 
new/os-client-config-1.26.0/os_client_config/vendors/fuga.json
--- old/os-client-config-1.21.1/os_client_config/vendors/fuga.json      
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.26.0/os_client_config/vendors/fuga.json      
2017-01-19 10:32:33.000000000 +0100
@@ -0,0 +1,15 @@
+{
+  "name": "fuga",
+  "profile": {
+    "auth": {
+      "auth_url": "https://identity.api.fuga.io:5000";,
+      "user_domain_name": "Default",
+      "project_domain_name": "Default"
+    },
+    "regions": [
+      "cystack"
+    ],
+    "identity_api_version": "3",
+    "volume_api_version": "3"
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config/vendors/otc.json 
new/os-client-config-1.26.0/os_client_config/vendors/otc.json
--- old/os-client-config-1.21.1/os_client_config/vendors/otc.json       
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.26.0/os_client_config/vendors/otc.json       
2017-01-19 10:32:33.000000000 +0100
@@ -0,0 +1,13 @@
+{
+  "name": "otc",
+  "profile": {
+    "auth": {
+      "auth_url": "https://iam.%(region_name)s.otc.t-systems.com/v3"
+    },
+    "regions": [
+      "eu-de"
+    ],
+    "identity_api_version": "3",
+    "image_format": "vhd"
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config.egg-info/PKG-INFO 
new/os-client-config-1.26.0/os_client_config.egg-info/PKG-INFO
--- old/os-client-config-1.21.1/os_client_config.egg-info/PKG-INFO      
2016-09-01 21:02:30.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config.egg-info/PKG-INFO      
2017-01-19 10:34:38.000000000 +0100
@@ -1,12 +1,21 @@
 Metadata-Version: 1.1
 Name: os-client-config
-Version: 1.21.1
+Version: 1.26.0
 Summary: OpenStack Client Configuation Library
-Home-page: http://www.openstack.org/
+Home-page: http://docs.openstack.org/developer/os-client-config/
 Author: OpenStack
 Author-email: [email protected]
 License: UNKNOWN
-Description: ================
+Description: ========================
+        Team and repository tags
+        ========================
+        
+        .. image:: http://governance.openstack.org/badges/os-client-config.svg
+            :target: http://governance.openstack.org/reference/tags/index.html
+        
+        .. Change things from this point on
+        
+        ================
         os-client-config
         ================
         
@@ -193,6 +202,19 @@
         location. In case the cert key is not included within the client cert 
file,
         its file location needs to be set via `key`.
         
+        .. code-block:: yaml
+        
+          # clouds.yaml
+          clouds:
+            secure:
+              auth: ...
+              key: /home/myhome/client-cert.key
+              cert: /home/myhome/client-cert.crt
+              cacert: /home/myhome/ca.crt
+            insecure:
+              auth: ...
+              verify: False
+        
         Cache Settings
         --------------
         
@@ -506,4 +528,4 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config.egg-info/SOURCES.txt 
new/os-client-config-1.26.0/os_client_config.egg-info/SOURCES.txt
--- old/os-client-config-1.21.1/os_client_config.egg-info/SOURCES.txt   
2016-09-01 21:02:31.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config.egg-info/SOURCES.txt   
2017-01-19 10:34:38.000000000 +0100
@@ -43,6 +43,7 @@
 os_client_config/tests/test_cloud_config.py
 os_client_config/tests/test_config.py
 os_client_config/tests/test_environ.py
+os_client_config/tests/test_init.py
 os_client_config/tests/test_json.py
 os_client_config/vendors/__init__.py
 os_client_config/vendors/auro.json
@@ -55,9 +56,11 @@
 os_client_config/vendors/dreamhost.json
 os_client_config/vendors/elastx.json
 os_client_config/vendors/entercloudsuite.json
+os_client_config/vendors/fuga.json
 os_client_config/vendors/ibmcloud.json
 os_client_config/vendors/internap.json
 os_client_config/vendors/osic.json
+os_client_config/vendors/otc.json
 os_client_config/vendors/ovh.json
 os_client_config/vendors/rackspace.json
 os_client_config/vendors/switchengines.json
@@ -79,6 +82,8 @@
 releasenotes/source/conf.py
 releasenotes/source/index.rst
 releasenotes/source/mitaka.rst
+releasenotes/source/newton.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
-releasenotes/source/_templates/.placeholder
\ No newline at end of file
+releasenotes/source/_templates/.placeholder
+tools/tox_install.sh
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/os_client_config.egg-info/pbr.json 
new/os-client-config-1.26.0/os_client_config.egg-info/pbr.json
--- old/os-client-config-1.21.1/os_client_config.egg-info/pbr.json      
2016-09-01 21:02:30.000000000 +0200
+++ new/os-client-config-1.26.0/os_client_config.egg-info/pbr.json      
2017-01-19 10:34:38.000000000 +0100
@@ -1 +1 @@
-{"git_version": "42885dc", "is_release": true}
\ No newline at end of file
+{"git_version": "3c47e25", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/releasenotes/source/conf.py 
new/os-client-config-1.26.0/releasenotes/source/conf.py
--- old/os-client-config-1.21.1/releasenotes/source/conf.py     2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/releasenotes/source/conf.py     2017-01-19 
10:32:33.000000000 +0100
@@ -259,3 +259,6 @@
 
 # If true, do not generate a @detailmenu in the "Top" node's menu.
 #texinfo_no_detailmenu = False
+
+# -- Options for Internationalization output ------------------------------
+locale_dirs = ['locale/']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/releasenotes/source/index.rst 
new/os-client-config-1.26.0/releasenotes/source/index.rst
--- old/os-client-config-1.21.1/releasenotes/source/index.rst   2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/releasenotes/source/index.rst   2017-01-19 
10:32:33.000000000 +0100
@@ -9,6 +9,7 @@
    :maxdepth: 2
 
    unreleased
+   newton
    mitaka
 
 Indices and tables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-client-config-1.21.1/releasenotes/source/newton.rst 
new/os-client-config-1.26.0/releasenotes/source/newton.rst
--- old/os-client-config-1.21.1/releasenotes/source/newton.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/os-client-config-1.26.0/releasenotes/source/newton.rst  2017-01-19 
10:32:33.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Newton Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: origin/stable/newton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/setup.cfg 
new/os-client-config-1.26.0/setup.cfg
--- old/os-client-config-1.21.1/setup.cfg       2016-09-01 21:02:31.000000000 
+0200
+++ new/os-client-config-1.26.0/setup.cfg       2017-01-19 10:34:38.000000000 
+0100
@@ -5,7 +5,7 @@
        README.rst
 author = OpenStack
 author-email = [email protected]
-home-page = http://www.openstack.org/
+home-page = http://docs.openstack.org/developer/os-client-config/
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Information Technology
@@ -16,7 +16,7 @@
        Programming Language :: Python :: 2
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.4
+       Programming Language :: Python :: 3.5
 
 [files]
 packages = 
@@ -36,5 +36,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/test-requirements.txt 
new/os-client-config-1.26.0/test-requirements.txt
--- old/os-client-config-1.21.1/test-requirements.txt   2016-09-01 
21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/test-requirements.txt   2017-01-19 
10:32:33.000000000 +0100
@@ -5,6 +5,7 @@
 hacking>=0.10.2,<0.11  # Apache-2.0
 
 coverage>=3.6
+docutils>=0.11,!=0.13.1 # OSI-Approved Open Source, Public Domain
 extras
 fixtures>=0.3.14
 jsonschema>=2.0.0,<3.0.0,!=2.5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/tools/tox_install.sh 
new/os-client-config-1.26.0/tools/tox_install.sh
--- old/os-client-config-1.21.1/tools/tox_install.sh    1970-01-01 
01:00:00.000000000 +0100
+++ new/os-client-config-1.26.0/tools/tox_install.sh    2017-01-19 
10:32:33.000000000 +0100
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# Client constraint file contains this client version pin that is in conflict
+# with installing the client from source. We should remove the version pin in
+# the constraints file before applying it for from-source installation.
+
+CONSTRAINTS_FILE=$1
+shift 1
+
+set -e
+
+# NOTE(tonyb): Place this in the tox enviroment's log dir so it will get
+# published to logs.openstack.org for easy debugging.
+localfile="$VIRTUAL_ENV/log/upper-constraints.txt"
+
+if [[ $CONSTRAINTS_FILE != http* ]]; then
+    CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE
+fi
+# NOTE(tonyb): need to add curl to bindep.txt if the project supports bindep
+curl $CONSTRAINTS_FILE --insecure --progress-bar --output $localfile
+
+pip install -c$localfile openstack-requirements
+
+# This is the main purpose of the script: Allow local installation of
+# the current repo. It is listed in constraints file and thus any
+# install will be constrained and we need to unconstrain it.
+edit-constraints $localfile -- $CLIENT_NAME
+
+pip install -c$localfile -U $*
+exit $?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-client-config-1.21.1/tox.ini 
new/os-client-config-1.26.0/tox.ini
--- old/os-client-config-1.21.1/tox.ini 2016-09-01 21:00:48.000000000 +0200
+++ new/os-client-config-1.26.0/tox.ini 2017-01-19 10:32:33.000000000 +0100
@@ -1,13 +1,17 @@
 [tox]
 minversion = 1.6
-envlist = py34,py27,pypy,pep8
+envlist = py35,py27,pypy,pep8
 skipsdist = True
 
 [testenv]
 usedevelop = True
-install_command = pip install -U {opts} {packages}
+passenv = ZUUL_CACHE_DIR
+          REQUIREMENTS_PIP_LOCATION
+install_command = {toxinidir}/tools/tox_install.sh 
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
 {opts} {packages}
 setenv =
    VIRTUAL_ENV={envdir}
+   BRANCH_NAME=master
+   CLIENT_NAME=os-client-config
 deps = -r{toxinidir}/test-requirements.txt
 commands = python setup.py testr --slowest --testr-args='{posargs}'
 


Reply via email to