diff options
Diffstat (limited to 'ick2')
-rw-r--r-- | ick2/controllerapi.py | 19 | ||||
-rw-r--r-- | ick2/versionapi.py | 14 | ||||
-rw-r--r-- | ick2/versionapi_tests.py | 9 |
3 files changed, 32 insertions, 10 deletions
diff --git a/ick2/controllerapi.py b/ick2/controllerapi.py index fe28c29..074fa2e 100644 --- a/ick2/controllerapi.py +++ b/ick2/controllerapi.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017 Lars Wirzenius +# Copyright (C) 2017-2018 Lars Wirzenius # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -20,6 +20,16 @@ class ControllerAPI: def __init__(self, state): self._state = state + self._apis = {} + + def set_blob_service_url(self, url): # pragma: no cover + self.find_missing_route('/version') + api = self._apis.get('/version') + if api: + api.set_blob_service_url(url) + ick2.log.log( + 'info', msg_text='Set blob service url', url=url, + version=api.get_version()) def find_missing_route(self, missing_path): # pragma: no cover apis = { @@ -32,10 +42,13 @@ class ControllerAPI: '/workers': ick2.WorkerAPI, } - routes = [] for path in apis: + if path not in self._apis: + self._apis[path] = apis[path](self._state) + + routes = [] + for path, api in self._apis.items(): self._state.load_resources(path[1:]) - api = apis[path](self._state) routes.extend(api.get_routes(path)) ick2.log.log('info', msg_texg='Found routes', routes=routes) return routes diff --git a/ick2/versionapi.py b/ick2/versionapi.py index fddfdcc..40d1dda 100644 --- a/ick2/versionapi.py +++ b/ick2/versionapi.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017 Lars Wirzenius +# Copyright (C) 2017-2018 Lars Wirzenius # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -18,6 +18,13 @@ import ick2 class VersionAPI(ick2.APIbase): + def __init__(self, state): + super().__init__(state) + self._blob_service_url = None + + def set_blob_service_url(self, url): + self._blob_service_url = url + def get_routes(self, path): # pragma: no cover return [ { @@ -28,7 +35,10 @@ class VersionAPI(ick2.APIbase): ] def get_version(self, **kwargs): - return {'version': ick2.__version__} + return { + 'version': ick2.__version__, + 'blob_service': self._blob_service_url, + } def create(self, body, **kwargs): # pragma: no cover pass diff --git a/ick2/versionapi_tests.py b/ick2/versionapi_tests.py index 500d7e6..143e1cc 100644 --- a/ick2/versionapi_tests.py +++ b/ick2/versionapi_tests.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017 Lars Wirzenius +# Copyright (C) 2017-2018 Lars Wirzenius # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -21,16 +21,15 @@ import ick2 class VersionAPITests(unittest.TestCase): - def create_api(self): - api = ick2.VersionAPI(None) - return api - def test_returns_version_correcly(self): + bloburl = 'https://blobs.example.com' api = ick2.VersionAPI(None) + api.set_blob_service_url(bloburl) response = api.get_version() self.assertEqual( response, { 'version': ick2.__version__, + 'blob_service': bloburl, } ) |