From 56b5d6da08f2936ef6cd4233f4d2f2d40d95f7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu> Date: Thu, 16 Mar 2017 10:20:59 +0100 Subject: [PATCH] Pass software name + version in a User-Agent HTTP header This header is included with each request, so that the Manager can handle software version bookkeeping however it sees fit. --- flamenco_worker/__init__.py | 1 + flamenco_worker/cli.py | 3 ++- flamenco_worker/upstream.py | 10 ++++++++++ setup.py | 2 +- update_version.sh | 1 + 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/flamenco_worker/__init__.py b/flamenco_worker/__init__.py index e69de29b..57d34b89 100644 --- a/flamenco_worker/__init__.py +++ b/flamenco_worker/__init__.py @@ -0,0 +1 @@ +__version__ = '2.0-beta10-worker3' diff --git a/flamenco_worker/cli.py b/flamenco_worker/cli.py index 465b98e1..731a8458 100644 --- a/flamenco_worker/cli.py +++ b/flamenco_worker/cli.py @@ -37,10 +37,11 @@ def main(): shutdown_future = loop.create_future() # Piece all the components together. - from . import runner, worker, upstream, upstream_update_queue, may_i_run + from . import runner, worker, upstream, upstream_update_queue, may_i_run, __version__ fmanager = upstream.FlamencoManager( manager_url=confparser.value('manager_url'), + flamenco_worker_version=__version__, ) tuqueue = upstream_update_queue.TaskUpdateQueue( diff --git a/flamenco_worker/upstream.py b/flamenco_worker/upstream.py index 4c19b4c5..97592573 100644 --- a/flamenco_worker/upstream.py +++ b/flamenco_worker/upstream.py @@ -1,5 +1,6 @@ import attr import concurrent.futures +import functools import requests from . import attrs_extra @@ -11,6 +12,7 @@ HTTP_TIMEOUT = 3 # in seconds @attr.s class FlamencoManager: manager_url = attr.ib(validator=attr.validators.instance_of(str)) + flamenco_worker_version = attr.ib(validator=attr.validators.instance_of(str)) session = attr.ib(default=None, init=False) auth = attr.ib(default=None, init=False) # tuple (worker_id, worker_secret) @@ -34,6 +36,10 @@ class FlamencoManager: async def patch(self, *args, loop, **kwargs) -> requests.Response: return await self.client_request('PATCH', *args, loop=loop, **kwargs) + @functools.lru_cache(1) + def user_agent(self): + return 'Flamenco-Worker %s' % self.flamenco_worker_version + async def client_request(self, method, url, *, params=None, data=None, @@ -75,6 +81,10 @@ class FlamencoManager: else: self._log.debug('%s %s with JSON: %s', method, abs_url, json) + if headers is None: + headers = {} + headers['User-Agent'] = self.user_agent() + http_req = partial(self.session.request, method, abs_url, params=params, diff --git a/setup.py b/setup.py index 9f253f9a..dfffd3d9 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ import setuptools if __name__ == '__main__': setuptools.setup( name='flamenco-worker', - version='2.0.0-beta10-worker3', + version='2.0-beta10-worker3', description='Flamenco Worker implementation', author='Sybren A. Stüvel', author_email='sybren@blender.studio', diff --git a/update_version.sh b/update_version.sh index 9c4b2b53..21180780 100755 --- a/update_version.sh +++ b/update_version.sh @@ -6,6 +6,7 @@ if [ -z "$1" ]; then fi sed "s/version='[^']*'/version='$1'/" -i setup.py +sed "s/__version__\s*=\s*'[^']*'/__version__ = '$1'/" -i flamenco_worker/__init__.py git diff echo -- GitLab