feat(kapacitor): map serviceNow rule type to _type to avoid conflict
parent
7cdb970339
commit
3254819e0d
|
@ -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}`, {
|
||||
|
|
Loading…
Reference in New Issue