Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-swiftclient for 
openSUSE:Factory checked in at 2026-03-24 18:50:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-swiftclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-swiftclient.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-swiftclient"

Tue Mar 24 18:50:47 2026 rev:37 rq:1342250 version:4.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-swiftclient/python-swiftclient.changes    
2025-11-10 19:18:08.874376497 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-swiftclient.new.8177/python-swiftclient.changes
  2026-03-24 18:51:35.205187553 +0100
@@ -1,0 +2,16 @@
+Mon Mar  9 15:58:32 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 4.10.0:
+  * The "v1password" plugin for keystoneauth now returns
+    v3-compatible service catalogs, fixing some issues seen when
+    using v1 auth with openstackclient.
+  * Now tested under Python 3.14.
+  * Removed support for the provider-specific SERVICENET.
+    Explicitly override your storage URLs if you were previously
+    using this feature.
+  * Various other minor improvements.
+  * The ``timeout`` parameter is now included when creating
+    Keystoneauth Sessions.
+  * Various other minor improvements.
+
+-------------------------------------------------------------------

Old:
----
  python_swiftclient-4.8.0.tar.gz

New:
----
  python_swiftclient-4.10.0.tar.gz

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

Other differences:
------------------
++++++ python-swiftclient.spec ++++++
--- /var/tmp/diff_new_pack.tXwwNP/_old  2026-03-24 18:51:35.745209890 +0100
+++ /var/tmp/diff_new_pack.tXwwNP/_new  2026-03-24 18:51:35.745209890 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-swiftclient
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %global pythons %{primary_python}
 Name:           python-swiftclient
-Version:        4.8.0
+Version:        4.10.0
 Release:        0
 Summary:        OpenStack Object Storage API Client Library
 License:        Apache-2.0

++++++ python_swiftclient-4.8.0.tar.gz -> python_swiftclient-4.10.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/.zuul.yaml 
new/python_swiftclient-4.10.0/.zuul.yaml
--- old/python_swiftclient-4.8.0/.zuul.yaml     2025-05-22 09:14:20.000000000 
+0200
+++ new/python_swiftclient-4.10.0/.zuul.yaml    2026-02-25 21:59:50.000000000 
+0100
@@ -10,9 +10,6 @@
     # for installation.
     required-projects:
       - opendev.org/openstack/python-swiftclient
-    vars:
-      # New tox keeps breaking things as of 2023-01
-      ensure_tox_version: '<4'
 
 - job:
     name: swiftclient-functional
@@ -40,10 +37,14 @@
       # on-demand pipeline used to test older (but still supported) versions 
of python,
       # as well as intermediate releases that the openstack-python3-jobs might 
skip
       jobs:
-        - openstack-tox-py37
+        - openstack-tox-py37:
+            nodeset: ubuntu-jammy
+            vars:
+              python_use_pyenv: True
         - openstack-tox-py38
         - openstack-tox-py39
         - openstack-tox-py311
+        - openstack-tox-py312
     check:
       jobs:
         - swiftclient-functional:
@@ -55,13 +56,15 @@
             irrelevant-files: *functest-irrelevant-files
         - tempest-full-py3:
             irrelevant-files: *functest-irrelevant-files
-        - openstack-tox-py313:
+        - openstack-tox-py313
+        - openstack-tox-py314:
             voting: true
     gate:
       jobs:
         - swiftclient-swift-functional
         - swiftclient-functional
-        - openstack-tox-py313:
+        - openstack-tox-py313
+        - openstack-tox-py314:
             voting: true
     post:
       jobs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/AUTHORS 
new/python_swiftclient-4.10.0/AUTHORS
--- old/python_swiftclient-4.8.0/AUTHORS        2025-05-22 09:14:20.000000000 
+0200
+++ new/python_swiftclient-4.10.0/AUTHORS       2026-02-25 21:59:50.000000000 
+0100
@@ -10,6 +10,7 @@
 Andy McCrae ([email protected])
 Anh Tran ([email protected])
 Anne Gentle ([email protected])
