summaryrefslogtreecommitdiff
path: root/ick2
diff options
context:
space:
mode:
Diffstat (limited to 'ick2')
-rw-r--r--ick2/controllerapi.py19
-rw-r--r--ick2/versionapi.py14
-rw-r--r--ick2/versionapi_tests.py9
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,
}
)