UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

91 lines 14.1 kB
import { get } from 'lodash-es'; import { PodStatusEnum } from './typings'; // reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/pod.go#lines-179 export function getPodStatus(pod) { let reason = pod.status.phase || pod.status.reason; const { initializing, reason: initReason } = getPodInitStatus(pod, reason); reason = initializing ? initReason : getPodContainerStatus(pod, reason); if (pod.metadata.deletionTimestamp && pod.status.reason === 'NodeLost') { reason = 'Unknown'; } else if (pod.metadata.deletionTimestamp) { reason = 'Terminating'; } return reason; } function getPodContainerStatus(pod, reason) { const containerStatuses = get(pod, ['status', 'containerStatuses'], []); for (let i = 0, len = containerStatuses.length; i < len; i++) { const container = containerStatuses[i]; let waitingReason, terminatedReason; if ((waitingReason = get(container, ['state', 'waiting', 'reason']))) { return waitingReason; } if ((terminatedReason = get(container, ['state', 'terminated', 'reason']))) { return terminatedReason; } if (get(container, ['state', 'terminated'])) { const { signal, exitCode } = container.state.terminated; return signal === 0 ? `ExitCode:${exitCode}` : `Signal:${signal}`; } } return reason; } function getPodInitStatus(pod, reason) { let initializing = false; // Build sidecar init container name set (restartPolicy: Always) const sidecarNames = (get(pod, ['spec', 'initContainers'], []) || []) .filter(c => c?.restartPolicy === 'Always') .map(c => c?.name) .filter(Boolean); // Exclude sidecar statuses from init status calculation const initContainerStatuses = (get(pod, ['status', 'initContainerStatuses'], []) || []).filter(s => !sidecarNames.includes(s?.name)); for (let i = initContainerStatuses.length - 1; i >= 0; i--) { const status = initContainerStatuses[i]; if (get(status, ['state', 'terminated', 'exitCode']) === 0) { continue; } let waitingReason; const terminated = get(status, ['state', 'terminated']); if (terminated) { reason = terminated.reason ? `Init:${terminated.reason}` : terminated.signal === 0 ? `Init:ExitCode:${terminated.exitCode}` : `Init:Signal:${terminated.signal}`; } else if ((waitingReason = get(status, ['state', 'waiting', reason])) && waitingReason !== 'PodInitializing') { reason = `Initing:${waitingReason}`; } else { const initCount = (get(pod, ['spec', 'initContainers'], []) || []).filter((c) => get(c, ['restartPolicy']) !== 'Always').length; reason = `Initing:${i}/${initCount}`; } initializing = true; break; } return { initializing, reason }; } // 将 getPodStatus 得到的多种状态映射到标签类型 // reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/podinfo.go#lines-68 export function getPodAggregatedStatus(status) { if (status.split(':')[0] === 'Initing' || [ 'Initing', 'Pending', 'PodInitializing', 'ContainerCreating', 'Terminating', ].includes(status)) { return PodStatusEnum.pending; } if (status === 'Completed') { return PodStatusEnum.completed; } if (status === 'Running') { return PodStatusEnum.running; } return PodStatusEnum.error; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BvZC1zdGF0dXMvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUxQywrSUFBK0k7QUFDL0ksTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFRO0lBQ25DLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25ELE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV4RSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDdkUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNyQixDQUFDO1NBQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDMUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsR0FBUSxFQUFFLE1BQWM7SUFDckQsTUFBTSxpQkFBaUIsR0FBc0IsR0FBRyxDQUM5QyxHQUFHLEVBQ0gsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsRUFDL0IsRUFBRSxDQUNILENBQUM7SUFDRixL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LElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzNCLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekIsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IENvbnRhaW5lclN0YXR1cywgUG9kIH0gZnJvbSAnLi4vY29yZS90eXBlcy9rOHMvcmF3JztcblxuaW1wb3J0IHsgUG9kU3RhdHVzRW51bSB9IGZyb20gJy4vdHlwaW5ncyc7XG5cbi8vIHJlZmVyZW5jZTogaHR0cHM6Ly9iaXRidWNrZXQub3JnL21hdGhpbGRldGVjaC9saW5rL3NyYy9jODExNjFmMDJmOTgxOTA0YjcxNjQ2MmEzMDVlMDk0MTRlNTYxN2QzL3NyYy9iYWNrZW5kL3Jlc291cmNlL2NvbW1vbi9wb2QuZ28jbGluZXMtMTc5XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9kU3RhdHVzKHBvZDogUG9kKTogc3RyaW5nIHtcbiAgbGV0IHJlYXNvbiA9IHBvZC5zdGF0dXMucGhhc2UgfHwgcG9kLnN0YXR1cy5yZWFzb247XG4gIGNvbnN0IHsgaW5pdGlhbGl6aW5nLCByZWFzb246IGluaXRSZWFzb24gfSA9IGdldFBvZEluaXRTdGF0dXMocG9kLCByZWFzb24pO1xuICByZWFzb24gPSBpbml0aWFsaXppbmcgPyBpbml0UmVhc29uIDogZ2V0UG9kQ29udGFpbmVyU3RhdHVzKHBvZCwgcmVhc29uKTtcblxuICBpZiAocG9kLm1ldGFkYXRhLmRlbGV0aW9uVGltZXN0YW1wICYmIHBvZC5zdGF0dXMucmVhc29uID09PSAnTm9kZUxvc3QnKSB7XG4gICAgcmVhc29uID0gJ1Vua25vd24nO1xuICB9IGVsc2UgaWYgKHBvZC5tZXRhZGF0YS5kZWxldGlvblRpbWVzdGFtcCkge1xuICAgIHJlYXNvbiA9ICdUZXJtaW5hdGluZyc7XG4gIH1cbiAgcmV0dXJuIHJlYXNvbjtcbn1cblxuZnVuY3Rpb24gZ2V0UG9kQ29udGFpbmVyU3RhdHVzKHBvZDogUG9kLCByZWFzb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbnRhaW5lclN0YXR1c2VzOiBDb250YWluZXJTdGF0dXNbXSA9IGdldChcbiAgICBwb2QsXG4gICAgWydzdGF0dXMnLCAnY29udGFpbmVyU3RhdHVzZXMnXSxcbiAgICBbXSxcbiAgKTtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNvbnRhaW5lclN0YXR1c2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyU3RhdHVzZXNbaV07XG4gICAgbGV0IHdhaXRpbmdSZWFzb24sIHRlcm1pbmF0ZWRSZWFzb247XG4gICAgaWYgKCh3YWl0aW5nUmVhc29uID0gZ2V0KGNvbnRhaW5lciwgWydzdGF0ZScsICd3YWl0aW5nJywgJ3JlYXNvbiddKSkpIHtcbiAgICAgIHJldHVybiB3YWl0aW5nUmVhc29uO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAodGVybWluYXRlZFJlYXNvbiA9IGdldChjb250YWluZXIsIFsnc3RhdGUnLCAndGVybWluYXRlZCcsICdyZWFzb24nXSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGVybWluYXRlZFJlYXNvbjtcbiAgICB9XG4gICAgaWYgKGdldChjb250YWluZXIsIFsnc3RhdGUnLCAndGVybWluYXRlZCddKSkge1xuICAgICAgY29uc3QgeyBzaWduYWwsIGV4aXRDb2RlIH0gPSBjb250YWluZXIuc3RhdGUudGVybWluYXRlZDtcbiAgICAgIHJldHVybiBzaWduYWwgPT09IDAgPyBgRXhpdENvZGU6JHtleGl0Q29kZX1gIDogYFNpZ25hbDoke3NpZ25hbH1gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVhc29uO1xufVxuXG5mdW5jdGlvbiBnZXRQb2RJbml0U3RhdHVzKHBvZDogUG9kLCByZWFzb246IHN0cmluZykge1xuICBsZXQgaW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIC8vIEJ1aWxkIHNpZGVjYXIgaW5pdCBjb250YWluZXIgbmFtZSBzZXQgKHJlc3RhcnRQb2xpY3k6IEFsd2F5cylcbiAgY29uc3Qgc2lkZWNhck5hbWVzOiBzdHJpbmdbXSA9IChcbiAgICBnZXQocG9kLCBbJ3NwZWMnLCAnaW5pdENvbnRhaW5lcnMnXSwgW10pIHx8IFtdXG4gIClcbiAgICAuZmlsdGVyKGMgPT4gYz8ucmVzdGFydFBvbGljeSA9PT0gJ0Fsd2F5cycpXG4gICAgLm1hcChjID0+IGM/Lm5hbWUpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAvLyBFeGNsdWRlIHNpZGVjYXIgc3RhdHVzZXMgZnJvbSBpbml0IHN0YXR1cyBjYWxjdWxhdGlvblxuICBjb25zdCBpbml0Q29udGFpbmVyU3RhdHVzZXMgPSAoXG4gICAgZ2V0KHBvZCwgWydzdGF0dXMnLCAnaW5pdENvbnRhaW5lclN0YXR1c2VzJ10sIFtdIGFzIENvbnRhaW5lclN0YXR1c1tdKSB8fCBbXVxuICApLmZpbHRlcihzID0+ICFzaWRlY2FyTmFtZXMuaW5jbHVkZXMocz8ubmFtZSkpO1xuICBmb3IgKGxldCBpID0gaW5pdENvbnRhaW5lclN0YXR1c2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gaW5pdENvbnRhaW5lclN0YXR1c2VzW2ldO1xuICAgIGlmIChnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnLCAnZXhpdENvZGUnXSkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgd2FpdGluZ1JlYXNvbjogc3RyaW5nO1xuICAgIGNvbnN0IHRlcm1pbmF0ZWQgPSBnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnXSk7XG4gICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgIHJlYXNvbiA9IHRlcm1pbmF0ZWQucmVhc29uXG4gICAgICAgID8gYEluaXQ6JHt0ZXJtaW5hdGVkLnJlYXNvbn1gXG4gICAgICAgIDogdGVybWluYXRlZC5zaWduYWwgPT09IDBcbiAgICAgICAgICA/IGBJbml0OkV4aXRDb2RlOiR7dGVybWluYXRlZC5leGl0Q29kZX1gXG4gICAgICAgICAgOiBgSW5pdDpTaWduYWw6JHt0ZXJtaW5hdGVkLnNpZ25hbH1gO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAod2FpdGluZ1JlYXNvbiA9IGdldChzdGF0dXMsIFsnc3RhdGUnLCAnd2FpdGluZycsIHJlYXNvbl0pKSAmJlxuICAgICAgd2FpdGluZ1JlYXNvbiAhPT0gJ1BvZEluaXRpYWxpemluZydcbiAgICApIHtcbiAgICAgIHJlYXNvbiA9IGBJbml0aW5nOiR7d2FpdGluZ1JlYXNvbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbml0Q291bnQgPSAoZ2V0KHBvZCwgWydzcGVjJywgJ2luaXRDb250YWluZXJzJ10sIFtdKSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAoYzogYW55KSA9PiBnZXQoYywgWydyZXN0YXJ0UG9saWN5J10pICE9PSAnQWx3YXlzJyxcbiAgICAgICkubGVuZ3RoO1xuICAgICAgcmVhc29uID0gYEluaXRpbmc6JHtpfS8ke2luaXRDb3VudH1gO1xuICAgIH1cbiAgICBpbml0aWFsaXppbmcgPSB0cnVlO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiB7IGluaXRpYWxpemluZywgcmVhc29uIH07XG59XG5cbi8vIOWwhiBnZXRQb2RTdGF0dXMg5b6X5Yiw55qE5aSa56eN54q25oCB5pig5bCE5Yiw5qCH562+57G75Z6LXG4vLyByZWZlcmVuY2U6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9tYXRoaWxkZXRlY2gvbGluay9zcmMvYzgxMTYxZjAyZjk4MTkwNGI3MTY0NjJhMzA1ZTA5NDE0ZTU2MTdkMy9zcmMvYmFja2VuZC9yZXNvdXJjZS9jb21tb24vcG9kaW5mby5nbyNsaW5lcy02OFxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvZEFnZ3JlZ2F0ZWRTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBQb2RTdGF0dXNFbnVtIHtcbiAgaWYgKFxuICAgIHN0YXR1cy5zcGxpdCgnOicpWzBdID09PSAnSW5pdGluZycgfHxcbiAgICBbXG4gICAgICAnSW5pdGluZycsXG4gICAgICAnUGVuZGluZycsXG4gICAgICAnUG9kSW5pdGlhbGl6aW5nJyxcbiAgICAgICdDb250YWluZXJDcmVhdGluZycsXG4gICAgICAnVGVybWluYXRpbmcnLFxuICAgIF0uaW5jbHVkZXMoc3RhdHVzKVxuICApIHtcbiAgICByZXR1cm4gUG9kU3RhdHVzRW51bS5wZW5kaW5nO1xuICB9XG5cbiAgaWYgKHN0YXR1cyA9PT0gJ0NvbXBsZXRlZCcpIHtcbiAgICByZXR1cm4gUG9kU3RhdHVzRW51bS5jb21wbGV0ZWQ7XG4gIH1cbiAgaWYgKHN0YXR1cyA9PT0gJ1J1bm5pbmcnKSB7XG4gICAgcmV0dXJuIFBvZFN0YXR1c0VudW0ucnVubmluZztcbiAgfVxuXG4gIHJldHVybiBQb2RTdGF0dXNFbnVtLmVycm9yO1xufVxuIl19