diff --git a/ui/packages/consul-peerings/app/components/consul/peer/form/index.hbs b/ui/packages/consul-peerings/app/components/consul/peer/form/index.hbs
index b8d09b8c8c..8f56517f9c 100644
--- a/ui/packages/consul-peerings/app/components/consul/peer/form/index.hbs
+++ b/ui/packages/consul-peerings/app/components/consul/peer/form/index.hbs
@@ -1,42 +1,34 @@
-
+
+ @src={{require "./chart.xstate" from="/components/consul/peer/form"}}
+ as |fsm|
+ >
-
+
+ {{yield
+ (hash Form=(component "consul/peer/form/generate" item=source.data))
}}
- as |source|>
- {{yield (hash
- Form=(component 'consul/peer/form/generate'
- item=source.data
- )
- )
- }}
@@ -44,20 +36,15 @@
+ {{yield
+ (hash Form=(component "consul/peer/form/initiate" item=source.data))
}}
- as |source|>
- {{yield (hash
- Form=(component 'consul/peer/form/initiate'
- item=source.data
- )
- )
- }}
-
diff --git a/ui/packages/consul-ui/app/models/peer.js b/ui/packages/consul-ui/app/models/peer.js
index 6695253d8f..0e03544b95 100644
--- a/ui/packages/consul-ui/app/models/peer.js
+++ b/ui/packages/consul-ui/app/models/peer.js
@@ -17,6 +17,8 @@ export default class Peer extends Model {
@attr('string') Name;
@attr('string') State;
@attr('string') ID;
+ @attr('string') ServerExternalAddresses;
+ @nullValue([]) @attr() ServerExternalAddresses;
// only the side that establishes will hold this property
@attr('string') PeerID;
diff --git a/ui/packages/consul-ui/app/services/repository/peer.js b/ui/packages/consul-ui/app/services/repository/peer.js
index c39accbb51..63f65e38ad 100644
--- a/ui/packages/consul-ui/app/services/repository/peer.js
+++ b/ui/packages/consul-ui/app/services/repository/peer.js
@@ -44,8 +44,11 @@ export default class PeerService extends RepositoryService {
});
}
- @dataSource('/:partition/:ns/:dc/peering/token-for/:name')
- async fetchToken({ dc, ns, partition, name }, configuration, request) {
+ @dataSource('/:partition/:ns/:dc/peering/token-for/:name/:externalAddresses')
+ async fetchToken({ dc, ns, partition, name, externalAddresses }, configuration, request) {
+ const ServerExternalAddresses =
+ externalAddresses?.length > 0 ? externalAddresses.split(',') : [];
+
return (
await request`
POST /v1/peering/token
@@ -53,6 +56,7 @@ export default class PeerService extends RepositoryService {
${{
PeerName: name,
Partition: partition || undefined,
+ ServerExternalAddresses,
}}
`
)((headers, body, cache) => body);
diff --git a/ui/packages/consul-ui/tests/acceptance/dc/peers/create.feature b/ui/packages/consul-ui/tests/acceptance/dc/peers/create.feature
index 4cfe29db70..2713613904 100644
--- a/ui/packages/consul-ui/tests/acceptance/dc/peers/create.feature
+++ b/ui/packages/consul-ui/tests/acceptance/dc/peers/create.feature
@@ -22,6 +22,7 @@ Feature: dc / peers / create: Peer Create Token
---
body:
PeerName: new-peer
+ ServerExternalAddresses: []
---
Then I see the text "an-encoded-token" in ".consul-peer-form-generate code"
When I click ".consul-peer-form-generate button[type=reset]"
@@ -33,11 +34,13 @@ Feature: dc / peers / create: Peer Create Token
Then I fill in with yaml
---
Name: another-new-peer
+ ServerExternalAddresses: "1.1.1.1:123,1.2.3.4:3202"
---
When I click ".peer-create-modal .modal-dialog-footer button"
Then a POST request was made to "/v1/peering/token" from yaml
---
body:
PeerName: another-new-peer
+ ServerExternalAddresses: ["1.1.1.1:123","1.2.3.4:3202"]
---
Then I see the text "another-encoded-token" in ".consul-peer-form-generate code"
diff --git a/ui/packages/consul-ui/translations/common/en-us.yaml b/ui/packages/consul-ui/translations/common/en-us.yaml
index 8fce904302..5c584540ed 100644
--- a/ui/packages/consul-ui/translations/common/en-us.yaml
+++ b/ui/packages/consul-ui/translations/common/en-us.yaml
@@ -81,4 +81,6 @@ validations:
error: "{name} must be a valid DNS hostname."
immutable:
help: Once created, this cannot be changed.
-
+ server-external-addresses:
+ help: |
+ Enter a comma separated list of this peer's fallback server address(es) to be used in the event of failed automatic updates. This field is required for HCP-managed clusters.
diff --git a/ui/packages/consul-ui/translations/components/consul/en-us.yaml b/ui/packages/consul-ui/translations/components/consul/en-us.yaml
index 0809332f43..b8ee183e31 100644
--- a/ui/packages/consul-ui/translations/components/consul/en-us.yaml
+++ b/ui/packages/consul-ui/translations/components/consul/en-us.yaml
@@ -14,6 +14,12 @@ peer:
name: Status
asc: Pending to Deleting
desc: Deleting to Pending
+ form:
+ generate-label: Generate token
+ establish-label: Establish peering
+ generate:
+ name: 'Name of peer'
+ addresses: 'Server address(es)'
service:
search-bar:
kind: Service Type