feat: update alerts to Hds::Alert component (CC-4035) (#16412)

This commit is contained in:
Valeriia Ruban 2023-02-24 20:07:12 -08:00 committed by GitHub
parent 4c8c6a9ecb
commit b5b0693666
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 231 additions and 340 deletions

3
.changelog/16412.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:improvement
ui: Update alerts to Hds::Alert component
```

View File

@ -34,14 +34,12 @@
</Notice> </Notice>
{{/if}} {{/if}}
{{else if (eq @type 'kv')}} {{else if (eq @type 'kv')}}
<Notice <Hds::Alert @type='inline' @color='warning' class='mb-3' data-test-session-warning as |A|>
@type="warning" <A.Title>Warning</A.Title>
data-test-session-warning <A.Description>This KV has a lock session. You can edit KV's with lock sessions, but we recommend doing so with care, or not doing so at all. It may negatively impact the active node it's associated with. See below for more details on the Lock Session.</A.Description>
as |notice|> <A.Link::Standalone @text='Learn more'
<notice.Body> @href="{{env 'CONSUL_DOCS_URL'}}/internals/sessions.html"
<p> @icon='docs-link'
<strong>Warning.</strong> This KV has a lock session. You can edit KV's with lock sessions, but we recommend doing so with care, or not doing so at all. It may negatively impact the active node it's associated with. See below for more details on the Lock Session and see <a href="{{env 'CONSUL_DOCS_URL'}}/internals/sessions.html" target="_blank" rel="noopener noreferrer">our documentation</a> for more information. @iconPosition='trailing' />
</p> </Hds::Alert>
</notice.Body>
</Notice>
{{/if}} {{/if}}

View File

@ -13,14 +13,10 @@
<fsm.State @matches={{array "idle" "error"}}> <fsm.State @matches={{array "idle" "error"}}>
<fsm.State @matches={{"error"}}> <fsm.State @matches={{"error"}}>
<Notice @type="error" role="alert" as |notice|> <Hds::Alert @type='critical' class='mb-3 mt-2' as |A|>
<notice.Body> <A.Title>Error</A.Title>
<p> <A.Description>{{fsm.state.context.error.message}}</A.Description>
<strong>Error</strong><br /> </Hds::Alert>
{{fsm.state.context.error.message}}
</p>
</notice.Body>
</Notice>
</fsm.State> </fsm.State>
{{yield {{yield
(hash (hash

View File

@ -14,14 +14,10 @@
as |writer| as |writer|
> >
<BlockSlot @name="error" as |after error|> <BlockSlot @name="error" as |after error|>
<Notice @type="error" role="alert" as |notice|> <Hds::Alert @type='critical' class='mb-3 mt-2' as |A|>
<notice.Body> <A.Title>Error</A.Title>
<p> <A.Description>{{error.message}}</A.Description>
<strong>Error</strong><br /> </Hds::Alert>
{{error.message}}
</p>
</notice.Body>
</Notice>
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
{{#let (unique-id) as |id|}} {{#let (unique-id) as |id|}}

View File

@ -37,40 +37,52 @@
{{/if}} {{/if}}
<State @matches='error'> <State @matches='error'>
{{#if this.error.status}} {{#if this.error.status}}
<Notice @type='error' role='alert' as |notice|> <Hds::Alert @type='inline' @color='critical' class='mb-1 mt-2' as |A|>
<notice.Body> <A.Title>
<p> {{#if this.value.Name}}
{{#if this.value.Name}} {{#if (eq this.error.status '403')}}
{{#if (eq this.error.status '403')}} Consul login failed
<strong>Consul login failed</strong><br /> {{else if (eq this.error.status '401')}}
We received a token from your OIDC provider but could not log in to Consul Could not log in to provider
with it. {{else if (eq this.error.status '499')}}
{{else if (eq this.error.status '401')}} SSO log in window closed
<strong>Could not log in to provider</strong><br />
The OIDC provider has rejected this access token. Please have an
administrator check your auth method configuration.
{{else if (eq this.error.status '499')}}
<strong>SSO log in window closed</strong><br />
The OIDC provider window was closed. Please try again.
{{else}}
<strong>Error</strong><br />
{{this.error.detail}}
{{/if}}
{{else}} {{else}}
{{#if (eq this.error.status '403')}} Error
<strong>Invalid token</strong><br />
The token entered does not exist. Please enter a valid token to log in.
{{else if (eq this.error.status '404')}}
<strong>No providers</strong><br />
No SSO providers are configured for that Partition.
{{else}}
<strong>Error</strong><br />
{{this.error.detail}}
{{/if}}
{{/if}} {{/if}}
</p> {{else}}
</notice.Body> {{#if (eq this.error.status '403')}}
</Notice> Invalid token
{{else if (eq this.error.status '404')}}
No providers
{{else}}
Error
{{/if}}
{{/if}}
</A.Title>
<A.Description>
{{#if this.value.Name}}
{{#if (eq this.error.status '403')}}
We received a token from your OIDC provider but could not log in to Consul
with it.
{{else if (eq this.error.status '401')}}
The OIDC provider has rejected this access token. Please have an
administrator check your auth method configuration.
{{else if (eq this.error.status '499')}}
The OIDC provider window was closed. Please try again.
{{else}}
{{this.error.detail}}
{{/if}}
{{else}}
{{#if (eq this.error.status '403')}}
The token entered does not exist. Please enter a valid token to log in.
{{else if (eq this.error.status '404')}}
No SSO providers are configured for that Partition.
{{else}}
{{this.error.detail}}
{{/if}}
{{/if}}
</A.Description>
</Hds::Alert>
{{/if}} {{/if}}
</State> </State>
<TabState @matches='token'> <TabState @matches='token'>

View File

@ -133,20 +133,10 @@ as |item readonly|}}
{{#if api.isCreate}} {{#if api.isCreate}}
{{#if (and (can 'use partitions') (not (can 'choose partitions' dc=@dc)))}} {{#if (and (can 'use partitions') (not (can 'choose partitions' dc=@dc)))}}
<Notice <Hds::Alert @type='inline' class='mb-3 mt-2' as |A|>
@type="info" <A.Title>Cross-partition communication not supported</A.Title>
as |notice|> <A.Description>Cross-partition communication is not supported outside of the primary datacenter. You will only be able to select namespaces for source and destination services.</A.Description>
<notice.Header> </Hds::Alert>
<h3>
Cross-partition communication not supported
</h3>
</notice.Header>
<notice.Body>
<p>
Cross-partition communication is not supported outside of the primary datacenter. You will only be able to select namespaces for source and destination services.
</p>
</notice.Body>
</Notice>
{{/if}} {{/if}}
{{#if this.isManagedByCRDs}} {{#if this.isManagedByCRDs}}
<Consul::Intention::Notice::CustomResource @type="warning" /> <Consul::Intention::Notice::CustomResource @type="warning" />
@ -213,29 +203,14 @@ as |item readonly|}}
{{else}} {{else}}
{{#if item.IsManagedByCRD}} {{#if item.IsManagedByCRD}}
<Notice <Hds::Alert @type="inline" class='mb-3 mt-2' as |A|>
class="crd" <A.Title>Intention Custom Resource</A.Title>
@type="warning" <A.Description>This Intention is view only because it is managed through an Intention Custom Resource in your Kubernetes cluster.</A.Description>
as |notice|> <A.Link::Standalone @text='Learn more about CRDs'
<notice.Header> @href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
<h3> @icon='docs-link'
Intention Custom Resource @iconPosition='trailing' />
</h3> </Hds::Alert>
</notice.Header>
<notice.Body>
<p>
This Intention is view only because it is managed through an Intention Custom Resource in your Kubernetes cluster.
</p>
</notice.Body>
<notice.Footer>
<Hds::Link::Standalone
@text='Learn more about CRDs'
@href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
@icon='docs-link'
@iconPosition='trailing'
/>
</notice.Footer>
</Notice>
{{/if}} {{/if}}
<Consul::Intention::View <Consul::Intention::View

View File

@ -1,27 +1,9 @@
<Notice <Hds::Alert @type='inline' @color={{or @type "neutral"}} class='mb-2 mt-2' as |A|>
class="consul-intention-notice-custom-resource crd" <A.Title>Intention Custom Resource</A.Title>
...attributes <A.Description>Some of your intentions are being managed through an Intention Custom Resource in your Kubernetes cluster. Those managed intentions will be view only in the UI. Any intentions created in the UI will work but will not be synced to the Custom Resource Definition (CRD) datastore.</A.Description>
@type={{or @type "info"}} <A.Link::Standalone @href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
as |notice|> @text='Learn more about CRDs'
<notice.Header> @icon="docs-link"
<h3> @iconPosition="trailing"
Intention Custom Resource @size="small" />
</h3> </Hds::Alert>
</notice.Header>
<notice.Body>
<p>
Some of your intentions are being managed through an Intention Custom Resource in your Kubernetes cluster. Those managed intentions will be view only in the UI. Any intentions created in the UI will work but will not be synced to the Custom Resource Definition (CRD) datastore.
</p>
</notice.Body>
<notice.Footer>
<p>
<Hds::Link::Standalone
@href="{{env 'CONSUL_DOCS_URL'}}/k8s/crds"
@text='Learn more about CRDs'
@icon="docs-link"
@iconPosition="trailing"
@size="small"
/>
</p>
</notice.Footer>
</Notice>

View File

@ -1,21 +1,10 @@
<Notice <Hds::Alert @type="inline" class="mb-3 mt-2" as |A|>
@type="info" <A.Description>{{t "components.consul.intention.notice.permissions.body"}}</A.Description>
as |notice|> <A.Link::Standalone
<notice.Body> @text={{t "components.consul.intention.notice.permissions.footer"}}
<p> @href="{{env 'CONSUL_DOCS_URL'}}/connect/intentions"
{{t "components.consul.intention.notice.permissions.body"}} @icon="docs-link"
</p> @iconPosition="trailing"
</notice.Body> @size="small"
<notice.Footer> />
<p> </Hds::Alert>
<Hds::Link::Standalone
@text={{t "components.consul.intention.notice.permissions.footer"}}
@href="{{env 'CONSUL_DOCS_URL'}}/connect/intentions"
@icon="docs-link"
@iconPosition="trailing"
@size="small"
/>
</p>
</notice.Footer>
</Notice>

View File

@ -1,29 +1,20 @@
{{#if isVisible}} {{#if isVisible}}
<Notice data-test-node-agentless-notice @type='info' class='agentless-node-notice' as |notice|> <Hds::Alert @type="inline" class='mb-3 mt-2' class='agentless-node-notice' data-test-node-agentless-notice as |A|>
<notice.Header> <A.Title>
<h3> <span>{{t 'routes.dc.nodes.index.agentless.notice.header'}}</span>
{{t 'routes.dc.nodes.index.agentless.notice.header'}}
</h3>
<Hds::Button <Hds::Button
@color='secondary' @color='secondary'
@text='Dismiss notice' @text='Dismiss notice'
{{on 'click' this.dismissAgentlessNotice}} {{on 'click' this.dismissAgentlessNotice}}
@icon='x' @icon='x'
@size='small'
@isIconOnly={{true}} @isIconOnly={{true}}
/> />
</notice.Header> </A.Title>
<notice.Body> <A.Description>{{t 'routes.dc.nodes.index.agentless.notice.body'}}</A.Description>
<p> <A.Link::Standalone @href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/connect/dataplane'
{{t 'routes.dc.nodes.index.agentless.notice.body'}} @text={{t 'routes.dc.nodes.index.agentless.notice.footer'}}
</p> @icon='docs-link'
</notice.Body> @iconPosition='trailing' />
<notice.Footer> </Hds::Alert>
<Hds::Button
@color='tertiary'
@href='{{env "CONSUL_DOCS_DEVELOPER_URL"}}/connect/dataplane'
@text={{t 'routes.dc.nodes.index.agentless.notice.footer'}}
@icon='docs-link'
/>
</notice.Footer>
</Notice>
{{/if}} {{/if}}

View File

@ -1,4 +1,4 @@
.agentless-node-notice header { .agentless-node-notice .hds-alert__title {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }

View File

@ -71,19 +71,14 @@ as |dc partition nspace id item create|}}
</div> </div>
{{/if}} {{/if}}
{{#if (eq (policy/typeof item) 'policy-management')}} {{#if (eq (policy/typeof item) 'policy-management')}}
<Notice <Hds::Alert @type="inline" @icon="star-fill" class="mb-3 mt-2" as |A|>
class="policy-management" <A.Title>Management</A.Title>
@type="none" <A.Description>This global-management token is built into Consul's policy system. You can apply this special policy to tokens for full access. This policy is not editable or removeable, but can be ignored by not applying it to any tokens.</A.Description>
as |notice|> <A.Link::Standalone @text='Learn more'
<notice.Header> @href="{{env 'CONSUL_DOCS_URL'}}/guides/acl.html#builtin-policies"
<h3>Management</h3> @icon='docs-link'
</notice.Header> @iconPosition='trailing' />
<notice.Body> </Hds::Alert>
<p>
This global-management token is built into Consul's policy system. You can apply this special policy to tokens for full access. This policy is not editable or removeable, but can be ignored by not applying it to any tokens. Learn more in our <a href="{{env 'CONSUL_DOCS_URL'}}/guides/acl.html#builtin-policies" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
</notice.Body>
</Notice>
<div class="definition-table"> <div class="definition-table">
<dl> <dl>
<dt>Name</dt> <dt>Name</dt>

View File

@ -96,18 +96,14 @@ as |dc partition nspace item create|}}
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
{{#if (token/is-legacy item)}} {{#if (token/is-legacy item)}}
<Notice <Hds::Alert @type='inline' class='mb-6' as |A|>
@type="info" <A.Title>Update</A.Title>
as |notice|> <A.Description>We have upgraded our ACL system by allowing you to create reusable policies which you can then apply to tokens. Don't worry, even though this token was written in the old style, it is still valid. However, we do recommend upgrading your old tokens to the new style.</A.Description>
<notice.Header> <A.Link::Standalone @text='Learn more'
<h2>Update</h2> @href="{{env 'CONSUL_DOCS_URL'}}/guides/acl-migrate-tokens.html"
</notice.Header> @icon='docs-link'
<notice.Body> @iconPosition='trailing' />
<p> </Hds::Alert>
We have upgraded our ACL system by allowing you to create reusable policies which you can then apply to tokens. Don't worry, even though this token was written in the old style, it is still valid. However, we do recommend upgrading your old tokens to the new style. Learn how in our <a href="{{env 'CONSUL_DOCS_URL'}}/guides/acl-migrate-tokens.html" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
</notice.Body>
</Notice>
{{/if}} {{/if}}
{{#if (not create) }} {{#if (not create) }}
<div class="definition-table"> <div class="definition-table">

View File

@ -80,16 +80,14 @@ as |route|>
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
{{#if (token/is-legacy items)}} {{#if (token/is-legacy items)}}
<Notice <Hds::Alert @type='inline' class='mb-3 mt-3' as |A|>
@type="info" <A.Title>Update</A.Title>
as |notice|> <A.Description data-test-notification-update>We have upgraded our ACL System to allow the creation of reusable policies that can be applied to tokens. Read more about the changes and how to upgrade legacy tokens.</A.Description>
<notice.Header> <A.Link::Standalone @text='Learn more'
<h2>Update</h2> @href="{{env 'CONSUL_DOCS_URL'}}/guides/acl-migrate-tokens.html"
</notice.Header> @icon='docs-link'
<notice.Body> @iconPosition='trailing' />
<p data-test-notification-update>We have upgraded our ACL System to allow the creation of reusable policies that can be applied to tokens. Read more about the changes and how to upgrade legacy tokens in our <a href="{{env 'CONSUL_DOCS_URL'}}/guides/acl-migrate-tokens.html" target="_blank" rel="noopener noreferrer">documentation</a>.</p> </Hds::Alert>
</notice.Body>
</Notice>
{{/if}} {{/if}}
<DataCollection <DataCollection
@type="token" @type="token"

View File

@ -137,7 +137,7 @@ as |sort filters parent items|}}
</BlockSlot> </BlockSlot>
<BlockSlot @name="actions"> <BlockSlot @name="actions">
{{#if (can 'create kvs')}} {{#if (can 'create kvs')}}
{{#if (not-eq parent.Key '/') }} {{#if (and parent.Key (not-eq parent.Key '/')) }}
<Hds::Button <Hds::Button
@text='Create' @text='Create'
@isHrefExternal={{false}} @isHrefExternal={{false}}

View File

@ -49,22 +49,10 @@ as |route|>
{{/if}} {{/if}}
{{#let (find-by "Type" "serf" items) as |serf|}} {{#let (find-by "Type" "serf" items) as |serf|}}
{{#if (and serf (eq serf.Status "critical"))}} {{#if (and serf (eq serf.Status "critical"))}}
<Notice <Hds::Alert @type="inline" @color="warning" class="mb-3 mt-2" data-test-critical-serf-notice as |A|>
data-test-critical-serf-notice <A.Title>{{t "routes.dc.nodes.show.healthchecks.critical-serf-notice.header"}}</A.Title>
@type="warning" <A.Description>{{t "routes.dc.nodes.show.healthchecks.critical-serf-notice.body"}}</A.Description>
as |notice|> </Hds::Alert>
<notice.Header>
<h2>
{{t "routes.dc.nodes.show.healthchecks.critical-serf-notice.header"}}
</h2>
</notice.Header>
<notice.Body>
{{t
"routes.dc.nodes.show.healthchecks.critical-serf-notice.body"
htmlSafe=true
}}
</notice.Body>
</Notice>
{{/if}} {{/if}}
{{/let}} {{/let}}
<DataCollection <DataCollection

View File

@ -45,19 +45,13 @@
{{#let (find-by 'Type' 'serf' items) as |serf|}} {{#let (find-by 'Type' 'serf' items) as |serf|}}
{{#if (and serf (eq serf.Status 'critical'))}} {{#if (and serf (eq serf.Status 'critical'))}}
<Notice data-test-critical-serf-notice @type='warning' as |notice|> <Hds::Alert @type="inline" @color="warning" class="mb-3 mt-2" data-test-critical-serf-notice as |A|>
<notice.Header> <A.Title>{{t 'routes.dc.services.instance.healthchecks.critical-serf-notice.header'}}</A.Title>
<h2> <A.Description>{{t
{{t 'routes.dc.services.instance.healthchecks.critical-serf-notice.header'}} 'routes.dc.services.instance.healthchecks.critical-serf-notice.body'
</h2> htmlSafe=true
</notice.Header> }}</A.Description>
<notice.Body> </Hds::Alert>
{{t
'routes.dc.services.instance.healthchecks.critical-serf-notice.body'
htmlSafe=true
}}
</notice.Body>
</Notice>
{{/if}} {{/if}}
{{/let}} {{/let}}
<DataCollection <DataCollection

View File

@ -44,31 +44,19 @@ as |route|>
{{! TODO: Looks like we can get this straight from item.Proxy.Mode }} {{! TODO: Looks like we can get this straight from item.Proxy.Mode }}
{{! the less we need `proxy` and `meta` the better }} {{! the less we need `proxy` and `meta` the better }}
{{#if (eq meta.ServiceProxy.Mode 'transparent')}} {{#if (eq meta.ServiceProxy.Mode 'transparent')}}
<Notice <Hds::Alert @type="inline" @color="warning" class="mb-3 mt-2" as |A|>
@type="warning" <A.Title>{{t "routes.dc.services.instance.upstreams.tproxy-mode.header"}}</A.Title>
as |notice|> <A.Description>
<notice.Header> {{t "routes.dc.services.instance.upstreams.tproxy-mode.body"}}
<h3> </A.Description>
{{t "routes.dc.services.instance.upstreams.tproxy-mode.header"}} <A.Link::Standalone
</h3> @text={{t "routes.dc.services.instance.upstreams.tproxy-mode.footer.text"}}
</notice.Header> @href='{{concat (env 'CONSUL_DOCS_URL') (t "routes.dc.services.instance.upstreams.tproxy-mode.footer.link")}}'
<notice.Body> @icon="docs-link"
{{t "routes.dc.services.instance.upstreams.tproxy-mode.body" @iconPosition="trailing"
htmlSafe=true @size="small"
}} />
</notice.Body> </Hds::Alert>
<notice.Footer>
<p>
<Hds::Link::Standalone
@text={{t "routes.dc.services.instance.upstreams.tproxy-mode.footer.text"}}
@href='{{concat (env 'CONSUL_DOCS_URL') (t "routes.dc.services.instance.upstreams.tproxy-mode.footer.link")}}'
@icon="docs-link"
@iconPosition="trailing"
@size="small"
/>
</p>
</notice.Footer>
</Notice>
{{/if}} {{/if}}
<DataCollection <DataCollection
@type="upstream-instance" @type="upstream-instance"

View File

@ -59,51 +59,61 @@ as |nspace dc items topology|}}
<disclosure.Details <disclosure.Details
@auto={{false}} @auto={{false}}
as |details|> as |details|>
<Notice <Hds::Alert id={{details.id}}
class="topology-metrics-notice" @type='inline'
id={{details.id}} @color={{if (includes prop (array 'filtered-by-acls' 'no-dependencies'))
data-test-notice={{prop}} 'neutral'
@type={{if (includes prop (array 'filtered-by-acls' 'no-dependencies')) 'warning'}}
'info' class='mb-3 mt-2 topology-metrics-notice'
'warning' data-test-notice={{prop}}
}} as |A|>
as |notice|> <A.Title>
<notice.Header> {{compute (fn route.t 'notice.${prop}.header'
<h3> (hash
{{compute (fn route.t 'notice.${prop}.header' prop=prop
(hash ))
prop=prop }}
) </A.Title>
)}}
</h3>
</notice.Header>
{{#if disclosure.expanded}} {{#if disclosure.expanded}}
<notice.Body> <A.Description>
<p> {{compute (fn route.t 'notice.${prop}.body'
{{compute (fn route.t 'notice.${prop}.body' (hash
(hash prop=prop
prop=prop ))
) }}
)}} </A.Description>
</p>
</notice.Body>
{{/if}} {{/if}}
{{#let {{#if (and disclosure.expanded (not-eq prop 'filtered-by-acls'))}}
(compute (fn route.t 'notice.${prop}.footer' {{#if (includes prop (array 'wildcard-intention' 'default-allow' 'no-intentions'))}}
(hash <A.Button
route_intentions=(href-to 'dc.services.show.intentions') @color='secondary'
prop=prop @size='small'
htmlSafe=true @route='dc.services.show.intentions'
) @text={{compute (fn route.t 'notice.${prop}.footer.link-text'
)) (hash
as |footer|}} prop=prop
{{#if (and disclosure.expanded (not-eq prop 'filtered-by-acls'))}} ))}}
<notice.Footer> @icon={{compute (fn route.t 'notice.${prop}.footer.icon'
{{footer}} (hash
</notice.Footer> prop=prop
))}}
/>
{{else}}
<A.Link::Standalone
@text={{compute (fn route.t 'notice.${prop}.footer.link-text'
(hash
prop=prop
))}}
@href={{compute (fn route.t 'notice.${prop}.footer.link'
(hash
prop=prop
))}}
@icon='docs-link'
@iconPosition='trailing'
/>
{{/if}} {{/if}}
{{/let}} {{/if}}
</Notice> </Hds::Alert>
</disclosure.Details> </disclosure.Details>
{{/if}} {{/if}}
{{/each-in}} {{/each-in}}

View File

@ -26,18 +26,10 @@ as |item|}}
</h1> </h1>
</BlockSlot> </BlockSlot>
<BlockSlot @name="content"> <BlockSlot @name="content">
<Notice <Hds::Alert @type="inline" class='mb-3 mt-2' as |A|>
@type="info" <A.Title>Local Storage</A.Title>
as |notice|> <A.Description>These settings are immediately saved to local storage and persisted through browser usage.</A.Description>
<notice.Header> </Hds::Alert>
<h2>Local Storage</h2>
</notice.Header>
<notice.Body>
<p>
These settings are immediately saved to local storage and persisted through browser usage.
</p>
</notice.Body>
</Notice>
<form> <form>
{{#if (not (env 'CONSUL_UI_DISABLE_REALTIME'))}} {{#if (not (env 'CONSUL_UI_DISABLE_REALTIME'))}}
<Disclosure as |disclosure|> <Disclosure as |disclosure|>

View File

@ -245,17 +245,11 @@ dc:
</p> </p>
critical-serf-notice: critical-serf-notice:
header: Failing serf check header: Failing serf check
body: | body: 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>
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: upstreams:
tproxy-mode: tproxy-mode:
header: Transparent proxy mode header: Transparent proxy mode
body: | 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.
<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: footer:
link: "/connect/transparent-proxy" link: "/connect/transparent-proxy"
text: Read the documentation text: Read the documentation
@ -278,45 +272,39 @@ dc:
default-allow: default-allow:
header: Restrict which services can connect header: Restrict which services can connect
body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service. body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service.
footer: | footer:
<p> link-text: Create a wildcard deny Intention
<a href="{route_intentions}">Create a wildcard deny Intention</a> icon: plus
</p>
wildcard-intention: wildcard-intention:
header: Restrict which services can connect header: Restrict which services can connect
body: There is currently a wildcard Intention that allows all services to connect to each other. Change the action of that Intention to deny to improve your security posture and have this topology view reflect the actual upstreams and downstreams of this service. body: There is currently a wildcard Intention that allows all services to connect to each other. Change the action of that Intention to deny to improve your security posture and have this topology view reflect the actual upstreams and downstreams of this service.
footer: | footer:
<p> link-text: Edit wildcard intentions
<a href="{route_intentions}">Edit wildcard intentions</a> icon: edit
</p>
not-defined-intention: not-defined-intention:
header: Add upstream to allow traffic header: Add upstream to allow traffic
body: An Intention was defined that allows traffic between services, but those services are unable to communicate. Define an explicit upstream in the service definition or enable transparent proxy to fix this. body: An Intention was defined that allows traffic between services, but those services are unable to communicate. Define an explicit upstream in the service definition or enable transparent proxy to fix this.
footer: | footer:
<p> link: '{CONSUL_DOCS_URL}/connect/registration/service-registration#upstreams'
<a href="{CONSUL_DOCS_URL}/connect/registration/service-registration#upstreams" target="_blank" rel="noopener noreferrer">Learn how to add upstreams</a> link-text: Learn how to add upstreams
</p>
no-dependencies: no-dependencies:
header: No dependencies header: No dependencies
body: The service you are viewing currently has no dependencies. You will only see metrics for the current service until dependencies are added. body: The service you are viewing currently has no dependencies. You will only see metrics for the current service until dependencies are added.
footer: | footer:
<p> link: '{CONSUL_DOCS_URL}/connect/registration/service-registration#upstream-configuration-reference'
<a href="{CONSUL_DOCS_URL}/connect/registration/service-registration#upstream-configuration-reference" target="_blank" rel="noopener noreferrer">Read the documentation</a> link-text: Read the documentation
</p>
acls-disabled: acls-disabled:
header: Restrict which services can connect header: Restrict which services can connect
body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or enable ACLs and set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service. body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or enable ACLs and set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service.
footer: | footer:
<p> link: '{ CONSUL_DOCS_URL }/security/acl/acl-system#configuring-acls'
<a href="{CONSUL_DOCS_URL}/security/acl/acl-system#configuring-acls" target="_blank" rel="noopener noreferrer">Read the documentation</a> link-text: Read the documentation
</p>
no-intentions: no-intentions:
header: Add Intention to allow traffic header: Add Intention to allow traffic
body: There is an upstream registered for this service, but that upstream cannot receive traffic without creating an allow intention. body: There is an upstream registered for this service, but that upstream cannot receive traffic without creating an allow intention.
footer: | footer:
<p> link-text: Edit Intentions
<a href="{route_intentions}">Edit Intentions</a> icon: edit
</p>
intentions: intentions:
index: index:
empty: empty: