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.

43 lines 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.filterClusters = exports.getClusterSetName = exports.isClusterAvailable = exports.checkForCondition = void 0; /** * Helper function to check for condition - similar to checkForCondition from status-conditions.ts */ const checkForCondition = (condition, conditions, status) => conditions?.find((c) => c.type === condition)?.status === (status ?? 'True'); exports.checkForCondition = checkForCondition; /** * Checks if a managed cluster meets the default filtering criteria: * - Has the cluster proxy addon available label * - Has ManagedClusterConditionAvailable status: 'True' */ const isClusterAvailable = (cluster) => { const hasClusterProxyLabel = cluster.metadata?.labels?.['feature.open-cluster-management.io/addon-cluster-proxy'] === 'available'; const conditions = cluster?.status?.conditions || []; const isAvailable = (0, exports.checkForCondition)('ManagedClusterConditionAvailable', conditions); return hasClusterProxyLabel && isAvailable; }; exports.isClusterAvailable = isClusterAvailable; /** * Gets the cluster set name from a ManagedCluster resource. * Returns the cluster set label value or 'default' if not present. */ const getClusterSetName = (cluster) => { return cluster.metadata?.labels?.['cluster.open-cluster-management.io/clusterset'] || 'default'; }; exports.getClusterSetName = getClusterSetName; /** * Filters clusters based on the provided criteria. * When includeAll is false, only returns clusters that meet the default availability criteria. * When includeAll is true, returns all clusters that have a name. */ const filterClusters = (clusters, includeAll) => { return clusters.filter((cluster) => { if (!cluster.metadata?.name) { return false; } return includeAll || (0, exports.isClusterAvailable)(cluster); }); }; exports.filterClusters = filterClusters; //# sourceMappingURL=clusterUtils.js.map