portainer/app/kubernetes/helpers/history/index.js

51 lines
2.3 KiB
JavaScript

import _ from 'lodash-es';
import PortainerError from 'Portainer/error';
import KubernetesDeploymentHistoryHelper from 'Kubernetes/helpers/history/deployment';
import KubernetesDaemonSetHistoryHelper from 'Kubernetes/helpers/history/daemonset';
import KubernetesStatefulSetHistoryHelper from 'Kubernetes/helpers/history/statefulset';
import { KubernetesApplicationTypes } from 'Kubernetes/models/application/models';
class KubernetesHistoryHelper {
static getRevisions(rawRevisions, application) {
let currentRevision, revisionsList;
switch (application.ApplicationType) {
case KubernetesApplicationTypes.DEPLOYMENT:
[currentRevision, revisionsList] = KubernetesHistoryHelper._getDeploymentRevisions(rawRevisions, application.Raw);
break;
case KubernetesApplicationTypes.DAEMONSET:
[currentRevision, revisionsList] = KubernetesHistoryHelper._getDaemonSetRevisions(rawRevisions, application.Raw);
break;
case KubernetesApplicationTypes.STATEFULSET:
[currentRevision, revisionsList] = KubernetesHistoryHelper._getStatefulSetRevisions(rawRevisions, application.Raw);
break;
default:
throw new PortainerError('Unable to determine which association to use');
}
revisionsList = _.sortBy(revisionsList, 'revision');
return [currentRevision, revisionsList];
}
static _getDeploymentRevisions(rsList, deployment) {
const appRS = KubernetesDeploymentHistoryHelper.filterOwnedRevisions(rsList, deployment);
const currentRS = KubernetesDeploymentHistoryHelper.getCurrentRevision(appRS, deployment);
const versionedRS = KubernetesDeploymentHistoryHelper.filterVersionedRevisions(appRS);
return [currentRS, versionedRS];
}
static _getDaemonSetRevisions(crList, daemonSet) {
const appCR = KubernetesDaemonSetHistoryHelper.filterOwnedRevisions(crList, daemonSet);
const currentCR = KubernetesDaemonSetHistoryHelper.getCurrentRevision(appCR, daemonSet);
return [currentCR, appCR];
}
static _getStatefulSetRevisions(crList, statefulSet) {
const appCR = KubernetesStatefulSetHistoryHelper.filterOwnedRevisions(crList, statefulSet);
const currentCR = KubernetesStatefulSetHistoryHelper.getCurrentRevision(appCR, statefulSet);
return [currentCR, appCR];
}
}
export default KubernetesHistoryHelper;