ui: Hide all metrics for ingress gateway services (#10858)
This commit is contained in:
parent
86de20c975
commit
92c43f9ea3
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
ui: Hide all metrics for ingress gateway services
|
||||
```
|
|
@ -25,8 +25,10 @@
|
|||
@hasMetricsProvider={{@hasMetricsProvider}}
|
||||
@noMetricsReason={{this.noMetricsReason}}
|
||||
>
|
||||
{{#if (and @hasMetricsProvider (not-eq @service.Service.Kind 'ingress-gateway'))}}
|
||||
{{#if (and @hasMetricsProvider this.mainNotIngressService (not-eq item.Kind 'ingress-gateway'))}}
|
||||
{{!-- One of the only places in the app where it's acceptable to default to 'default' namespace --}}
|
||||
<TopologyMetrics::Stats
|
||||
data-test-topology-metrics-downstream-stats
|
||||
@nspace={{or item.Namespace 'default'}}
|
||||
@dc={{item.Datacenter}}
|
||||
@endpoint='downstream-summary-for-service'
|
||||
|
@ -51,7 +53,7 @@
|
|||
@protocol={{@topology.Protocol}}
|
||||
@noMetricsReason={{this.noMetricsReason}}
|
||||
/>
|
||||
{{#if (not-eq @service.Service.Kind 'ingress-gateway')}}
|
||||
{{#if this.mainNotIngressService}}
|
||||
<TopologyMetrics::Stats
|
||||
@nspace={{or @service.Service.Namespace 'default'}}
|
||||
@dc={{@dc}}
|
||||
|
@ -98,7 +100,8 @@
|
|||
@item={{item}}
|
||||
@service={{@service.Service}}
|
||||
>
|
||||
{{#if (and @hasMetricsProvider (not-eq @service.Service.Kind 'ingress-gateway'))}}
|
||||
{{#if (and @hasMetricsProvider this.mainNotIngressService (not-eq item.Kind 'ingress-gateway'))}}
|
||||
{{!-- One of the only places in the app where it's acceptable to default to 'default' namespace --}}
|
||||
<TopologyMetrics::Stats
|
||||
@nspace={{or item.Namespace 'default'}}
|
||||
@dc={{item.Datacenter}}
|
||||
|
|
|
@ -84,6 +84,12 @@ export default class TopologyMetrics extends Component {
|
|||
return items;
|
||||
}
|
||||
|
||||
get mainNotIngressService() {
|
||||
const kind = get(this.args.service.Service, 'Kind') || '';
|
||||
|
||||
return kind !== 'ingress-gateway';
|
||||
}
|
||||
|
||||
// =actions
|
||||
@action
|
||||
setHeight(el, item) {
|
||||
|
@ -98,9 +104,9 @@ export default class TopologyMetrics extends Component {
|
|||
@action
|
||||
calculate() {
|
||||
if (this.args.isRemoteDC) {
|
||||
this.noMetricsReason = 'Unable to fetch metrics for a remote datacenter';
|
||||
this.noMetricsReason = 'remote-dc';
|
||||
} else if (this.args.service.Service.Kind === 'ingress-gateway') {
|
||||
this.noMetricsReason = 'Unable to fetch metrics for a ingress gateway';
|
||||
this.noMetricsReason = 'ingress-gateway';
|
||||
} else {
|
||||
this.noMetricsReason = null;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
{{#if @noMetricsReason}}
|
||||
<span class="topology-metrics-error">
|
||||
Unable to load metrics
|
||||
<span>
|
||||
<Tooltip>{{@noMetricsReason}}</Tooltip>
|
||||
</span>
|
||||
</span>
|
||||
{{#if (or @noMetricsReason @error)}}
|
||||
<span data-test-topology-metrics-status class="topology-metrics-status-error">
|
||||
{{#if (eq @noMetricsReason 'ingress-gateway')}}
|
||||
{{t "components.consul.topology-metrics.status.ingress-gateway"}}
|
||||
{{else if (eq @noMetricsReason 'remote-dc')}}
|
||||
{{t "components.consul.topology-metrics.status.error"}}
|
||||
<span
|
||||
{{tooltip (t "components.consul.topology-metrics.status.remote-dc")}}
|
||||
/>
|
||||
{{else if @error}}
|
||||
<span class="topology-metrics-error">Unable to load metrics</span>
|
||||
{{else}}
|
||||
<span class="topology-metrics-loader">Loading Metrics</span>
|
||||
{{t "components.consul.topology-metrics.status.error"}}
|
||||
{{/if}}
|
||||
</span>
|
||||
{{else}}
|
||||
<span class="topology-metrics-status-loader">{{t "components.consul.topology-metrics.status.loading"}}</span>
|
||||
{{/if}}
|
|
@ -1,5 +1,5 @@
|
|||
.topology-metrics-error,
|
||||
.topology-metrics-loader {
|
||||
.topology-metrics-status-error,
|
||||
.topology-metrics-status-loader {
|
||||
font-weight: normal;
|
||||
font-size: 0.875rem;
|
||||
color: $gray-500;
|
||||
|
@ -13,6 +13,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
span.topology-metrics-loader::after {
|
||||
span.topology-metrics-status-loader::after {
|
||||
@extend %with-loading-icon, %as-pseudo;
|
||||
}
|
||||
|
|
|
@ -72,6 +72,9 @@ ${
|
|||
const allowed = hasPerms ? false : fake.random.boolean();
|
||||
return `
|
||||
{
|
||||
${(Math.random(1) > 0.3) ? `
|
||||
"Kind": "${fake.helpers.randomize(['mesh-gateway', 'ingress-gateway', 'terminating-gateway', ''])}",
|
||||
` : ''}
|
||||
"Name": "${item.Name}",
|
||||
"Datacenter": "${item.Datacenter}",
|
||||
"Namespace": "${item.Namespace}",
|
||||
|
@ -98,6 +101,9 @@ ${
|
|||
const allowed = hasPerms ? false : fake.random.boolean();
|
||||
return `
|
||||
{
|
||||
${(Math.random(1) > 0.3) ? `
|
||||
"Kind": "${fake.helpers.randomize(['mesh-gateway', 'ingress-gateway', 'terminating-gateway', ''])}",
|
||||
` : ''}
|
||||
"Name": "${item.Name}",
|
||||
"Datacenter": "${item.Datacenter}",
|
||||
"Namespace": "${item.Namespace}",
|
||||
|
|
|
@ -33,4 +33,51 @@ Feature: dc / services / show / topology / stats
|
|||
---
|
||||
And I see topology on the tabs
|
||||
And I see the "[data-test-topology-metrics-stats]" element
|
||||
Scenario: Given metrics is enabled, metrics stats are disabled for an ingress gateway Topology
|
||||
Given 1 datacenter model with the value "dc1"
|
||||
Given a "prometheus" metrics provider
|
||||
And 1 node models
|
||||
And 1 service model from yaml
|
||||
---
|
||||
- Service:
|
||||
Name: ingress-gateway
|
||||
Kind: ingress-gateway
|
||||
ID: ingress-gateway-with-id
|
||||
---
|
||||
When I visit the service page for yaml
|
||||
---
|
||||
dc: dc1
|
||||
service: ingress-gateway
|
||||
---
|
||||
And I see topology on the tabs
|
||||
And I don't see the "[data-test-topology-metrics-stats]" element
|
||||
And I see the "[data-test-topology-metrics-status]" element
|
||||
Scenario: Given metrics is enabled, metric stats are disabled for ingress gateway as downstream services
|
||||
Given 1 datacenter model with the value "dc1"
|
||||
Given a "prometheus" metrics provider
|
||||
And 1 node models
|
||||
And 1 service model from yaml
|
||||
---
|
||||
- Service:
|
||||
Name: service-0
|
||||
ID: service-0-with-id
|
||||
---
|
||||
And 1 topology model from yaml
|
||||
---
|
||||
Upstreams: []
|
||||
Downstreams:
|
||||
- Name: db
|
||||
Namespace: @namespace
|
||||
Datacenter: dc1
|
||||
Intention: {}
|
||||
Kind: ingress-gateway
|
||||
---
|
||||
When I visit the service page for yaml
|
||||
---
|
||||
dc: dc1
|
||||
service: service-0
|
||||
---
|
||||
And I see topology on the tabs
|
||||
And I see the "[data-test-sparkline]" element
|
||||
And I don't see the "[data-test-topology-metrics-downstream-stats]" element
|
||||
|
||||
|
|
|
@ -160,9 +160,13 @@ topology-metrics:
|
|||
header: No traffic
|
||||
body: Add "{upstream}" as an explicit upstream of "{downstream}" or set the "{downstream}" proxy to "transparent" mode to enable traffic.
|
||||
action: Documentation
|
||||
status:
|
||||
error: Unable to load metrics
|
||||
remote-dc: Unable to fetch metrics for a remote datacenter
|
||||
loading: Loading metrics
|
||||
ingress-gateway: Viewing metrics for Ingress Gateways is not currently supported in the UI.
|
||||
source:
|
||||
header: This is not a registered Consul service. It’s a routing configuration that routes traffic to real services in Consul. For more information, read our documentation.
|
||||
menu-title: About Routing Configs
|
||||
links:
|
||||
documentation: Documentation
|
||||
|
||||
|
|
Loading…
Reference in New Issue