98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { computed } from '@ember/object';
|
|
import DistributionBar from './distribution-bar';
|
|
import { attributeBindings } from '@ember-decorators/component';
|
|
import classic from 'ember-classic-decorator';
|
|
|
|
@classic
|
|
@attributeBindings('data-test-allocation-status-bar')
|
|
export default class AllocationStatusBar extends DistributionBar {
|
|
layoutName = 'components/distribution-bar';
|
|
|
|
allocationContainer = null;
|
|
job = null;
|
|
|
|
'data-test-allocation-status-bar' = true;
|
|
|
|
generateLegendLink(job, status) {
|
|
if (!job || status === 'queued') return null;
|
|
|
|
return {
|
|
queryParams: {
|
|
status: JSON.stringify([status]),
|
|
namespace: job.belongsTo('namespace').id(),
|
|
},
|
|
};
|
|
}
|
|
|
|
@computed(
|
|
'allocationContainer.{queuedAllocs,completeAllocs,failedAllocs,runningAllocs,startingAllocs,lostAllocs,unknownAllocs}',
|
|
'job.namespace'
|
|
)
|
|
get data() {
|
|
if (!this.allocationContainer) {
|
|
return [];
|
|
}
|
|
|
|
const allocs = this.allocationContainer.getProperties(
|
|
'queuedAllocs',
|
|
'completeAllocs',
|
|
'failedAllocs',
|
|
'runningAllocs',
|
|
'startingAllocs',
|
|
'lostAllocs',
|
|
'unknownAllocs'
|
|
);
|
|
return [
|
|
{
|
|
label: 'Queued',
|
|
value: allocs.queuedAllocs,
|
|
className: 'queued',
|
|
legendLink: this.generateLegendLink(this.job, 'queued'),
|
|
},
|
|
{
|
|
label: 'Starting',
|
|
value: allocs.startingAllocs,
|
|
className: 'starting',
|
|
layers: 2,
|
|
legendLink: this.generateLegendLink(this.job, 'starting'),
|
|
},
|
|
{
|
|
label: 'Running',
|
|
value: allocs.runningAllocs,
|
|
className: 'running',
|
|
legendLink: this.generateLegendLink(this.job, 'running'),
|
|
},
|
|
{
|
|
label: 'Complete',
|
|
value: allocs.completeAllocs,
|
|
className: 'complete',
|
|
legendLink: this.generateLegendLink(this.job, 'complete'),
|
|
},
|
|
{
|
|
label: 'Unknown',
|
|
value: allocs.unknownAllocs,
|
|
className: 'unknown',
|
|
legendLink: this.generateLegendLink(this.job, 'unknown'),
|
|
help: 'Allocation is unknown since its node is disconnected.',
|
|
},
|
|
{
|
|
label: 'Failed',
|
|
value: allocs.failedAllocs,
|
|
className: 'failed',
|
|
legendLink: this.generateLegendLink(this.job, 'failed'),
|
|
},
|
|
{
|
|
label: 'Lost',
|
|
value: allocs.lostAllocs,
|
|
className: 'lost',
|
|
legendLink: this.generateLegendLink(this.job, 'lost'),
|
|
},
|
|
];
|
|
}
|
|
}
|