mirror of https://github.com/hashicorp/consul
ui: Dev/Test environment configurable metrics (#9345)
In order to test certain setups for our metrics visualizations we need to be able to setup several different `ui_config` settings during development/testing. Generally in the UI, we use the Web Inspector to set various cookie values to configure the UI how we need to see it whilst developing, so this PR: 1. Routes `ui_config` through a dev time only `CONSUL_UI_CONFIG` env variable so we can change it via cookies vars. 2. Adds `CONSUL_METRICS_PROXY_ENABLE`, `CONSUL_METRICS_PROVIDER` and `CONSUL_SERVICE_DASHBOARD_URL` so it's easy to set/unset these only values during development. 3. Adds an acceptance testing step so we can setup `ui_config` to whatever we want during testing. 4. Adds an async 'repository-like' method to the `UiConfig` Service so it feels like a repository - incase we ever need to get this via an HTTP API+blocking query. 5. Vaguely unrelated: we allow cookie values to be set via the location.hash whilst in development only e.g. `/ui/services#CONSUL_METRICS_PROXY_ENABLE=1` so we can link to different setups if we ever need to. All values added here are empty/falsey by default, so in order to see how it was previously you'll need to set the appropriate cookies values, but you can now also easily preview/test the the metrics viz in different/disabled states (with differing `ui_config`)pull/9400/head
parent
bc6138e144
commit
f111d6b3e3
@ -1,15 +1,14 @@
|
||||
import Service from '@ember/service';
|
||||
import Service, { inject as service } from '@ember/service';
|
||||
import { get } from '@ember/object';
|
||||
|
||||
export default class UiConfigService extends Service {
|
||||
config = undefined;
|
||||
@service('env') env;
|
||||
|
||||
async findByPath(path, configuration = {}) {
|
||||
return get(this.get(), path);
|
||||
}
|
||||
|
||||
get() {
|
||||
if (this.config === undefined) {
|
||||
// Load config from our special meta tag for now. Later it might come from
|
||||
// an API instead/as well.
|
||||
var meta = unescape(document.getElementsByName('consul-ui/ui_config')[0].content);
|
||||
this.config = JSON.parse(meta);
|
||||
}
|
||||
return this.config;
|
||||
return this.env.var('CONSUL_UI_CONFIG');
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in new issue