+Anthony Roussel ([email protected])
 Ben McCann ([email protected])
 Cedric Brandily ([email protected])
 Chaozhe.Chen ([email protected])
@@ -34,6 +35,7 @@
 David Goetz ([email protected])
 David Kranz ([email protected])
 David Shrewsbury ([email protected])
+David Svenson ([email protected])
 Davide Guerri ([email protected])
 Dean Troyer ([email protected])
 Dirk Mueller ([email protected])
@@ -58,6 +60,7 @@
 howardlee ([email protected])
 Hu Bing ([email protected])
 Ian Cordasco ([email protected])
+Ivan Anfimov ([email protected])
 Ivan Kolodyazhny ([email protected])
 jacky06 ([email protected])
 Jaivish Kothari ([email protected])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/ChangeLog 
new/python_swiftclient-4.10.0/ChangeLog
--- old/python_swiftclient-4.8.0/ChangeLog      2025-05-22 09:14:20.000000000 
+0200
+++ new/python_swiftclient-4.10.0/ChangeLog     2026-02-25 21:59:50.000000000 
+0100
@@ -1,3 +1,25 @@
+4.10.0
+-----
+
+* The "v1password" plugin for keystoneauth now returns v3-compatible service
+  catalogs, fixing some issues seen when using v1 auth with openstackclient.
+
+* Now tested under Python 3.14.
+
+* Removed support for the provider-specific SERVICENET. Explicitly override
+  your storage URLs if you were previously using this feature.
+
+* Various other minor improvements.
+
+
+4.9.0
+-----
+
+* The ``timeout`` parameter is now included when creating Keystoneauth 
Sessions.
+
+* Various other minor improvements.
+
+
 4.8.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/PKG-INFO 
new/python_swiftclient-4.10.0/PKG-INFO
--- old/python_swiftclient-4.8.0/PKG-INFO       2025-05-22 09:14:51.092040000 
+0200
+++ new/python_swiftclient-4.10.0/PKG-INFO      2026-02-25 22:00:39.549790600 
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: python-swiftclient
-Version: 4.8.0
+Version: 4.10.0
 Summary: OpenStack Object Storage API Client Library
 Home-page: https://docs.openstack.org/python-swiftclient/latest/
 Author: OpenStack
@@ -25,6 +25,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Programming Language :: Python :: 3 :: Only
 Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
@@ -40,6 +41,19 @@
 Requires-Dist: keystoneauth1>=3.4.0; extra == "test"
 Requires-Dist: stestr!=3.0.0,>=2.0.0; extra == "test"
 Requires-Dist: openstacksdk>=0.11.0; extra == "test"
+Requires-Dist: python-openstackclient>=3.12.0; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: project-url
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
 
 Python bindings to the OpenStack Object Storage API
 ===================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/doc/manpages/swift.1 
new/python_swiftclient-4.10.0/doc/manpages/swift.1
--- old/python_swiftclient-4.8.0/doc/manpages/swift.1   2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/doc/manpages/swift.1  2026-02-25 
21:59:51.000000000 +0100
@@ -177,7 +177,6 @@
 .PD 0
 .IP "--version              Show program's version number and exit"
 .IP "-h, --help             Show this (or any subcommand if after command) 
help message and exit"
-.IP "-s, --snet             Use SERVICENET internal network"
 .IP "-v, --verbose          Print more info"
 .IP "-q, --quiet            Suppress status output"
 .IP "-A AUTH, --auth=AUTH   URL for obtaining an auth token "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/doc/source/cli/index.rst 
new/python_swiftclient-4.10.0/doc/source/cli/index.rst
--- old/python_swiftclient-4.8.0/doc/source/cli/index.rst       2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/doc/source/cli/index.rst      2026-02-25 
21:59:51.000000000 +0100
@@ -20,7 +20,7 @@
 
 .. code-block:: console
 
-   Usage: swift [--version] [--help] [--os-help] [--snet] [--verbose]
+   Usage: swift [--version] [--help] [--os-help] [--verbose]
                 [--debug] [--info] [--quiet] [--auth <auth_url>]
                 [--auth-version <auth_version> |
                     --os-identity-api-version <auth_version> ]
