ui: Update Topology metrics dashboard and configuration links (#9002)

* Update Topology metrics dashboard and configuration links

* Fixup tests

* Remove Dashboard Link from settings page

* Removing use of settings Dashboard links
This commit is contained in:
Kenia 2020-10-23 09:44:38 -04:00 committed by GitHub
parent 0b7ee99f23
commit 0733af1a5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 25 deletions

View File

@ -29,9 +29,9 @@
{{/if}}
<div class="link">
{{#if @metricsHref}}
<a class="metrics-link" href={{@metricsHref}} target="_blank" rel="noopener noreferrer">Open metrics Dashboard</a>
<a class="metrics-link" href={{@metricsHref}} target="_blank" rel="noopener noreferrer" data-test-dashboard-anchor>Open metrics Dashboard</a>
{{else}}
<a class="settings-link" href={{href-to 'settings'}}>Configure metrics dashboard</a>
<a class="config-link" href="{{env 'CONSUL_DOCS_URL'}}/agent/options.html#ui_config" target="_blank" rel="noopener noreferrer">Configure metrics dashboard</a>
{{/if}}
</div>
</div>

View File

@ -82,7 +82,7 @@
.metrics-link::before {
@extend %with-exit-mask, %as-pseudo;
}
.settings-link::before {
.config-link::before {
@extend %with-docs-mask, %as-pseudo;
}
}

View File

@ -5,7 +5,7 @@ import { get } from '@ember/object';
export default Route.extend({
data: service('data-source/service'),
settings: service('settings'),
config: service('ui-config'),
model: function(params, transition) {
const dc = this.modelFor('dc').dc.Name;
const nspace = this.modelFor('nspace').nspace.substr(1);
@ -16,7 +16,7 @@ export default Route.extend({
items: this.data.source(
uri => uri`/${nspace}/${dc}/service-instances/for-service/${params.name}`
),
urls: this.settings.findBySlug('urls'),
urls: this.config.get().dashboard_url_template,
chain: null,
proxies: [],
topology: null,

View File

@ -7,9 +7,9 @@
@upstreams={{topology.Upstreams}}
@downstreams={{filter-by 'Datacenter' topology.Datacenter topology.Downstreams}}
@dc={{topology.Datacenter}}
@metricsHref={{render-template urls.service (hash
@metricsHref={{render-template urls.services (hash
Datacenter=dc
Service=(hash Name=item.Service.Service)
Service=items.firstObject
)}}
/>
{{else}}

View File

@ -13,17 +13,6 @@
</p>
</div>
<form>
<fieldset>
<h2>Dashboard Links</h2>
<p>
Add a link to the service detail page in the UI to get quick access to a service-wide metrics dashboard. Enter the dashboard URL into the field below. You can use the placeholders <code>{{'{{Datacenter}}'}}</code> and <code>{{'{{Service.Name}}'}}</code> which will be replaced with the name of the datacenter/service currently being viewed.
</p>
<label class={{concat (if confirming 'confirming') ' type-text'}} id="urls_service">
<span>Link template for services</span>
<input type="text" name="urls[service]" value={{item.urls.service}} onchange={{action 'change'}} onkeypress={{action 'key'}} onkeydown={{action 'key'}} />
<em>e.g. https://grafana.example.com/d/1/consul-service-mesh&amp;orgid=1&amp;datacenter={{'{{Datacenter}}'}}&amp;service-name={{'{{Service.Name}}'}}</em>
</label>
</fieldset>
{{#if (not (env 'CONSUL_UI_DISABLE_REALTIME'))}}
<fieldset data-test-blocking-queries>
<h2>Blocking Queries</h2>

View File

@ -3,7 +3,15 @@ module.exports = ({ appName, environment, rootURL, config }) => `
<meta name="consul-ui/ui_config" content="${
environment === 'production'
? `{{ jsonEncodeAndEscape .UIConfig }}`
: escape(`{"metrics_provider":"prometheus","metrics_proxy_enabled":true}`)
: escape(
JSON.stringify({
metrics_provider: 'prometheus',
metrics_proxy_enabled: true,
dashboard_url_template: {
services: 'https://example.com?{{Service.Name}}&{{Datacenter}}',
},
})
)
}" />
<link rel="icon" type="image/png" href="${rootURL}assets/favicon-32x32.png" sizes="32x32">

View File

@ -103,14 +103,9 @@ Feature: dc / services / show: Show Service
---
Scenario: Given a dashboard template has been set
Given 1 datacenter model with the value "dc1"
And settings from yaml
---
consul:urls:
service: https://consul.io?service-name={{Service.Name}}&dc={{Datacenter}}
---
When I visit the service page for yaml
---
dc: dc1
service: service-0
---
And I see href on the dashboardAnchor like "https://consul.io?service-name=service-0&dc=dc1"
And I see href on the dashboardAnchor like "https://example.com?service-0-with-id&dc1"