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.

56 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectorToString = void 0; const toArray = (value) => (Array.isArray(value) ? value : [value]); const requirementToString = (requirement) => { if (requirement.operator === 'Equals') { return `${requirement.key}=${requirement.values?.[0]}`; } if (requirement.operator === 'NotEquals') { return `${requirement.key}!=${requirement.values?.[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} > ${requirement.values?.[0]}`; } if (requirement.operator === 'LessThan') { return `${requirement.key} < ${requirement.values?.[0]}`; } return ''; }; const createEquals = (key, value) => ({ key, operator: 'Equals', values: [value], }); const toRequirements = (selector = {}) => { const requirements = []; const matchLabels = selector.matchLabels || {}; const { matchExpressions } = selector; Object.keys(matchLabels || {}) .sort((a, b) => a.localeCompare(b)) .forEach((k) => { requirements.push(createEquals(k, matchLabels[k])); }); (matchExpressions || []).forEach((me) => { requirements.push(me); }); return requirements; }; const selectorToString = (selector) => { const requirements = toRequirements(selector); return requirements.map(requirementToString).join(','); }; exports.selectorToString = selectorToString; //# sourceMappingURL=requirements.js.map