diff --git a/ui/app/models/agent.js b/ui/app/models/agent.js
index be70e5467b3..4f902c670cb 100644
--- a/ui/app/models/agent.js
+++ b/ui/app/models/agent.js
@@ -28,4 +28,9 @@ export default class Agent extends Model {
get isLeader() {
return this.get('system.leader.rpcAddr') === this.rpcAddr;
}
+
+ @computed('tags.[]')
+ get version() {
+ return this.tags?.build || '';
+ }
}
diff --git a/ui/app/templates/components/server-agent-row.hbs b/ui/app/templates/components/server-agent-row.hbs
index ea1353f07bd..5c16fc3153c 100644
--- a/ui/app/templates/components/server-agent-row.hbs
+++ b/ui/app/templates/components/server-agent-row.hbs
@@ -1,6 +1,7 @@
{{this.agent.name}} |
{{this.agent.status}} |
{{if this.agent.isLeader "True" "False"}} |
-{{this.agent.address}} |
+{{this.agent.address}} |
{{this.agent.serfPort}} |
{{this.agent.datacenter}} |
+{{this.agent.version}} |
diff --git a/ui/app/templates/servers/index.hbs b/ui/app/templates/servers/index.hbs
index 8173b9100da..1daed7b4561 100644
--- a/ui/app/templates/servers/index.hbs
+++ b/ui/app/templates/servers/index.hbs
@@ -16,9 +16,10 @@
Name
Status
Leader
- Address
+ Address
port
Datacenter
+ Version
diff --git a/ui/mirage/factories/agent.js b/ui/mirage/factories/agent.js
index cf985d95ba4..47f96df6c50 100644
--- a/ui/mirage/factories/agent.js
+++ b/ui/mirage/factories/agent.js
@@ -5,6 +5,7 @@ import { DATACENTERS } from '../common';
const UUIDS = provide(100, faker.random.uuid.bind(faker.random));
const AGENT_STATUSES = ['alive', 'leaving', 'left', 'failed'];
+const AGENT_BUILDS = ['1.1.0-beta', '1.0.2-alpha+ent', ...provide(5, faker.system.semver)];
export default Factory.extend({
id: i => (i / 100 >= 1 ? `${UUIDS[i]}-${i}` : UUIDS[i]),
@@ -29,6 +30,10 @@ export default Factory.extend({
Tags: generateTags(serfPort),
};
},
+
+ version() {
+ return this.member.Tags?.build || '';
+ },
});
function generateName() {
@@ -44,5 +49,6 @@ function generateTags(serfPort) {
return {
port: rpcPortCandidate === serfPort ? rpcPortCandidate + 1 : rpcPortCandidate,
dc: faker.helpers.randomize(DATACENTERS),
+ build: faker.helpers.randomize(AGENT_BUILDS),
};
}
diff --git a/ui/tests/acceptance/servers-list-test.js b/ui/tests/acceptance/servers-list-test.js
index d4b30c580ab..05ac3f327e7 100644
--- a/ui/tests/acceptance/servers-list-test.js
+++ b/ui/tests/acceptance/servers-list-test.js
@@ -63,6 +63,7 @@ module('Acceptance | servers list', function(hooks) {
assert.equal(agentRow.address, agent.member.Address, 'Address');
assert.equal(agentRow.serfPort, agent.member.Port, 'Serf Port');
assert.equal(agentRow.datacenter, agent.member.Tags.dc, 'Datacenter');
+ assert.equal(agentRow.version, agent.version, 'Version');
});
test('each server should link to the server detail page', async function(assert) {
diff --git a/ui/tests/pages/servers/list.js b/ui/tests/pages/servers/list.js
index 9f8081e6bca..cc884d4e1d6 100644
--- a/ui/tests/pages/servers/list.js
+++ b/ui/tests/pages/servers/list.js
@@ -11,6 +11,7 @@ export default create({
address: text('[data-test-server-address]'),
serfPort: text('[data-test-server-port]'),
datacenter: text('[data-test-server-datacenter]'),
+ version: text('[data-test-server-version]'),
clickRow: clickable(),
clickName: clickable('[data-test-server-name] a'),