@@ -95,9 +95,6 @@
 ``--os-help``
   Show OpenStack authentication options.
 
-``-s, --snet``
-  Use SERVICENET internal network.
-
 ``-v, --verbose``
   Print more info.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/python_swiftclient.egg-info/PKG-INFO 
new/python_swiftclient-4.10.0/python_swiftclient.egg-info/PKG-INFO
--- old/python_swiftclient-4.8.0/python_swiftclient.egg-info/PKG-INFO   
2025-05-22 09:14:51.000000000 +0200
+++ new/python_swiftclient-4.10.0/python_swiftclient.egg-info/PKG-INFO  
2026-02-25 22:00:39.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: python-swiftclient
-Version: 4.8.0
+Version: 4.10.0
 Summary: OpenStack Object Storage API Client Library
 Home-page: https://docs.openstack.org/python-swiftclient/latest/
 Author: OpenStack
@@ -25,6 +25,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Programming Language :: Python :: 3 :: Only
 Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
@@ -40,6 +41,19 @@
 Requires-Dist: keystoneauth1>=3.4.0; extra == "test"
 Requires-Dist: stestr!=3.0.0,>=2.0.0; extra == "test"
 Requires-Dist: openstacksdk>=0.11.0; extra == "test"
+Requires-Dist: python-openstackclient>=3.12.0; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: project-url
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
 
 Python bindings to the OpenStack Object Storage API
 ===================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/python_swiftclient.egg-info/SOURCES.txt 
new/python_swiftclient-4.10.0/python_swiftclient.egg-info/SOURCES.txt
--- old/python_swiftclient-4.8.0/python_swiftclient.egg-info/SOURCES.txt        
2025-05-22 09:14:51.000000000 +0200
+++ new/python_swiftclient-4.10.0/python_swiftclient.egg-info/SOURCES.txt       
2026-02-25 22:00:39.000000000 +0100
@@ -57,16 +57,19 @@
 releasenotes/notes/3_8_0_release-bd867fbdb8c895d3.yaml
 releasenotes/notes/3_8_1_release-cb5648c3ae69bde1.yaml
 releasenotes/notes/3_9_0_release-3c293d277f14ec22.yaml
+releasenotes/notes/4_10_0_release-8370f0dcdb8a0e11.yaml
 releasenotes/notes/4_3_0_release.yaml
 releasenotes/notes/4_4_0_release-d731bab5982c160b.yaml
 releasenotes/notes/4_5_0_release-b315d25b889293f2.yaml
 releasenotes/notes/4_6_0_release-92e466eb55b80225.yaml
 releasenotes/notes/4_8_0_release-41ba0852981191c3.yaml
+releasenotes/notes/4_9_0_release-b26426108163280d.yaml
 releasenotes/source/2023.1.rst
 releasenotes/source/2023.2.rst
 releasenotes/source/2024.1.rst
 releasenotes/source/2024.2.rst
 releasenotes/source/2025.1.rst
+releasenotes/source/2025.2.rst
 releasenotes/source/conf.py
 releasenotes/source/current.rst
 releasenotes/source/index.rst
@@ -97,6 +100,7 @@
 test/__init__.py
 test/sample.conf
 test/functional/__init__.py
+test/functional/test_openstackclient.py
 test/functional/test_openstacksdk.py
 test/functional/test_swiftclient.py
 test/unit/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/python_swiftclient.egg-info/pbr.json 
