| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- import { PipelineStatusName } from './Replication.constants'
- import { ReplicationPipelineStatusData } from '@/data/replication/pipeline-status-query'
- import { PipelineStatusRequestStatus } from '@/state/replication-pipeline-request-status'
- export const getStatusName = (
- status: ReplicationPipelineStatusData['status'] | undefined
- ): PipelineStatusName | undefined => {
- if (!status || typeof status !== 'object' || !('name' in status)) return undefined
- return normalizePipelineStatusName(status.name)
- }
- export const normalizePipelineStatusName = (statusName?: string): PipelineStatusName | undefined =>
- typeof statusName === 'string' &&
- (Object.values(PipelineStatusName) as string[]).includes(statusName)
- ? (statusName as PipelineStatusName)
- : undefined
- export const PIPELINE_ENABLE_ALLOWED_FROM: PipelineStatusName[] = [PipelineStatusName.STOPPED]
- export const PIPELINE_DISABLE_ALLOWED_FROM: PipelineStatusName[] = [
- PipelineStatusName.STARTED,
- PipelineStatusName.FAILED,
- ]
- export const PIPELINE_ACTIONABLE_STATES: PipelineStatusName[] = [
- PipelineStatusName.FAILED,
- PipelineStatusName.STARTED,
- PipelineStatusName.STOPPED,
- ]
- export type PipelineDisplayStateKey =
- | 'starting'
- | 'stopping'
- | 'restarting'
- | 'failed'
- | 'stopped'
- | 'running'
- | 'unknown'
- export type PipelineDisplayType = 'failure' | 'loading' | 'success' | 'idle'
- export interface PipelineDisplayState {
- key: PipelineDisplayStateKey
- label: string
- title: string
- message: string
- badge: string
- type: PipelineDisplayType
- }
- const PIPELINE_DISPLAY_STATES: Record<PipelineDisplayStateKey, PipelineDisplayState> = {
- starting: {
- key: 'starting',
- label: 'Starting',
- title: 'Starting pipeline',
- message: 'Starting the pipeline. Replication will resume once running.',
- badge: 'Starting',
- type: 'loading',
- },
- stopping: {
- key: 'stopping',
- label: 'Stopping',
- title: 'Stopping pipeline',
- message: 'Stopping replication. Data transfer will be paused once stopped.',
- badge: 'Stopping',
- type: 'loading',
- },
- restarting: {
- key: 'restarting',
- label: 'Restarting',
- title: 'Restarting pipeline',
- message: 'Applying settings and restarting the pipeline.',
- badge: 'Restarting',
- type: 'loading',
- },
- failed: {
- key: 'failed',
- label: 'Failed',
- title: 'Pipeline failed',
- message: 'Replication has encountered an error.',
- badge: 'Failed',
- type: 'failure',
- },
- stopped: {
- key: 'stopped',
- label: 'Stopped',
- title: 'Pipeline stopped',
- message: 'Replication is paused. Start the pipeline to resume data synchronization.',
- badge: 'Stopped',
- type: 'idle',
- },
- running: {
- key: 'running',
- label: 'Running',
- title: 'Pipeline running',
- message: 'Replication is active and processing changes.',
- badge: 'Running',
- type: 'success',
- },
- unknown: {
- key: 'unknown',
- label: 'Unknown',
- title: 'Pipeline status unknown',
- message: 'Unable to determine pipeline status.',
- badge: 'Unknown',
- type: 'idle',
- },
- }
- export const getPipelineDisplayState = (
- requestStatus?: PipelineStatusRequestStatus,
- statusName?: PipelineStatusName
- ): PipelineDisplayState => {
- if (requestStatus === PipelineStatusRequestStatus.RestartRequested) {
- return PIPELINE_DISPLAY_STATES.restarting
- }
- if (requestStatus === PipelineStatusRequestStatus.StartRequested) {
- return PIPELINE_DISPLAY_STATES.starting
- }
- if (requestStatus === PipelineStatusRequestStatus.StopRequested) {
- return PIPELINE_DISPLAY_STATES.stopping
- }
- switch (statusName) {
- case PipelineStatusName.STARTING:
- return PIPELINE_DISPLAY_STATES.starting
- case PipelineStatusName.FAILED:
- return PIPELINE_DISPLAY_STATES.failed
- case PipelineStatusName.STOPPED:
- return PIPELINE_DISPLAY_STATES.stopped
- case PipelineStatusName.STARTED:
- return PIPELINE_DISPLAY_STATES.running
- case PipelineStatusName.STOPPING:
- return PIPELINE_DISPLAY_STATES.stopping
- case PipelineStatusName.UNKNOWN:
- default:
- return PIPELINE_DISPLAY_STATES.unknown
- }
- }
|