diff --git a/addons/api/addon/generated/models/worker.js b/addons/api/addon/generated/models/worker.js index dc67d1b24..8918727a3 100644 --- a/addons/api/addon/generated/models/worker.js +++ b/addons/api/addon/generated/models/worker.js @@ -48,7 +48,8 @@ export default class GeneratedWorkerModel extends BaseModel { last_status_time; @attr('string', { - description: 'The version of the Boundary binary the worker is running.', + description: + 'The version of the Boundary binary the worker is running.\nOutput only.', readOnly: true, }) release_version; diff --git a/addons/api/addon/models/worker.js b/addons/api/addon/models/worker.js index a210ff597..042c61554 100644 --- a/addons/api/addon/models/worker.js +++ b/addons/api/addon/models/worker.js @@ -21,6 +21,21 @@ export default class WorkerModel extends GeneratedWorkerModel { return this.type === 'pki'; } + /** + * Returns the number of config tags present on the worker. + * @type {number} + */ + get tagCount() { + if (!this.config_tags) { + return 0; + } + + return Object.values(this.config_tags).reduce( + (previousCount, currentTags) => previousCount + currentTags.length, + 0 + ); + } + @attr({ description: 'The deduplicated union of the tags reported by the worker ' + diff --git a/addons/api/mirage/factories/worker.js b/addons/api/mirage/factories/worker.js index 5f334b5ed..6515f1294 100644 --- a/addons/api/mirage/factories/worker.js +++ b/addons/api/mirage/factories/worker.js @@ -15,10 +15,30 @@ export default factory.extend({ 'delete', ], type: (i) => types[i % types.length], - canonical_tags: (i) => ({ - type: i % 2 === 0 ? ['dev', faker.random.word(), faker.random.word()] : [], - }), - config_tags: (i) => ({ - type: i % 2 === 0 ? ['dev', faker.random.word(), faker.random.word()] : [], - }), + canonical_tags: (i) => { + if (i % 3 === 0) { + return { os: ['ubuntu'] }; + } + if (i % 2 === 0) { + return { + type: [faker.random.word(), faker.random.word()], + os: ['ubuntu'], + env: ['dev', 'local'], + }; + } + return undefined; + }, + config_tags: (i) => { + if (i % 3 === 0) { + return { os: ['ubuntu'] }; + } + if (i % 2 === 0) { + return { + type: [faker.random.word(), faker.random.word()], + os: ['ubuntu'], + env: ['dev', 'local'], + }; + } + return undefined; + }, }); diff --git a/addons/api/mirage/generated/factories/worker.js b/addons/api/mirage/generated/factories/worker.js index ae1e5e7ac..5dac32153 100644 --- a/addons/api/mirage/generated/factories/worker.js +++ b/addons/api/mirage/generated/factories/worker.js @@ -16,5 +16,7 @@ export default Factory.extend({ last_status_time: () => faker.date.recent(), active_connection_count: () => faker.datatype.number({ max: 10 }), release_version: () => - `Boundary v${faker.datatype.number({ max: 11 })}.${faker.datatype.number({ max: 50 })}.${faker.datatype.number({ max: 12 })}`, + `Boundary v${faker.datatype.number({ max: 11 })}.${faker.datatype.number({ + max: 50, + })}.${faker.datatype.number({ max: 12 })}`, }); diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml index 82c9d5ec4..4d606978f 100644 --- a/addons/core/translations/resources/en-us.yaml +++ b/addons/core/translations/resources/en-us.yaml @@ -465,6 +465,7 @@ worker: session_count: Session Count ip_address: IP Address release_version: Release Version + tag_count: '{tagCount, plural, =1 {# tag} other {# tags}}' form: cluster_id: label: Boundary Cluster ID diff --git a/ui/admin/app/templates/scopes/scope/workers/index.hbs b/ui/admin/app/templates/scopes/scope/workers/index.hbs index a24e586da..f489b3353 100644 --- a/ui/admin/app/templates/scopes/scope/workers/index.hbs +++ b/ui/admin/app/templates/scopes/scope/workers/index.hbs @@ -109,12 +109,13 @@ {{#if worker.description}}

{{worker.description}}

{{/if}} - {{#if worker.config_tags.type}} -
- {{#each worker.config_tags.type as |tag|}} - {{tag}} - {{/each}} -
+ {{#if worker.tagCount}} + + {{t + 'resources.worker.table.tag_count' + tagCount=worker.tagCount + }} + {{/if}}