new/python_swiftclient-4.10.0/python_swiftclient.egg-info/pbr.json
--- old/python_swiftclient-4.8.0/python_swiftclient.egg-info/pbr.json   
2025-05-22 09:14:51.000000000 +0200
+++ new/python_swiftclient-4.10.0/python_swiftclient.egg-info/pbr.json  
2026-02-25 22:00:39.000000000 +0100
@@ -1 +1 @@
-{"git_version": "8486005", "is_release": true}
\ No newline at end of file
+{"git_version": "70e1109", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/python_swiftclient.egg-info/requires.txt 
new/python_swiftclient-4.10.0/python_swiftclient.egg-info/requires.txt
--- old/python_swiftclient-4.8.0/python_swiftclient.egg-info/requires.txt       
2025-05-22 09:14:51.000000000 +0200
+++ new/python_swiftclient-4.10.0/python_swiftclient.egg-info/requires.txt      
2026-02-25 22:00:39.000000000 +0100
@@ -10,3 +10,4 @@
 keystoneauth1>=3.4.0
 stestr!=3.0.0,>=2.0.0
 openstacksdk>=0.11.0
+python-openstackclient>=3.12.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/releasenotes/notes/4_10_0_release-8370f0dcdb8a0e11.yaml
 
new/python_swiftclient-4.10.0/releasenotes/notes/4_10_0_release-8370f0dcdb8a0e11.yaml
--- 
old/python_swiftclient-4.8.0/releasenotes/notes/4_10_0_release-8370f0dcdb8a0e11.yaml
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/python_swiftclient-4.10.0/releasenotes/notes/4_10_0_release-8370f0dcdb8a0e11.yaml
       2026-02-25 21:59:51.000000000 +0100
@@ -0,0 +1,17 @@
+---
+features:
+  - |
+    Now tested under Python 3.14.
+
+upgrade:
+  - |
+    Removed support for the provider-specific SERVICENET. Explicitly override
+    your storage URLs if you were previously using this feature.
+
+fixes:
+  - |
+    The "v1password" plugin for keystoneauth now returns v3-compatible service
+    catalogs, fixing some issues seen when using v1 auth with openstackclient.
+
+  - |
+    Various other minor improvements.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/releasenotes/notes/4_9_0_release-b26426108163280d.yaml
 
new/python_swiftclient-4.10.0/releasenotes/notes/4_9_0_release-b26426108163280d.yaml
--- 
old/python_swiftclient-4.8.0/releasenotes/notes/4_9_0_release-b26426108163280d.yaml
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/python_swiftclient-4.10.0/releasenotes/notes/4_9_0_release-b26426108163280d.yaml
        2026-02-25 21:59:51.000000000 +0100
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    The ``timeout`` parameter is now included when creating Keystoneauth 
Sessions.
+
+  - |
+    Various other minor improvements.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/releasenotes/source/2024.1.rst 
new/python_swiftclient-4.10.0/releasenotes/source/2024.1.rst
--- old/python_swiftclient-4.8.0/releasenotes/source/2024.1.rst 2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/releasenotes/source/2024.1.rst        
2026-02-25 21:59:51.000000000 +0100
@@ -3,4 +3,4 @@
 ===========================
 
 .. release-notes::
-   :branch: stable/2024.1
+   :branch: unmaintained/2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/releasenotes/source/2025.2.rst 
new/python_swiftclient-4.10.0/releasenotes/source/2025.2.rst
--- old/python_swiftclient-4.8.0/releasenotes/source/2025.2.rst 1970-01-01 
01:00:00.000000000 +0100
+++ new/python_swiftclient-4.10.0/releasenotes/source/2025.2.rst        
2026-02-25 21:59:51.000000000 +0100
@@ -0,0 +1,6 @@
+===========================
+2025.2 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2025.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/releasenotes/source/index.rst 
new/python_swiftclient-4.10.0/releasenotes/source/index.rst
--- old/python_swiftclient-4.8.0/releasenotes/source/index.rst  2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/releasenotes/source/index.rst 2026-02-25 
21:59:51.000000000 +0100
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    current
+   2025.2
    2025.1
    2024.2
    2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/setup.cfg 
new/python_swiftclient-4.10.0/setup.cfg
--- old/python_swiftclient-4.8.0/setup.cfg      2025-05-22 09:14:51.096040500 
+0200
+++ new/python_swiftclient-4.10.0/setup.cfg     2026-02-25 22:00:39.550790800 
+0100
@@ -30,6 +30,7 @@
        Programming Language :: Python :: 3.11
        Programming Language :: Python :: 3.12
        Programming Language :: Python :: 3.13
+       Programming Language :: Python :: 3.14
        Programming Language :: Python :: 3 :: Only
 
 [files]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/swiftclient/authv1.py 
new/python_swiftclient-4.10.0/swiftclient/authv1.py
--- old/python_swiftclient-4.8.0/swiftclient/authv1.py  2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/swiftclient/authv1.py 2026-02-25 
21:59:51.000000000 +0100
@@ -37,6 +37,7 @@
 """
 
 import datetime
+from datetime import timezone
 import json
 import time
 
@@ -52,22 +53,6 @@
 from keystoneauth1.identity import base
 
 
-# stupid stdlib...
-class _UTC(datetime.tzinfo):
-    def utcoffset(self, dt):
-        return datetime.timedelta(0)
-
-    def tzname(self, dt):
-        return "UTC"
-
-    def dst(self, dt):
-        return datetime.timedelta(0)
-
-
-UTC = _UTC()
-del _UTC
-
-
 class ServiceCatalogV1:
     def __init__(self, auth_url, storage_url, account):
         self.auth_url = auth_url
@@ -85,13 +70,15 @@
         # openstackclient wants this for the `catalog list` and
         # `catalog show` commands
         endpoints = [{
+            'interface': 'public',
             'region': 'default',
-            'publicURL': self._storage_url,
+            'url': self._storage_url,
         }]
         if self.storage_url != self._storage_url:
             endpoints.insert(0, {
+                'interface': 'public',
                 'region': 'override',
-                'publicURL': self.storage_url,
+                'url': self.storage_url,
             })
 
         return [
@@ -104,8 +91,9 @@
                 'name': 'auth',
                 'type': 'identity',
                 'endpoints': [{
+                    'interface': 'public',
                     'region': 'default',
-                    'publicURL': self.auth_url,
+                    'url': self.auth_url,
                 }],
             }
         ]
@@ -166,16 +154,18 @@
             self._expires = None
         # following is used by openstackclient
         self.project_id = None
+        self.domain_id = 'default'
+        self.system_scoped = False
 
     @property
     def expires(self):
         if self._expires is None:
             return None
-        return datetime.datetime.fromtimestamp(self._expires, UTC)
+        return datetime.datetime.fromtimestamp(self._expires, timezone.utc)
 
     @property
     def issued(self):
-        return datetime.datetime.fromtimestamp(self._issued, UTC)
+        return datetime.datetime.fromtimestamp(self._issued, timezone.utc)
 
     @property
     def user_id(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/swiftclient/client.py 
new/python_swiftclient-4.10.0/swiftclient/client.py
--- old/python_swiftclient-4.8.0/swiftclient/client.py  2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/swiftclient/client.py 2026-02-25 
21:59:51.000000000 +0100
@@ -441,7 +441,7 @@
     def getresponse(self):
         """Adapt requests response to httplib interface"""
         self.resp.status = self.resp.status_code
-        old_getheader = self.resp.raw.getheader
+        old_getheader = self.resp.headers.get
 
         def _decode_header(string):
             if string is None:
@@ -490,7 +490,7 @@
     return conn.parsed_url, conn
 
 
-def get_auth_1_0(url, user, key, snet, **kwargs):
+def get_auth_1_0(url, user, key, **kwargs):
     cacert = kwargs.get('cacert', None)
     insecure = kwargs.get('insecure', False)
     cert = kwargs.get('cert')
@@ -514,12 +514,6 @@
     # if we don't have a x-storage-url header and if we get a body.
     if resp.status < 200 or resp.status >= 300 or (body and not url):
         raise ClientException.from_response(resp, 'Auth GET failed', body)
-    if snet:
-        parsed = list(urlparse(url))
-        # Second item in the list is the netloc
-        netloc = parsed[1]
-        parsed[1] = 'snet-' + netloc
-        url = urlunparse(parsed)
 
     token = resp.getheader('x-storage-token', resp.getheader('x-auth-token'))
     return url, token
@@ -577,7 +571,7 @@
 
     filter_kwargs = {}
     service_type = os_options.get('service_type') or 'object-store'
-    endpoint_type = os_options.get('endpoint_type') or 'publicURL'
+    endpoint_type = os_options.get('endpoint_type') or 'public'
     if os_options.get('region_name'):
         filter_kwargs['attr'] = 'region'
         filter_kwargs['filter_value'] = os_options['region_name']
@@ -601,7 +595,7 @@
                     'application_credential_secret'),
                 application_credential_id=os_options.get(
                     'application_credential_id'))
-            sess = ksa_session.Session(auth=auth)
+            sess = ksa_session.Session(auth=auth, timeout=timeout)
             token = sess.get_token()
         except ksauthexceptions.Unauthorized:
             msg = 'Unauthorized. Check application credential id and secret.'
@@ -671,12 +665,6 @@
     N.B. if the optional os_options parameter includes a non-empty
     'object_storage_url' key it will override the default storage url returned
     by the auth service.
-
-    The snet parameter is used for Rackspace's ServiceNet internal network
-    implementation. In this function, it simply adds *snet-* to the beginning
-    of the host name for the returned storage URL. With Rackspace Cloud Files,
-    use of this network path causes no bandwidth charges but requires the
-    client to be running on Rackspace's ServiceNet network.
     """
     session = kwargs.get('session', None)
     auth_version = kwargs.get('auth_version', '1')
@@ -700,7 +688,6 @@
         storage_url, token = get_auth_1_0(auth_url,
                                           user,
                                           key,
-                                          kwargs.get('snet'),
                                           cacert=cacert,
                                           insecure=insecure,
                                           cert=cert,
@@ -1654,7 +1641,7 @@
     """
 
     def __init__(self, authurl=None, user=None, key=None, retries=5,
-                 preauthurl=None, preauthtoken=None, snet=False,
+                 preauthurl=None, preauthtoken=None,
                  starting_backoff=1, max_backoff=64, tenant_name=None,
                  os_options=None, auth_version="1", cacert=None,
                  insecure=False, cert=None, cert_key=None,
@@ -1669,7 +1656,6 @@
         :param preauthtoken: authentication token (if you have already
                              authenticated) note authurl/user/key/tenant_name
                              are not required when specifying preauthtoken
-        :param snet: use SERVICENET internal network default is False
         :param starting_backoff: initial delay between retries (seconds)
         :param max_backoff: maximum delay between retries (seconds)
         :param auth_version: OpenStack auth version, default is 1.0
@@ -1705,7 +1691,6 @@
         self.retries = retries
         self.http_conn = None
         self.attempts = 0
-        self.snet = snet
         self.starting_backoff = starting_backoff
         self.max_backoff = max_backoff
         self.auth_version = auth_version
@@ -1740,7 +1725,7 @@
 
     def get_auth(self):
         self.url, self.token = get_auth(self.authurl, self.user, self.key,
-                                        session=self.session, snet=self.snet,
+                                        session=self.session,
                                         auth_version=self.auth_version,
                                         os_options=self.os_options,
                                         cacert=self.cacert,
@@ -1761,7 +1746,6 @@
         service_key = opts.get('service_key', None)
         return get_auth(self.authurl, service_user, service_key,
                         session=self.session,
-                        snet=self.snet,
                         auth_version=self.auth_version,
                         os_options=service_options,
                         cacert=self.cacert,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/swiftclient/service.py 
new/python_swiftclient-4.10.0/swiftclient/service.py
--- old/python_swiftclient-4.8.0/swiftclient/service.py 2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/swiftclient/service.py        2026-02-25 
21:59:51.000000000 +0100
@@ -163,7 +163,6 @@
 
 def _build_default_global_options():
     return {
-        "snet": False,
         "verbose": 1,
         "debug": False,
         "info": False,
@@ -298,7 +297,6 @@
                       retries=options['retries'],
                       auth_version=options['auth_version'],
                       os_options=options['os_options'],
-                      snet=options['snet'],
                       cacert=options['os_cacert'],
                       insecure=options['insecure'],
                       cert=options['os_cert'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/swiftclient/shell.py 
new/python_swiftclient-4.10.0/swiftclient/shell.py
--- old/python_swiftclient-4.8.0/swiftclient/shell.py   2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/swiftclient/shell.py  2026-02-25 
21:59:51.000000000 +0100
@@ -1727,8 +1727,6 @@
                         help='Show OpenStack authentication options.')
     parser.add_argument('--os_help', action='store_true',
                         help=argparse.SUPPRESS)
-    parser.add_argument('-s', '--snet', action='store_true', dest='snet',
-                        default=False, help='Use SERVICENET internal network.')
     parser.add_argument('-v', '--verbose', action='count', dest='verbose',
                         default=1, help='Print more info.')
     parser.add_argument('--debug', action='store_true', dest='debug',
@@ -1965,7 +1963,7 @@
 
     parser = argparse.ArgumentParser(
         add_help=False, formatter_class=HelpFormatter, usage='''
-%(prog)s [--version] [--help] [--os-help] [--snet] [--verbose]
+%(prog)s [--version] [--help] [--os-help] [--verbose]
              [--debug] [--debug-with-secrets] [--info] [--quiet]
              [--auth <auth_url>] [--auth-version <auth_version> |
                  --os-identity-api-version <auth_version> ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/test/functional/test_openstackclient.py 
new/python_swiftclient-4.10.0/test/functional/test_openstackclient.py
--- old/python_swiftclient-4.8.0/test/functional/test_openstackclient.py        
1970-01-01 01:00:00.000000000 +0100
+++ new/python_swiftclient-4.10.0/test/functional/test_openstackclient.py       
2026-02-25 21:59:51.000000000 +0100
@@ -0,0 +1,62 @@
+# Copyright (c) 2025 NVIDIA
+#
+# 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 os
+import subprocess
+import unittest
+
+from . import TEST_CONFIG
+
+
+class TestOpenStackClient(unittest.TestCase):
+    @classmethod
+    def setUpClass(cls):
+        # NB: Only runs for v1 auth, to exercise our keystoneauth plugin
+        cls.skip_tests = (TEST_CONFIG is None or
+                          TEST_CONFIG['auth_version'] != '1')
+        cls.env = {
+            'OS_AUTH_TYPE': 'v1password',
+            'OS_AUTH_URL': TEST_CONFIG['auth_url'] or '',
+            'OS_USERNAME': TEST_CONFIG['account_username'] or '',
+            'OS_PASSWORD': TEST_CONFIG['password'] or '',
+            'OS_CACERT': TEST_CONFIG['cacert'] or '',
+        }
+        if 'PATH' in os.environ:
+            cls.env['PATH'] = os.environ['PATH']
+
+    def setUp(self):
+        if self.skip_tests:
+            raise unittest.SkipTest('SKIPPING V1-AUTH TESTS')
+
+    def _run(self, *args):
+        subprocess.run(args, env=self.env, check=True)
+
+    def test_token_issue(self):
+        self._run('openstack', 'token', 'issue')
+
+    def test_catalog_list(self):
+        self._run('openstack', 'catalog', 'list')
+
+    def test_catalog_show(self):
+        self._run('openstack', 'catalog', 'show', 'swift')
+        self._run('openstack', 'catalog', 'show', 'object-store')
+        self._run('openstack', 'catalog', 'show', 'auth')
+
+    def test_account_show(self):
+        self._run('openstack', 'object', 'store', 'account', 'show')
+        # If account show works and the openstacksdk tests work, presumably
+        # container/object commands work, too
+
+    # service list? endpoint list?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/test/sample.conf 
new/python_swiftclient-4.10.0/test/sample.conf
--- old/python_swiftclient-4.8.0/test/sample.conf       2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/test/sample.conf      2026-02-25 
21:59:51.000000000 +0100
@@ -1,10 +1,8 @@
 [func_test]
 # sample config
 auth_uri = http://127.0.0.1:8080/auth/v1.0/
-## sample config for Swift with Keystone v2 API
-# For keystone v3 change auth_version to 3 and auth_prefix to /v3/
-#auth_version = 2
-#auth_uri = http://localhost:5000/v2.0/
+# sample config for Swift with Keystone API v3
+#auth_uri = http://localhost:5000/v3/
 
 # You may want to run tests against endpoints that use development certs
 # without installing the CA system-wide. Use this to trust an extra set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/test/unit/test_authv1.py 
new/python_swiftclient-4.10.0/test/unit/test_authv1.py
--- old/python_swiftclient-4.8.0/test/unit/test_authv1.py       2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/test/unit/test_authv1.py      2026-02-25 
21:59:51.000000000 +0100
@@ -163,7 +163,7 @@
         self.assertEqual('object-store', catalog[0].get('type'))
         self.assertIn('endpoints', catalog[0])
         self.assertIn(self.storage_url, [
-            e.get('publicURL') for e in catalog[0]['endpoints']])
+            e.get('url') for e in catalog[0]['endpoints']])
 
     def test_get_access_with_expiry(self):
         auth_plugin = authv1.PasswordPlugin(**self.options)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/test/unit/test_shell.py 
new/python_swiftclient-4.10.0/test/unit/test_shell.py
--- old/python_swiftclient-4.8.0/test/unit/test_shell.py        2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/test/unit/test_shell.py       2026-02-25 
21:59:51.000000000 +0100
@@ -3365,7 +3365,7 @@
     # options that are given default values in code if missing from CLI
     defaults = {'auth-version': '2.0',
                 'service-type': 'object-store',
-                'endpoint-type': 'publicURL'}
+                'endpoint-type': 'public'}
 
     def _build_os_opts(self, keys):
         os_opts = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python_swiftclient-4.8.0/test/unit/test_swiftclient.py 
new/python_swiftclient-4.10.0/test/unit/test_swiftclient.py
--- old/python_swiftclient-4.8.0/test/unit/test_swiftclient.py  2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/test/unit/test_swiftclient.py 2026-02-25 
21:59:51.000000000 +0100
@@ -594,8 +594,11 @@
 
         class FakeKeystoneuth1v3Session:
 
-            def __init__(self, auth):
+            def __init__(self, auth, timeout=None):
                 self.auth = auth
+                self.timeout = None
+                if timeout is not None:
+                    self.timeout = float(timeout)
                 self.token = 'token'
 
             def get_token(self):
@@ -2000,6 +2003,7 @@
         self.assertEqual(
             '\u062a-value', resp.getheader('\u062a-UNICODE'))
         self.assertEqual('', resp.getheader('empty-header'))
+        self.assertEqual('"%s"' % EMPTY_ETAG, resp.getheader('etag'))
         self.assertEqual(
             dict([('\u062a-unicode', '\u062a-value'),
                   ('empty-header', ''),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/test-requirements.txt 
new/python_swiftclient-4.10.0/test-requirements.txt
--- old/python_swiftclient-4.8.0/test-requirements.txt  2025-05-22 
09:14:20.000000000 +0200
+++ new/python_swiftclient-4.10.0/test-requirements.txt 2026-02-25 
21:59:51.000000000 +0100
@@ -5,3 +5,4 @@
 keystoneauth1>=3.4.0  # Apache-2.0
 stestr>=2.0.0,!=3.0.0 # Apache-2.0
 openstacksdk>=0.11.0  # Apache-2.0
+python-openstackclient>=3.12.0  # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python_swiftclient-4.8.0/tox.ini 
new/python_swiftclient-4.10.0/tox.ini
--- old/python_swiftclient-4.8.0/tox.ini        2025-05-22 09:14:20.000000000 
+0200
+++ new/python_swiftclient-4.10.0/tox.ini       2026-02-25 21:59:51.000000000 
+0100
@@ -24,7 +24,7 @@
 commands =
     python -m flake8 swiftclient test
 
-[testenv:{py36,py37,py38}]
+[testenv:{py37,py38,py39}]
 # Drop the use of constraints; most dependencies have dropped support for
 # these versions already, and have updated their metadata to reflect that
 deps = -r{toxinidir}/requirements.txt

Reply via email to