feat(kapacitor): map serviceNow rule type to _type to avoid conflict

pull/5675/head
Pavel Zavora 2021-02-26 18:47:33 +01:00
parent 7cdb970339
commit 3254819e0d
1 changed files with 37 additions and 7 deletions

View File

@ -1,12 +1,21 @@
import AJAX from 'utils/ajax'
import {cloneDeep, get} from 'lodash'
const rangeRule = rule => {
const outRule = rule => {
// fit into range
const {value, rangeValue, operator} = rule.values
if (operator === 'inside range' || operator === 'outside range') {
rule.values.value = Math.min(value, rangeValue).toString()
rule.values.rangeValue = Math.max(value, rangeValue).toString()
}
// remap serviceNow '_type' to 'type' that could not be used
if (Array.isArray(get(rule, ['alertNodes', 'serviceNow']))) {
rule = cloneDeep(rule)
rule.alertNodes.serviceNow = rule.alertNodes.serviceNow.map(
val => ({...val, type: val._type, _type: undefined})
)
}
return rule
}
@ -15,7 +24,7 @@ export const createRule = (kapacitor, rule) => {
return AJAX({
method: 'POST',
url: kapacitor.links.rules,
data: rangeRule(rule),
data: outRule(rule),
})
}
@ -23,15 +32,38 @@ export const getRules = kapacitor => {
return AJAX({
method: 'GET',
url: kapacitor.links.rules,
}).then(response => {
// remap serviceNow 'type' to '_type', it conflicts with UI property
const rules = get(response, ['data', 'rules'])
if (Array.isArray(rules)) {
rules.forEach(rule => {
if (Array.isArray(rule.alertNodes.serviceNow)) {
rule.alertNodes.serviceNow = rule.alertNodes.serviceNow.map(
val => ({...val, _type: val.type, type: undefined})
)
}
})
}
return response
})
}
export const getRule = async (kapacitor, ruleID) => {
try {
return await AJAX({
const response = await AJAX({
method: 'GET',
url: `${kapacitor.links.rules}/${ruleID}`,
})
// remap serviceNow 'type' to '_type', it conflicts with UI property
const serviceNow = get(response, ['data', 'alertNodes', 'serviceNow'])
if (Array.isArray(serviceNow)) {
serviceNow.forEach(x => {
if (x.type !== undefined) {
x._type = x.type
}
})
}
return response
} catch (error) {
console.error(error)
throw error
@ -42,7 +74,7 @@ export const editRule = rule => {
return AJAX({
method: 'PUT',
url: rule.links.self,
data: rangeRule(rule),
data: outRule(rule),
})
}
@ -122,9 +154,7 @@ export const getLogStream = kapacitor => {
export const getLogStreamByRuleID = (kapacitor, ruleID) => {
// axios doesn't support the chunked transfer encoding response kapacitor uses for logs
// AJAX adds basepath, but we need to supply it directly to fetch
const url = `${
kapacitor.links.proxy
}?path=/kapacitor/v1preview/logs?task=${ruleID}`
const url = `${kapacitor.links.proxy}?path=/kapacitor/v1preview/logs?task=${ruleID}`
const basepath = window.basepath || ''
return fetch(`${basepath}${url}`, {