portainer/app/kubernetes/node/helper.js

24 lines
774 B
JavaScript

import _ from 'lodash-es';
export class KubernetesNodeHelper {
static isSystemLabel(label) {
return !label.IsNew && (_.startsWith(label.Key, 'beta.kubernetes.io') || _.startsWith(label.Key, 'kubernetes.io') || label.Key === 'node-role.kubernetes.io/master');
}
static reorderLabels(labels) {
return _.sortBy(labels, (label) => {
return !KubernetesNodeHelper.isSystemLabel(label);
});
}
static computeUsedLabels(applications, labels) {
const pods = _.flatten(_.map(applications, 'Pods'));
const nodeSelectors = _.uniq(_.flatten(_.map(pods, 'NodeSelector')));
return _.map(labels, (label) => {
label.IsUsed = _.find(nodeSelectors, (ns) => ns && ns[label.Key] === label.Value) ? true : false;
return label;
});
}
}