[ui] Allocation route services table: show task-level services (#14199)

Adds service fragments to allocations and union taskGroup and task services
This commit is contained in:
Phil Renaud 2022-08-22 11:45:12 -04:00 committed by GitHub
parent 09e275ccba
commit fcf2c40c60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 1 deletions

3
.changelog/14199.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:feature
[ui] Services table: Display task-level services in addition to group-level services.
```

View File

@ -11,6 +11,7 @@ import { lazyClick } from 'nomad-ui/helpers/lazy-click';
import { watchRecord } from 'nomad-ui/utils/properties/watch'; import { watchRecord } from 'nomad-ui/utils/properties/watch';
import messageForError from 'nomad-ui/utils/message-from-adapter-error'; import messageForError from 'nomad-ui/utils/message-from-adapter-error';
import classic from 'ember-classic-decorator'; import classic from 'ember-classic-decorator';
import { union } from '@ember/object/computed';
@classic @classic
export default class IndexController extends Controller.extend(Sortable) { export default class IndexController extends Controller.extend(Sortable) {
@ -46,11 +47,26 @@ export default class IndexController extends Controller.extend(Sortable) {
return (this.get('model.allocatedResources.ports') || []).sortBy('label'); return (this.get('model.allocatedResources.ports') || []).sortBy('label');
} }
@computed('model.states.@each.task')
get tasks() {
return this.get('model.states').mapBy('task') || [];
}
@computed('tasks.@each.services')
get taskServices() {
return this.get('tasks')
.map((t) => (t && t.get('services') || []).toArray())
.flat()
.compact();
}
@computed('model.taskGroup.services.@each.name') @computed('model.taskGroup.services.@each.name')
get services() { get groupServices() {
return (this.get('model.taskGroup.services') || []).sortBy('name'); return (this.get('model.taskGroup.services') || []).sortBy('name');
} }
@union('taskServices', 'groupServices') services;
onDismiss() { onDismiss() {
this.set('error', null); this.set('error', null);
} }

View File

@ -48,6 +48,7 @@ export default class Task extends Fragment {
@attr('number') reservedCPU; @attr('number') reservedCPU;
@attr('number') reservedDisk; @attr('number') reservedDisk;
@attr('number') reservedEphemeralDisk; @attr('number') reservedEphemeralDisk;
@fragmentArray('service') services;
@fragmentArray('volume-mount', { defaultValue: () => [] }) volumeMounts; @fragmentArray('volume-mount', { defaultValue: () => [] }) volumeMounts;

View File

@ -155,6 +155,7 @@ module('Acceptance | regions (many)', function (hooks) {
const newRegion = server.db.regions[1].id; const newRegion = server.db.regions[1].id;
await Allocation.visit({ id: server.db.allocations[0].id }); await Allocation.visit({ id: server.db.allocations[0].id });
await this.pauseTest();
await selectChoose('[data-test-region-switcher-parent]', newRegion); await selectChoose('[data-test-region-switcher-parent]', newRegion);