diff options
author | Jamie Lennox <jamielennox@gmail.com> | 2016-05-23 12:24:27 +1000 |
---|---|---|
committer | Dolph Mathews <dolph.mathews@gmail.com> | 2016-06-10 18:22:44 +0000 |
commit | 5cabfc1db0b6eb5f0b113e7b666a168ae05e592b (patch) | |
tree | ddf1425619d3fce26320df5a3699ddc0cf842346 /keystonemiddleware/_common | |
parent | f8c150a9cc9b407b2df87244daf3342177260e90 (diff) | |
download | keystonemiddleware-5cabfc1db0b6eb5f0b113e7b666a168ae05e592b.tar.gz |
Consolidate user agent calculation
Move all the auth_token middleware user_agent calculation into config
and only expose the user_agent property.
Change-Id: Ia6833845262c4de87ef95079de24d264e06f54fc
Diffstat (limited to 'keystonemiddleware/_common')
-rw-r--r-- | keystonemiddleware/_common/config.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/keystonemiddleware/_common/config.py b/keystonemiddleware/_common/config.py index 4e816a2..14480fe 100644 --- a/keystonemiddleware/_common/config.py +++ b/keystonemiddleware/_common/config.py @@ -10,7 +10,10 @@ # License for the specific language governing permissions and limitations # under the License. +import pkg_resources + from oslo_config import cfg +import pbr import six from keystonemiddleware import exceptions @@ -63,7 +66,7 @@ def _conf_values_type_convert(group_name, all_options, conf): class Config(object): - def __init__(self, group_name, all_options, conf): + def __init__(self, name, group_name, all_options, conf): # NOTE(wanghong): If options are set in paste file, all the option # values passed into conf are string type. So, we should convert the # conf value into correct type. @@ -95,8 +98,10 @@ class Config(object): for group, opts in all_options: local_oslo_config.register_opts(opts, group=group) + self.name = name self.oslo_conf_obj = local_oslo_config or cfg.CONF self.group_name = group_name + self._user_agent = None def get(self, name, group=_NOT_SET): # try config from paste-deploy first @@ -130,3 +135,23 @@ class Config(object): return self.oslo_conf_obj.project except cfg.NoSuchOptError: return None + + @property + def user_agent(self): + if not self._user_agent: + project = self.project or '' + + if project: + try: + version = pkg_resources.get_distribution(project).version + except pkg_resources.DistributionNotFound: + version = "unknown" + + project = "%s/%s " % (project, version) + + self._user_agent = "%skeystonemiddleware.%s/%s" % ( + project, + self.name, + pbr.version.VersionInfo('keystonemiddleware').version_string()) + + return self._user_agent |