@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
JavaScript
;
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