UNPKG

@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
"use strict"; 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