open-nomad/ui/app/components/allocation-service-sidebar.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

55 lines
1.4 KiB
JavaScript
Raw Normal View History

import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
export default class AllocationServiceSidebarComponent extends Component {
@service store;
get isSideBarOpen() {
return !!this.args.service;
}
keyCommands = [
{
label: 'Close Evaluations Sidebar',
pattern: ['Escape'],
action: () => this.args.fns.closeSidebar(),
},
];
get service() {
return this.store.query('service-fragment', { refID: this.args.serviceID });
}
get address() {
const port = this.args.allocation?.allocatedResources?.ports?.findBy(
'label',
this.args.service.portLabel
);
if (port) {
return `${port.hostIp}:${port.value}`;
} else {
return null;
}
}
get aggregateStatus() {
return this.checks.any((check) => check.Status === 'failure')
? 'Unhealthy'
: 'Healthy';
}
get checks() {
2022-09-08 17:54:50 +00:00
if (!this.args.service || !this.args.allocation) return null;
let allocID = this.args.allocation.id;
2022-09-08 15:31:38 +00:00
// Our UI checks run every 2 seconds; but a check itself may only update every, say, minute.
// Therefore, we'll have duplicate checks in a service's healthChecks array.
// Only get the most recent check for each check.
return (this.args.service.healthChecks || [])
.filterBy('Alloc', allocID)
2022-09-08 15:31:38 +00:00
.uniqBy('Timestamp')
.sortBy('Timestamp')
2022-09-08 15:31:38 +00:00
.reverse()
.uniqBy('Check')
.sortBy('Check');
}
}