@stolostron/multicluster-sdk
Version:
Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.
60 lines • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.selectorToString = exports.toRequirements = exports.createEquals = exports.requirementToString = void 0;
const toArray = (value) => (Array.isArray(value) ? value : [value]);
const requirementToString = (requirement) => {
var _a, _b, _c, _d;
if (requirement.operator === 'Equals') {
return `${requirement.key}=${(_a = requirement.values) === null || _a === void 0 ? void 0 : _a[0]}`;
}
if (requirement.operator === 'NotEquals') {
return `${requirement.key}!=${(_b = requirement.values) === null || _b === void 0 ? void 0 : _b[0]}`;
}
if (requirement.operator === 'Exists') {
return requirement.key;
}
if (requirement.operator === 'DoesNotExist') {
return `!${requirement.key}`;
}
if (requirement.operator === 'In') {
return `${requirement.key} in (${toArray(requirement.values).join(',')})`;
}
if (requirement.operator === 'NotIn') {
return `${requirement.key} notin (${toArray(requirement.values).join(',')})`;
}
if (requirement.operator === 'GreaterThan') {
return `${requirement.key} > ${(_c = requirement.values) === null || _c === void 0 ? void 0 : _c[0]}`;
}
if (requirement.operator === 'LessThan') {
return `${requirement.key} < ${(_d = requirement.values) === null || _d === void 0 ? void 0 : _d[0]}`;
}
return '';
};
exports.requirementToString = requirementToString;
const createEquals = (key, value) => ({
key,
operator: 'Equals',
values: [value],
});
exports.createEquals = createEquals;
const toRequirements = (selector = {}) => {
const requirements = [];
const matchLabels = selector.matchLabels || {};
const { matchExpressions } = selector;
Object.keys(matchLabels || {})
.sort()
.forEach((k) => {
requirements.push((0, exports.createEquals)(k, matchLabels[k]));
});
(matchExpressions || []).forEach((me) => {
requirements.push(me);
});
return requirements;
};
exports.toRequirements = toRequirements;
const selectorToString = (selector) => {
const requirements = (0, exports.toRequirements)(selector);
return requirements.map(exports.requirementToString).join(',');
};
exports.selectorToString = selectorToString;
//# sourceMappingURL=requirements.js.map