blob: d96afcc97efc03a8da46279038f2b8fe39bec2b9 [file] [log] [blame]
import moment from 'moment';
import { isNully } from 'utils/Common';
import ThriftUtils, { SCHEDULE_STATUS } from 'utils/Thrift';
export function isActive(task) {
return ACTIVE_STATES.includes(task.status);
}
export function getClassForScheduleStatus(status) {
if (ThriftUtils.OKAY_SCHEDULE_STATUS.includes(status)) {
return 'okay';
} else if (ThriftUtils.WARNING_SCHEDULE_STATUS.includes(status)) {
return 'attention';
} else if (ThriftUtils.ERROR_SCHEDULE_STATUS.includes(status)) {
return 'error';
} else if (ThriftUtils.USER_WAIT_SCHEDULE_STATUS.includes(status)) {
return 'in-progress';
}
return 'system';
}
export function taskToStateMachine(task) {
return task.taskEvents.map((e, i) => {
const active = (i === task.taskEvents.length - 1) ? ' active' : '';
return {
timestamp: e.timestamp,
className: `${getClassForScheduleStatus(e.status)}${active}`,
state: SCHEDULE_STATUS[e.status],
message: e.message
};
});
}
export function getLastEventTime(task) {
if (task.taskEvents.length > 0) {
return task.taskEvents[task.taskEvents.length - 1].timestamp;
}
}
export function getDuration(task) {
const firstEvent = moment(task.taskEvents[0].timestamp);
const latestEvent = moment(task.taskEvents[task.taskEvents.length - 1].timestamp);
return moment.duration(latestEvent.diff(firstEvent)).humanize();
}
export function instanceRangeToString(ranges) {
return ranges.map(({first, last}) => (first === last) ? first : `${first} - ${last}`).join(', ');
}
export function getActiveResource(resource) {
return Object.keys(resource).find((r) => !isNully(resource[r]));
}
export function constraintToString(constraint) {
console.log(constraint);
return isNully(constraint.value)
? `limit=${constraint.limit.limit}`
: (constraint.value.negated ? '!' : '=') + constraint.value.values.join(',');
}
export function getResource(resources, key) {
return resources.find((r) => !isNully(r[key]));
}
export function getResources(resources, key) {
return resources.filter((r) => !isNully(r[key]));
}
export function isThermos(task) {
return task && task.executorConfig && task.executorConfig.name === 'AuroraExecutor';
}