import { ElMessage } from "element-plus"; import axios from "@/request/http.js"; // max(container_fs_usage_bytes{pod!=\"\", namespace!=\"arms-prom\",namespace!=\"monitoring\"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=\"\"}) by (pod_name,namespace, device) * 100 const setParams = (res, { id }) => { let isEmpty = res.type_com_ref.isEmpty let params = { // 预警规则名称 metric_name: res.name, // 持续时间 duration: +res.time, // 持续时间单位 duration_unit: res.unit, // 检查周期 check_period: +res.inspection_cycle, // 预警通知方式 notify_method: res.manual_distribution_form.method, // 预警通知人员列表 notify_recipients: res.manual_distribution_form.lists.map(e => { return { system_account: `${e.user_id}`, user_name: `${e.user_name}`, phone: `${e.phone}` } }), // 消息推送次数 notify_push_count: +res.push_num, // 消息推送频率 notify_push_frequency: +res.push_frequency, // 是否立即启用 is_enabled: res.enabled ? 1 : 2 } let params_push = { // 自定义传参 custom: () => { return { detection_type: 2, // 预警分类 class_parent_name: res.type_com_ref.warn_target, // 预警对象 class_name: res.type_com_ref.warn_type, // 预警指标 metric_config_name: res.type_com_ref.warn_indicator, // 指标表达式 expr: res.type_com_ref.indicator_expression || "", // 预警规则(下拉) alert_rule_type: res.type_com_ref.rule_type, // 预警规则对象数组 alert_condition, alert_range: [] } }, // 静态阈值传参 static: () => { return { detection_type: 1, // 预警对象 class_id: +res.type_com_ref.warn_type, metric_config_id: res.type_com_ref.warn_indicator, // 报警范围(指标) alert_range: res.type_com_ref.warning_scpoe_form.map(e => { return { variable_name: e.variable_name, metric_name: e.metric_name, chinese_name: e.chinese_name, metric_label: e.metric_label, is_required: e.is_required, is_linked: e.is_linked, value: e.select == 'all' ? '.*' : e.value, compare: e.select == 'all' ? '=~' : e.select } }), // // 预警规则(下拉) alert_rule_type: res.type_com_ref.alert_rule_type, } } } let alert_condition = [] // debugger; if (isEmpty) { alert_condition = [{ thresholds_max: 0, thresholds_min: 0, risk_level: +res.type_com_ref.risk_level }] } else { alert_condition = res.type_com_ref.ruleRows.map(e => { let obj = { risk_level: +e.risk_level } if (e.to !== "") { obj.thresholds_max = +e.to } if (e.from !== "") { obj.thresholds_min = +e.from } return obj }) } params = { ...params, ...params_push[res.type_key](), // 预警规则对象数组 alert_condition, } if (id) { params.id = id } return params; } export const Save = (res, p, cb) => { let params = setParams(res, p); axios[p.id ? 'put' : 'post']('/v1/api/alert_rules', params).then(res => { if (res.data.code == 200) { ElMessage.success(`${p.id ? '编辑' : '新增'}成功`) cb && cb() } else { ElMessage.error(res.data.data) } }) }