import _ from 'lodash-es'; class KubernetesDaemonSetHistoryHelper { static _isControlledBy(daemonSet) { return (item) => _.find(item.metadata.ownerReferences, { uid: daemonSet.metadata.uid }) !== undefined; } static filterOwnedRevisions(crList, daemonSet) { // filter ControllerRevisions that has the same selector as the DaemonSet // NOTE : this should be done in HTTP request based on daemonSet.spec.selector.matchLabels // instead of getting all CR and filtering them here const sameLabelsCR = _.filter(crList, ['metadata.labels', daemonSet.spec.selector.matchLabels]); // Only include the RS whose ControllerRef matches the DaemonSet. const controlledCR = _.filter(sameLabelsCR, KubernetesDaemonSetHistoryHelper._isControlledBy(daemonSet)); // sorts the list of ControllerRevisions by revision, using the creationTimestamp as a tie breaker (old to new) const sortedList = _.sortBy(controlledCR, ['revision', 'metadata.creationTimestamp']); return sortedList; } // getCurrentRS returns the newest CR the given daemonSet targets (latest version) static getCurrentRevision(crList) { const current = _.last(crList); return current; } } export default KubernetesDaemonSetHistoryHelper;