UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

84 lines 12.2 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; const initContainerStatuses = get(pod, ['status', 'initContainerStatuses'], []); 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 { reason = `Initing:${i}/${pod.spec.initContainers.length}`; } 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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Q0FBQztJQUNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELGdDQUFnQztBQUNoQyxrSkFBa0o7QUFDbEosTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQWM7SUFDbkQsSUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVM7UUFDbEM7WUFDRSxTQUFTO1lBQ1QsU0FBUztZQUNULGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsYUFBYTtTQUNkLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUNsQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUMzQixPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDb250YWluZXJTdGF0dXMsIFBvZCB9IGZyb20gJy4uL2NvcmUvdHlwZXMvazhzL3Jhdyc7XG5cbmltcG9ydCB7IFBvZFN0YXR1c0VudW0gfSBmcm9tICcuL3R5cGluZ3MnO1xuXG4vLyByZWZlcmVuY2U6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9tYXRoaWxkZXRlY2gvbGluay9zcmMvYzgxMTYxZjAyZjk4MTkwNGI3MTY0NjJhMzA1ZTA5NDE0ZTU2MTdkMy9zcmMvYmFja2VuZC9yZXNvdXJjZS9jb21tb24vcG9kLmdvI2xpbmVzLTE3OVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvZFN0YXR1cyhwb2Q6IFBvZCk6IHN0cmluZyB7XG4gIGxldCByZWFzb24gPSBwb2Quc3RhdHVzLnBoYXNlIHx8IHBvZC5zdGF0dXMucmVhc29uO1xuICBjb25zdCB7IGluaXRpYWxpemluZywgcmVhc29uOiBpbml0UmVhc29uIH0gPSBnZXRQb2RJbml0U3RhdHVzKHBvZCwgcmVhc29uKTtcbiAgcmVhc29uID0gaW5pdGlhbGl6aW5nID8gaW5pdFJlYXNvbiA6IGdldFBvZENvbnRhaW5lclN0YXR1cyhwb2QsIHJlYXNvbik7XG5cbiAgaWYgKHBvZC5tZXRhZGF0YS5kZWxldGlvblRpbWVzdGFtcCAmJiBwb2Quc3RhdHVzLnJlYXNvbiA9PT0gJ05vZGVMb3N0Jykge1xuICAgIHJlYXNvbiA9ICdVbmtub3duJztcbiAgfSBlbHNlIGlmIChwb2QubWV0YWRhdGEuZGVsZXRpb25UaW1lc3RhbXApIHtcbiAgICByZWFzb24gPSAnVGVybWluYXRpbmcnO1xuICB9XG4gIHJldHVybiByZWFzb247XG59XG5cbmZ1bmN0aW9uIGdldFBvZENvbnRhaW5lclN0YXR1cyhwb2Q6IFBvZCwgcmVhc29uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb250YWluZXJTdGF0dXNlczogQ29udGFpbmVyU3RhdHVzW10gPSBnZXQoXG4gICAgcG9kLFxuICAgIFsnc3RhdHVzJywgJ2NvbnRhaW5lclN0YXR1c2VzJ10sXG4gICAgW10sXG4gICk7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjb250YWluZXJTdGF0dXNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclN0YXR1c2VzW2ldO1xuICAgIGxldCB3YWl0aW5nUmVhc29uLCB0ZXJtaW5hdGVkUmVhc29uO1xuICAgIGlmICgod2FpdGluZ1JlYXNvbiA9IGdldChjb250YWluZXIsIFsnc3RhdGUnLCAnd2FpdGluZycsICdyZWFzb24nXSkpKSB7XG4gICAgICByZXR1cm4gd2FpdGluZ1JlYXNvbjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKHRlcm1pbmF0ZWRSZWFzb24gPSBnZXQoY29udGFpbmVyLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnLCAncmVhc29uJ10pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRlcm1pbmF0ZWRSZWFzb247XG4gICAgfVxuICAgIGlmIChnZXQoY29udGFpbmVyLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnXSkpIHtcbiAgICAgIGNvbnN0IHsgc2lnbmFsLCBleGl0Q29kZSB9ID0gY29udGFpbmVyLnN0YXRlLnRlcm1pbmF0ZWQ7XG4gICAgICByZXR1cm4gc2lnbmFsID09PSAwID8gYEV4aXRDb2RlOiR7ZXhpdENvZGV9YCA6IGBTaWduYWw6JHtzaWduYWx9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlYXNvbjtcbn1cblxuZnVuY3Rpb24gZ2V0UG9kSW5pdFN0YXR1cyhwb2Q6IFBvZCwgcmVhc29uOiBzdHJpbmcpIHtcbiAgbGV0IGluaXRpYWxpemluZyA9IGZhbHNlO1xuICBjb25zdCBpbml0Q29udGFpbmVyU3RhdHVzZXMgPSBnZXQoXG4gICAgcG9kLFxuICAgIFsnc3RhdHVzJywgJ2luaXRDb250YWluZXJTdGF0dXNlcyddLFxuICAgIFtdIGFzIENvbnRhaW5lclN0YXR1c1tdLFxuICApO1xuICBmb3IgKGxldCBpID0gaW5pdENvbnRhaW5lclN0YXR1c2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gaW5pdENvbnRhaW5lclN0YXR1c2VzW2ldO1xuICAgIGlmIChnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnLCAnZXhpdENvZGUnXSkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgd2FpdGluZ1JlYXNvbjogc3RyaW5nO1xuICAgIGNvbnN0IHRlcm1pbmF0ZWQgPSBnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnXSk7XG4gICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgIHJlYXNvbiA9IHRlcm1pbmF0ZWQucmVhc29uXG4gICAgICAgID8gYEluaXQ6JHt0ZXJtaW5hdGVkLnJlYXNvbn1gXG4gICAgICAgIDogdGVybWluYXRlZC5zaWduYWwgPT09IDBcbiAgICAgICAgPyBgSW5pdDpFeGl0Q29kZToke3Rlcm1pbmF0ZWQuZXhpdENvZGV9YFxuICAgICAgICA6IGBJbml0OlNpZ25hbDoke3Rlcm1pbmF0ZWQuc2lnbmFsfWA7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICh3YWl0aW5nUmVhc29uID0gZ2V0KHN0YXR1cywgWydzdGF0ZScsICd3YWl0aW5nJywgcmVhc29uXSkpICYmXG4gICAgICB3YWl0aW5nUmVhc29uICE9PSAnUG9kSW5pdGlhbGl6aW5nJ1xuICAgICkge1xuICAgICAgcmVhc29uID0gYEluaXRpbmc6JHt3YWl0aW5nUmVhc29ufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlYXNvbiA9IGBJbml0aW5nOiR7aX0vJHtwb2Quc3BlYy5pbml0Q29udGFpbmVycy5sZW5ndGh9YDtcbiAgICB9XG4gICAgaW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4geyBpbml0aWFsaXppbmcsIHJlYXNvbiB9O1xufVxuXG4vLyDlsIYgZ2V0UG9kU3RhdHVzIOW+l+WIsOeahOWkmuenjeeKtuaAgeaYoOWwhOWIsOagh+etvuexu+Wei1xuLy8gcmVmZXJlbmNlOiBodHRwczovL2JpdGJ1Y2tldC5vcmcvbWF0aGlsZGV0ZWNoL2xpbmsvc3JjL2M4MTE2MWYwMmY5ODE5MDRiNzE2NDYyYTMwNWUwOTQxNGU1NjE3ZDMvc3JjL2JhY2tlbmQvcmVzb3VyY2UvY29tbW9uL3BvZGluZm8uZ28jbGluZXMtNjhcbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2RBZ2dyZWdhdGVkU3RhdHVzKHN0YXR1czogc3RyaW5nKTogUG9kU3RhdHVzRW51bSB7XG4gIGlmIChcbiAgICBzdGF0dXMuc3BsaXQoJzonKVswXSA9PT0gJ0luaXRpbmcnIHx8XG4gICAgW1xuICAgICAgJ0luaXRpbmcnLFxuICAgICAgJ1BlbmRpbmcnLFxuICAgICAgJ1BvZEluaXRpYWxpemluZycsXG4gICAgICAnQ29udGFpbmVyQ3JlYXRpbmcnLFxuICAgICAgJ1Rlcm1pbmF0aW5nJyxcbiAgICBdLmluY2x1ZGVzKHN0YXR1cylcbiAgKSB7XG4gICAgcmV0dXJuIFBvZFN0YXR1c0VudW0ucGVuZGluZztcbiAgfVxuXG4gIGlmIChzdGF0dXMgPT09ICdDb21wbGV0ZWQnKSB7XG4gICAgcmV0dXJuIFBvZFN0YXR1c0VudW0uY29tcGxldGVkO1xuICB9XG4gIGlmIChzdGF0dXMgPT09ICdSdW5uaW5nJykge1xuICAgIHJldHVybiBQb2RTdGF0dXNFbnVtLnJ1bm5pbmc7XG4gIH1cblxuICByZXR1cm4gUG9kU3RhdHVzRW51bS5lcnJvcjtcbn1cbiJdfQ==