bbd85fded7
The current default of "keystoneauth1" doesn't convey enough information, and additionally when the user of a Session supplies their own user agent, it stomps on any notion of keystoneauth1 being there. Per RFC 7231 Section 5.5.3 (https://tools.ietf.org/html/rfc7231#section-5.5.3), user agents should basically be a space-delimited list of product/version pairs in decreasing order of importance. This change makes the default user agent something like the following: keystoneauth1/2.1.1 python-requests/2.8.1 CPython/3.4.1+ Due to the decreasing order of importance, when a user creates a Session with something like Session(user_agent="my-product/1.0"), 'my-product/1.0' is then prepended to the above list. The only time this is not the case is if a user agent is provided directly to Session.request. In that case, the User-Agent header is set to whatever the provided argument is, verbatim. This was a change we had originally made to the Transport class in python-openstacksdk (I80ca26fff3f2522b8232472676396abb86166f91), but upon moving to keystoneauth instead of our own implementation, it was noticed that we lost this, and keystoneauth is a better place for this than for us to re-implement it inside of python-openstacksdk. Change-Id: I46f336f25fac5b524547bb13e4f5438ebf1d4320
17 lines
639 B
Python
17 lines
639 B
Python
# 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 pbr.version
|
|
|
|
|
|
__version__ = pbr.version.VersionInfo('keystoneauth1').version_string()
|