# 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 # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import ick2 class ControllerAPI: def __init__(self, state): self._state = state self._apis = {} def set_apt_server(self, domain): # pragma: no cover self._set_url('set_apt_server', domain) def set_artifact_store_url(self, url): # pragma: no cover self._set_url('set_artifact_store_url', url) def set_auth_url(self, url): # pragma: no cover self._set_url('set_auth_url', url) def set_notify_url(self, url): # pragma: no cover self._set_url('set_notify_url', url) def _set_url(self, what, url): # pragma: no cover api = self._get_version_api() if api: method = getattr(api, what) method(url) ick2.log.log( 'info', msg_text='Set url', what=what, url=url, version=api.get_version()) def _get_version_api(self): # pragma: no cover self.find_missing_route('/version') return self._apis.get('/version') def find_missing_route(self, missing_path): # pragma: no cover apis = { '/version': ick2.VersionAPI, '/builds': ick2.BuildsAPI, '/logs': ick2.LogAPI, '/pipelines': ick2.PipelineAPI, '/projects': ick2.ProjectAPI, '/work': ick2.WorkAPI, '/workers': ick2.WorkerAPI, } 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(): routes.extend(api.get_routes(path)) ick2.log.log('info', msg_texg='Found routes', routes=routes) return routes