diff --git a/frontend/public/components/cluster-settings/cluster-settings.tsx b/frontend/public/components/cluster-settings/cluster-settings.tsx index da6bdc7f9da..8063a53fc5f 100644 --- a/frontend/public/components/cluster-settings/cluster-settings.tsx +++ b/frontend/public/components/cluster-settings/cluster-settings.tsx @@ -1,5 +1,3 @@ -// TODO (jon) - Remove mock code from this file once cluster update feature is complete - /* eslint-disable no-unused-vars, no-undef */ import * as React from 'react'; @@ -8,11 +6,26 @@ import { Helmet } from 'react-helmet'; import { Button } from 'patternfly-react'; import { Link } from 'react-router-dom'; -import { ClusterVersionKind, K8sResourceKind, referenceForModel } from '../../module/k8s'; -import { ClusterAutoscalerModel, ClusterVersionModel } from '../../models'; import { ClusterOperatorPage } from './cluster-operator'; import { clusterChannelModal, clusterUpdateModal } from '../modals'; import { GlobalConfigPage } from './global-config'; +import { ClusterAutoscalerModel } from '../../models'; +import { + ClusterUpdateStatus, + ClusterVersionCondition, + ClusterVersionConditionType, + ClusterVersionKind, + clusterVersionReference, + getAvailableClusterUpdates, + getClusterUpdateStatus, + getClusterVersionCondition, + getDesiredClusterVersion, + isProgressing, + K8sResourceConditionStatus, + K8sResourceKind, + referenceForModel, + updateFailing, +} from '../../module/k8s'; import { EmptyBox, Firehose, @@ -23,56 +36,12 @@ import { Timestamp, } from '../utils'; -enum ClusterUpdateStatus { - UpToDate = 'Up to Date', - UpdatesAvailable = 'Updates Available', - Updating = 'Updating', - Failing = 'Failing', - ErrorRetrieving = 'Error Retrieving', -} - const clusterAutoscalerReference = referenceForModel(ClusterAutoscalerModel); -export const clusterVersionReference = referenceForModel(ClusterVersionModel); - -export const getAvailableClusterChannels = () => ({'nightly-4.0': 'nightly-4.0', 'pre-release-4.0': 'pre-release-4.0', 'stable-4.0': 'stable-4.0'}); - -export const getAvailableClusterUpdates = (cv: ClusterVersionKind) => { - return _.get(cv, 'status.availableUpdates'); -}; - -export const getDesiredClusterVersion = (cv: ClusterVersionKind) => { - return _.get(cv, 'status.desired.version'); -}; - -const launchUpdateModal = (cv: ClusterVersionKind) => { - clusterUpdateModal({cv}); -}; const CurrentChannel: React.SFC = ({cv}) => ; -const getClusterUpdateStatus = (cv: ClusterVersionKind): ClusterUpdateStatus => { - const conditions = _.get(cv, 'status.conditions', []); - const isFailingCondition = _.find(conditions, { type: 'Failing', status: 'True' }); - if (isFailingCondition) { - return ClusterUpdateStatus.Failing; - } - - const retrievedUpdatesFailedCondition = _.find(conditions, { type: 'RetrievedUpdates', status: 'False' }); - if (retrievedUpdatesFailedCondition) { - return ClusterUpdateStatus.ErrorRetrieving; - } - - const isProgressingCondition = _.find(conditions, { type: 'Progressing', status: 'True' }); - if (isProgressingCondition) { - return ClusterUpdateStatus.Updating; - } - - const updates = _.get(cv, 'status.availableUpdates'); - return _.isEmpty(updates) ? ClusterUpdateStatus.UpToDate : ClusterUpdateStatus.UpdatesAvailable; -}; - const getIconClass = (status: ClusterUpdateStatus) => { return { [ClusterUpdateStatus.UpToDate]: 'pficon pficon-ok', @@ -83,26 +52,44 @@ const getIconClass = (status: ClusterUpdateStatus) => { }[status]; }; -const FailedConditionAlert = ({message, condition}) =>
-