in projects/alloydb-autoscaler/src/autoscaler-config-validator/config-validator-cli.ts [57:107]
function assertValidGkeConfigMapFile(
configValidator: ConfigValidator,
filename: string
) {
// Allow any type since the configMap is not in our control.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let configMap: any;
try {
const configText = fs.readFileSync(filename, 'utf-8');
configMap = yaml.load(configText) as object;
} catch (e) {
console.error(`Could not parse YAML from ${filename}: ${e}`);
throw e;
}
if (configMap?.kind !== 'ConfigMap') {
console.error(`${filename} is not a GKE ConfigMap`);
throw new Error(`${filename} is not a GKE ConfigMap`);
}
let success = true;
for (const configMapFile of Object.keys(configMap?.data)) {
const configMapData = configMap?.data[configMapFile];
try {
const config = yaml.load(configMapData);
configValidator.parseAndAssertValidConfig(JSON.stringify(config));
} catch (e) {
if (e instanceof ValidationError) {
console.error(
`Validation of configMap entry data.${configMapFile} in file ` +
`${filename} failed:\n${e.message}`
);
} else if (e instanceof yaml.YAMLException) {
console.error(
'Could not parse YAML from value data. ' +
`${configMapFile} in ${filename}: ${e}`
);
} else {
console.error(
`Processing of configMap entry data.${configMapFile} in file ` +
`${filename} failed: ${e}`
);
}
success = false;
}
}
if (!success) {
throw new Error(`${filename} Failed validation`);
}
}