def get_app_backend(app_name, token, **kwargs): app = get_app(app_name, token) envs = base.get_envs_from_api(app, token) url = "" backends = [] if envs and "METRICS_PROMETHEUS_HOST" in envs: url = envs["METRICS_PROMETHEUS_HOST"] backends.append(prometheus.AppBackend(app=app, url=url, **kwargs)) if envs and "METRICS_ELASTICSEARCH_HOST" in envs: url = envs["METRICS_ELASTICSEARCH_HOST"] backends.append(elasticsearch.AppBackend(app=app, url=url, **kwargs)) if settings.PROMETHEUS_HOST: url = settings.PROMETHEUS_HOST backends.append(prometheus.AppBackend(app=app, url=url, **kwargs)) if settings.ELASTICSEARCH_HOST: url = settings.ELASTICSEARCH_HOST backends.append(elasticsearch.AppBackend(app=app, url=url, **kwargs)) if not url: app["envs"] = get_envs(app_name, token) if "envs" in app and "ELASTICSEARCH_HOST" in app["envs"]: url = app["envs"]["ELASTICSEARCH_HOST"] backends.append( elasticsearch.AppBackend(app=app, url=url, **kwargs)) return backends
def get_app_backend(app_name, token, **kwargs): app = get_app(app_name, token) envs = base.get_envs_from_api(app, token) url = "" if settings.PROMETHEUS_HOST: url = settings.PROMETHEUS_HOST return prometheus.AppBackend(app=app, url=url, **kwargs) if settings.ELASTICSEARCH_HOST: url = settings.ELASTICSEARCH_HOST return elasticsearch.AppBackend(app=app, url=url, **kwargs) if envs and "METRICS_PROMETHEUS_HOST" in envs: url = envs["METRICS_PROMETHEUS_HOST"] return prometheus.AppBackend(app=app, url=url, **kwargs) if envs and "METRICS_ELASTICSEARCH_HOST" in envs: url = envs["METRICS_ELASTICSEARCH_HOST"] return elasticsearch.AppBackend(app=app, url=url, **kwargs) if not url: app["envs"] = get_envs(app_name, token) if "envs" in app and "ELASTICSEARCH_HOST" in app["envs"]: url = app["envs"]["ELASTICSEARCH_HOST"] return elasticsearch.AppBackend(app=app, url=url, **kwargs)
def test_envs_from_api(self, get_mock): data = { "METRICS_BACKEND": "logstash", "METRICS_ELASTICSEARCH_HOST": "http://easearch.com", "METRICS_LOGSTASH_HOST": "logstash.com" } response_mock = Mock(status_code=200) response_mock.json.return_value = data get_mock.return_value = response_mock app = {"name": "appname", "units": [{"ProcessName": "web"}]} envs = base.get_envs_from_api(app, 'token') self.assertDictEqual(envs, data)
def test_envs_from_api(self, get_mock): data = { "METRICS_BACKEND": "logstash", "METRICS_ELASTICSEARCH_HOST": "http://easearch.com", "METRICS_LOGSTASH_HOST": "logstash.com" } response_mock = Mock(status_code=200) response_mock.json.return_value = data get_mock.return_value = response_mock app = {"name": "appname", "units": [{"ProcessName": "web"}]} envs = base.get_envs_from_api(app, 'token') self.assertDictEqual(envs, data)