ui: Add more explanatory texts for empty states (#12354)

* ui: Add more explanatory texts for empty states

* Change all template "Read the guide"s

* Add missing htmlSafe

* Remove the stuff I commented out to try and grok the hairy rebase

* Changelog

* More rebased yaml weirdness plus added node:read
This commit is contained in:
John Cowen 2022-04-11 12:49:59 +01:00 committed by GitHub
parent 9a81a77264
commit de234b3aa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 385 additions and 196 deletions

3
.changelog/12354.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:improvement
ui: Include details on ACL policy dispositions required for unauthorized views
```

View File

@ -72,14 +72,15 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
Welcome to Lock Sessions {{t 'routes.dc.nodes.show.sessions.empty.header'
items=items.length
}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.nodes.show.sessions.empty.body'
Consul provides a session mechanism which can be used to build distributed locks. Sessions act as a binding layer between nodes, health checks, and key/value data. There are currently no lock sessions present, or you may not have permission to view lock sessions. htmlSafe=true
</p> }}
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
@ -96,7 +97,7 @@ as |route|>
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/tutorials/consul/distributed-semaphore" @href="{{env 'CONSUL_DOCS_LEARN_URL'}}/tutorials/consul/distributed-semaphore"
@external={{true}} @external={{true}}
> >
Read the guide Take the tutorial
</Action> </Action>
</li> </li>
</BlockSlot> </BlockSlot>

View File

@ -90,21 +90,16 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.auth-methods.index.empty.header'
No auth methods found items=items.length
{{else}} }}
Welcome to Auth Methods
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.auth-methods.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No auth methods where found matching that search, or you may not have access to view the auth methods you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any auth methods, or you may not have access to view auth methods yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">

View File

@ -41,12 +41,14 @@ as |items|}}
{{else}} {{else}}
<EmptyState> <EmptyState>
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2>No binding rules</h2> <h2>
{{t 'routes.dc.acls.auth-methods.show.binding-rules.index.empty.header'}}
</h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.acls.auth-methods.show.binding-rules.index.empty.body'
Binding rules allow an operator to express a systematic way of automatically linking roles and service identities to newly created tokens without operator intervention. htmlSafe=true
</p> }}
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">

View File

@ -13,12 +13,14 @@ as |item|}}
{{else}} {{else}}
<EmptyState> <EmptyState>
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2>No namespace rules</h2> <h2>
{{t 'routes.dc.acls.auth-methods.show.nspace-rules.index.empty.header'}}
</h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.acls.auth-methods.show.nspace-rules.index.empty.body'
A set of rules that can control which namespace tokens created via this auth method will be created within. Unlike binding rules, the first matching namespace rule wins. htmlSafe=true
</p> }}
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">

View File

@ -99,28 +99,23 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.acls.policies.index.empty.header'
No policies found items=items.length
{{else}} }}
Welcome to Policies
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.acls.policies.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No policies where found matching that search, or you may not have access to view the policies you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any policies, or you may not have access to view policies yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/policy" rel="noopener noreferrer" target="_blank">Documentation on policies</a> <a href="{{env 'CONSUL_DOCS_URL'}}/commands/acl/policy" rel="noopener noreferrer" target="_blank">Documentation on policies</a>
</li> </li>
<li class="learn-link"> <li class="learn-link">
<a href="{{env 'CONSUL_LEARN_URL'}}/consul/security-networking/managing-acl-policies" rel="noopener noreferrer" target="_blank">Read the guide</a> <a href="{{env 'CONSUL_LEARN_URL'}}/consul/security-networking/managing-acl-policies" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
</li> </li>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>

View File

@ -91,21 +91,16 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.acls.roles.index.empty.header'
No roles found items=items.length
{{else}} }}
Welcome to Roles
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.acls.roles.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No roles where found matching that search, or you may not have access to view the roles you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any roles, or you may not have access to view roles yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">

View File

@ -110,21 +110,16 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.acls.tokens.index.empty.header'
No tokens found items=items.length
{{else}} }}
Welcome to ACL Tokens
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.acls.tokens.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No tokens where found matching that search, or you may not have access to view the tokens you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any tokens, or you may not have access to view tokens yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -106,28 +106,23 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.intentions.index.empty.header'
No intentions found items=items.length
{{else}} }}
Welcome to Intentions
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.intentions.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No intentions where found matching that search, or you may not have access to view the intentions you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any intentions, or you may not have access to view intentions yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a> <a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a>
</li> </li>
<li class="learn-link"> <li class="learn-link">
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Read the guide</a> <a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
</li> </li>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>

View File

@ -178,28 +178,23 @@ as |sort filters parent items|}}
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.kv.index.empty.header'
No K/V pairs found items=items.length
{{else}} }}
Welcome to Key/Value
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.kv.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No K/V pairs where found matching that search, or you may not have access to view the K/V pairs you are searching for. htmlSafe=true
{{else}} }}
You don't have any K/V pairs, or you may not have access to view K/V pairs yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">
<a href="{{env 'CONSUL_DOCS_URL'}}/agent/kv" rel="noopener noreferrer" target="_blank">Documentation on K/V</a> <a href="{{env 'CONSUL_DOCS_URL'}}/agent/kv" rel="noopener noreferrer" target="_blank">Documentation on K/V</a>
</li> </li>
<li class="learn-link"> <li class="learn-link">
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv" rel="noopener noreferrer" target="_blank">Read the guide</a> <a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
</li> </li>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>

View File

@ -95,17 +95,16 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.nodes.index.empty.header'
No nodes found items=items.length
{{else}} }}
Welcome to Nodes
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.nodes.index.empty.body'
There don't seem to be any registered nodes, or you may not have access to view nodes yet. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -63,9 +63,10 @@ as |route|>
<collection.Empty> <collection.Empty>
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t "routes.dc.nodes.show.services.empty"
This node has no service instances{{#if (gt items.length 0)}} matching that search{{/if}}. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -105,21 +105,16 @@ as |sort filters items partition nspace|}}
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.services.index.empty.header'
No services found items=items.length
{{else}} }}
Welcome to Services
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.services.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No services where found matching that search, or you may not have access to view the services you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any registered services, or you may not have access to view services yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">
@ -127,7 +122,7 @@ as |sort filters items partition nspace|}}
@href="{{env 'CONSUL_DOCS_URL'}}/commands/services" @href="{{env 'CONSUL_DOCS_URL'}}/commands/services"
@external={{true}} @external={{true}}
> >
Documentation on services Documentation on Services
</Action> </Action>
</li> </li>
<li class="learn-link"> <li class="learn-link">
@ -135,7 +130,7 @@ as |sort filters items partition nspace|}}
@href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/services" @href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/services"
@external={{true}} @external={{true}}
> >
Read the guide Take the tutorial
</Action> </Action>
</li> </li>
</BlockSlot> </BlockSlot>

View File

@ -7,9 +7,7 @@ as |route|>
as |item proxy|}} as |item proxy|}}
<div class="tab-section"> <div class="tab-section">
{{#if (gt proxy.ServiceProxy.Expose.Paths.length 0)}} {{#if (gt proxy.ServiceProxy.Expose.Paths.length 0)}}
<p> {{t 'routes.dc.services.instance.exposedpaths.intro' htmlSafe=true}}
The following list shows individual HTTP paths exposed through Envoy for external services like Prometheus. Read more about this in our <Action @href={{concat (env 'CONSUL_DOCS_URL') '/connect/registration/service-registration#expose-paths-configuration-reference'}} @external={{true}}>documentation</Action>.
</p>
<Consul::ExposedPath::List <Consul::ExposedPath::List
@items={{proxy.ServiceProxy.Expose.Paths}} @items={{proxy.ServiceProxy.Expose.Paths}}
@address={{or item.Service.Address item.Node.Address}} @address={{or item.Service.Address item.Node.Address}}
@ -17,9 +15,7 @@ as |item proxy|}}
{{else}} {{else}}
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.services.instance.exposedpaths.empty.body' htmlSafe=true}}
There are no individual HTTP paths exposed through Envoy for external services like Prometheus. Read more about this in our <Action @href={{concat (env 'CONSUL_DOCS_URL') '/connect/registration/service-registration#expose-paths-configuration-reference'}} @external={{true}}>documentation</Action>.
</p>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
{{/if}} {{/if}}

View File

@ -53,19 +53,14 @@ as |route|>
</h3> </h3>
</notice.Header> </notice.Header>
<notice.Body> <notice.Body>
<p> {{t "routes.dc.services.instance.upstreams.tproxy-mode.body"
{{t "routes.dc.services.instance.upstreams.tproxy-mode.body"}} htmlSafe=true
</p> }}
</notice.Body> </notice.Body>
<notice.Footer> <notice.Footer>
<p> {{t "routes.dc.services.instance.upstreams.tproxy-mode.footer"
<Action htmlSafe=true
@href={{concat (env 'CONSUL_DOCS_URL') '/connect/transparent-proxy'}} }}
@external={{true}}
>
{{t "routes.dc.services.instance.upstreams.tproxy-mode.footer"}}
</Action>
</p>
</notice.Footer> </notice.Footer>
</Notice> </Notice>
{{/if}} {{/if}}
@ -87,9 +82,10 @@ as |route|>
<collection.Empty> <collection.Empty>
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t "routes.dc.services.instance.upstreams.empty"
This service has no upstreams{{#if (gt items.length 0)}} matching that search{{/if}}. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -75,9 +75,10 @@ as |sort filters items proxyMeta|}}
<collection.Empty> <collection.Empty>
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t "routes.dc.services.show.instances.empty"
There are no instances{{#if (gt items.length 0)}} matching that search{{/if}}. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -94,28 +94,23 @@ as |route|>
> >
<BlockSlot @name="header"> <BlockSlot @name="header">
<h2> <h2>
{{#if (gt items.length 0)}} {{t 'routes.dc.services.intentions.index.empty.header'
No intentions found items=items.length
{{else}} }}
Welcome to Intentions
{{/if}}
</h2> </h2>
</BlockSlot> </BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.services.intentions.index.empty.body'
{{#if (gt items.length 0)}} items=items.length
No intentions where found matching that search, or you may not have access to view the intentions you are searching for. htmlSafe=true
{{else}} }}
There don't seem to be any intentions, or you may not have access to view intentions yet.
{{/if}}
</p>
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
<li class="docs-link"> <li class="docs-link">
<a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a> <a href="{{env 'CONSUL_DOCS_URL'}}/commands/intention" rel="noopener noreferrer" target="_blank">Documentation on intentions</a>
</li> </li>
<li class="learn-link"> <li class="learn-link">
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Read the guide</a> <a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/connect" rel="noopener noreferrer" target="_blank">Take the tutorial</a>
</li> </li>
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>

View File

@ -56,10 +56,6 @@ as |route|>
@filter={{filters}} @filter={{filters}}
/> />
{{/if}} {{/if}}
<p>
The following services may receive traffic from external services through this gateway. Learn more about configuring gateways in our
<a href="{{env 'CONSUL_DOCS_URL'}}/connect/terminating-gateway" target="_blank" rel="noopener noreferrer">step-by-step guide</a>.
</p>
<DataCollection <DataCollection
@type="service" @type="service"
@sort={{sort.value}} @sort={{sort.value}}
@ -68,6 +64,9 @@ as |route|>
@items={{items}} @items={{items}}
as |collection|> as |collection|>
<collection.Collection> <collection.Collection>
{{t "routes.dc.services.show.services.intro"
htmlSafe=true
}}
<Consul::Service::List <Consul::Service::List
@nspace={{or route.params.nspace route.model.user.token.Namespace 'default'}} @nspace={{or route.params.nspace route.model.user.token.Namespace 'default'}}
@partition={{or route.params.partition route.model.user.token.Partition 'default'}} @partition={{or route.params.partition route.model.user.token.Partition 'default'}}
@ -78,9 +77,10 @@ as |route|>
<collection.Empty> <collection.Empty>
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t "routes.dc.services.show.services.empty"
There are no linked services{{#if (gt items.length 0)}} matching that search{{/if}}. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -7,10 +7,15 @@ as |route|>
<TagList @item={{hash Tags=tags}} /> <TagList @item={{hash Tags=tags}} />
{{else}} {{else}}
<EmptyState> <EmptyState>
<BlockSlot @name="header">
<h2>
{{t 'routes.dc.services.show.tags.empty.header'}}
</h2>
</BlockSlot>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t 'routes.dc.services.show.tags.empty.body'
There are no tags. htmlSafe=true
</p> }}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
{{/if}} {{/if}}

View File

@ -82,9 +82,10 @@ as |route|>
<collection.Empty> <collection.Empty>
<EmptyState> <EmptyState>
<BlockSlot @name="body"> <BlockSlot @name="body">
<p> {{t "routes.dc.services.show.upstreams.empty"
There are no upstreams{{#if (gt items.length 0)}} matching that search{{/if}}. items=items.length
</p> htmlSafe=true
}}
</BlockSlot> </BlockSlot>
</EmptyState> </EmptyState>
</collection.Empty> </collection.Empty>

View File

@ -18,12 +18,46 @@ dc:
title: License title: License
nodes: nodes:
index:
empty:
header: |
{items, select,
0 {Welcome to Nodes}
other {No Nodes found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any registered Nodes in this Consul cluster}
other {No Nodes were found matching your search}
}, or you may not have <code>service:read</code> and <code>node:read</code> permissions access to this view.
</p>
show: show:
rtt:
title: Round Trip Time
metadata:
title: Metadata
sessions:
title: Lock Sessions
header: Welcome to Lock Sessions
body: |
<p>
Consul provides a session mechanism which can be used to build distributed locks. Sessions act as a binding layer between Nodes, Health Checks, and Key/Value data. There are currently no Lock Sessions present, or you may not have <code>key:read</code> or <code>session:read</code> permissions.
</p>
services:
title: Service Instances
empty: |
<p>
This Node has no Service Instances{items, select,
0 {}
other { matching that search}
}.
</p>
healthchecks: healthchecks:
title: Health Checks title: Health Checks
empty: | empty: |
<p> <p>
This node has no health checks{items, select, This Node has no Health Checks{items, select,
0 {} 0 {}
other { matching that search} other { matching that search}
}. }.
@ -35,14 +69,64 @@ dc:
This node has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable. This node has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable.
</p> </p>
services: services:
title: Service Instances index:
rtt: empty:
title: Round Trip Time header: |
sessions: {items, select,
title: Lock Sessions 0 {Welcome to Services}
metadata: other {No Services found}
title: Metadata }
services: body: |
<p>
{items, select,
0 {There don't seem to be any registered services in this Consul cluster}
other {No Services were found matching your search}
}, or you may not have <code>service:read</code> and <code>node:read</code> access to this view. Use Terraform, Kubernetes CRDs, Vault, or the Consul CLI to register Services.
</p>
instance:
exposedpaths:
intro: |
<p>
The following list shows individual HTTP paths exposed through Envoy for external services like Prometheus. Read more about this in our <a href="{CONSUL_DOCS_URL}/connect/registration/service-registration#expose-paths-configuration-reference" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
empty:
body: |
<p>
There are no individual HTTP paths exposed through Envoy for external services like Prometheus. Read more about this in our <a href="{CONSUL_DOCS_URL}/connect/registration/service-registration#expose-paths-configuration-reference" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
healthchecks:
empty: |
<p>
This instance has no health checks{items, select,
0 {}
other { matching that search}
}.
</p>
critical-serf-notice:
header: Failing serf check
body: |
<p>
This instance has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable.
</p>
upstreams:
tproxy-mode:
header: Transparent proxy mode
body: |
<p>
The upstreams listed on this page have been defined in a proxy registration. There may be more upstreams, though, as "transparent" mode is enabled on this proxy.
</p>
footer: |
<p>
<a href="{CONSUL_DOCS_URL}/connect/transparent-proxy" target="_blank" rel="noopener noreferrer">Read the documentation
</p>
empty: |
<p>
This Service Instance has no Upstreams{items, select,
0 {}
other { matching that search}
}.
</p>
show: show:
topology: topology:
notices: notices:
@ -87,30 +171,168 @@ dc:
<p> <p>
<a href="{CONSUL_DOCS_URL}/security/acl/acl-system#configuring-acls" target="_blank" rel="noopener noreferrer">Read the documentation</a> <a href="{CONSUL_DOCS_URL}/security/acl/acl-system#configuring-acls" target="_blank" rel="noopener noreferrer">Read the documentation</a>
</p> </p>
intentions:
index:
empty:
header: |
{items, select,
0 {Welcome to Intentions}
other {No Intentions found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Intentions in this Consul cluster}
other {No Intentions were found matching your search}
}, or you may not have <code>intentions:read</code> permissions access to this view.
</p>
instances:
empty: |
<p>
This Service has no Instances{items, select,
0 {}
other { matching that search}
}.
</p>
services:
intro: |
<p>
The following services may receive traffic from external services through this gateway. Learn more about configuring gateways in our <a href="{CONSUL_DOCS_URL}/connect/terminating-gateway" target="_blank" rel="noopener noreferrer">step-by-step guide</a>.
</p>
empty: |
<p>
There are no Services{items, select,
0 {}
other { matching that search}
}.
</p>
tags:
empty:
header: Welcome to Tags
body: |
<p>
There are no tags for this Service.
</p>
upstreams: upstreams:
intro: | intro: |
<p> <p>
Upstreams are services that may receive traffic from this gateway. If you are not using Consul DNS, please make sure your <code>Host:</code> header uses the correct domain name for the gateway to correctly proxy to its upstreams. Learn more about configuring gateways in our <a href="{CONSUL_DOCS_URL}/connect/ingress-gateways" target="_blank" rel="noopener noreferrer">documentation</a>. Upstreams are services that may receive traffic from this gateway. If you are not using Consul DNS, please make sure your <code>Host:</code> header uses the correct domain name for the gateway to correctly proxy to its upstreams. Learn more about configuring gateways in our <a href="{CONSUL_DOCS_URL}/connect/ingress-gateways" target="_blank" rel="noopener noreferrer">documentation</a>.
</p> </p>
instance:
healthchecks:
empty: | empty: |
<p> <p>
This instance has no health checks{items, select, This Service has no Upstreams{items, select,
0 {} 0 {}
other { matching that search} other { matching that search}
}. }.
</p> </p>
critical-serf-notice:
header: Failing serf check
body: |
<p>
This instance has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable.
</p>
upstreams:
tproxy-mode:
header: Transparent proxy mode
body: The upstreams listed on this page have been defined in a proxy registration. There may be more upstreams, though, as "transparent" mode is enabled on this proxy.
footer: Read the documentation
routing-config: routing-config:
source: Routing Configuration source: Routing Configuration
intentions:
index:
empty:
header: |
{items, select,
0 {Welcome to Intentions}
other {No Intentions found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Intentions in this Consul cluster}
other {No Intentions were found matching your search}
}, or you may not have <code>intentions:read</code> permissions access to this view.
</p>
kv:
index:
empty:
header: |
{items, select,
0 {Welcome to Key/Value}
other {No Key/Values found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any K/V pairs in this Consul cluster yet}
other {No K/V pairs were found matching your search}
}, or you may not have <code>key:read</code> permissions access to this view.
</p>
acls:
tokens:
index:
empty:
header: |
{items, select,
0 {Welcome to Tokens}
other {No Tokens found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Tokens}
other {No Tokens were found matching your search}
}, or you may not have <code>acl:read</code> permissions to view Tokens yet.
</p>
policies:
index:
empty:
header: |
{items, select,
0 {Welcome to Policies}
other {No Policies found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Policies}
other {No Policies were found matching your search}
}, or you may not have <code>acl:read</code> permissions to view Policies yet.
</p>
roles:
index:
empty:
header: |
{items, select,
0 {Welcome to Roles}
other {No Roles found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Roles}
other {No Roles were found matching your search}
}, or you may not have <code>acl:read</code> permissions to view Roles yet.
</p>
auth-methods:
show:
binding-rules:
empty:
header: No Binding Rules
body: |
<p>
Binding rules allow an operator to express a systematic way of automatically linking roles and service identities to newly created tokens without operator intervention.
</p>
nspace-rules:
empty:
header: No Namespace Rules
body: |
<p>
A set of rules that can control which namespace tokens created via this auth method will be created within. Unlike binding rules, the first matching namespace rule wins.
</p>
index:
empty:
header: |
{items, select,
0 {Welcome to Auth Methods}
other {No Auth Methods found}
}
body: |
<p>
{items, select,
0 {There don't seem to be any Auth Methods}
other {No Auth Methods were found matching your search}
}, or you may not have <code>acl:read</code> permissions to view Auth Methods yet.
</p>