in src/push/monitor.ts [271:311]
export function buildMonitorFromYaml(
config: MonitorConfig,
options: PushOptions
) {
// Validate required fields
for (const field of REQUIRED_MONITOR_FIELDS) {
if (!config[field]) {
throw `Monitor ${field} is required`;
}
}
const schedule = config.schedule && parseSchedule(String(config.schedule));
const privateLocations =
config['private_locations'] ||
config.privateLocations ||
options.privateLocations;
const retestOnFailure =
config['retest_on_failure'] ?? options.retestOnFailure;
const alertConfig = parseAlertConfig(config, options.alert);
const mon = new Monitor({
enabled: config.enabled ?? options.enabled,
locations: options.locations,
tags: options.tags,
fields: parseFields(config, options.fields),
...normalizeConfig(config),
retestOnFailure,
privateLocations,
schedule:
(schedule as typeof ALLOWED_SCHEDULES[number]) || options.schedule,
alert: alertConfig,
});
/**
* Params support is only available for lightweight monitors
* post 8.7.2 stack
*/
if (isParamOptionSupported(options.kibanaVersion)) {
mon.config.params = options.params;
}
return mon;
}