@gorizond/mcp-rancher-multi
Version:
MCP server for multiple Rancher Manager backends with Fleet GitOps support
43 lines (42 loc) • 1.68 kB
JavaScript
export function pickFields(source, fields) {
if (!fields || fields.length === 0)
return source;
return fields.reduce((acc, key) => {
if (key in source) {
acc[key] = source[key];
}
return acc;
}, {});
}
export function summarizeFleetGitRepo(repo, fields) {
const summary = {
name: repo?.metadata?.name,
namespace: repo?.metadata?.namespace,
repo: repo?.spec?.repo,
branch: repo?.spec?.branch,
paths: repo?.spec?.paths,
paused: repo?.spec?.paused || false,
revision: repo?.status?.commit || repo?.status?.commitId,
lastSynced: repo?.status?.lastSynced,
conditions: repo?.status?.conditions,
readyClusters: repo?.status?.readyClusters,
desiredReadyClusters: repo?.status?.desiredReadyClusters
};
const defaultFields = ['name', 'namespace', 'repo', 'branch', 'paths', 'paused', 'revision', 'lastSynced'];
const targetFields = fields && fields.length ? fields : defaultFields;
return pickFields(summary, targetFields);
}
export function summarizeFleetBundleDeployment(bd, fields) {
const summary = {
name: bd?.metadata?.name,
namespace: bd?.metadata?.namespace,
ready: bd?.status?.ready,
nonReady: bd?.status?.nonReady,
desiredReady: bd?.status?.desiredReady,
summary: bd?.status?.summary,
display: bd?.status?.display
};
const defaultFields = ['name', 'namespace', 'ready', 'nonReady', 'desiredReady', 'summary', 'display'];
const targetFields = fields && fields.length ? fields : defaultFields;
return pickFields(summary, targetFields);
}