CEC-607 Parameterize Grafana (#103)

* CEC-607 Parameterize Grafana

* Update urls
This commit is contained in:
John Wu
2021-11-09 11:23:10 -08:00
committed by GitHub
parent a5902f06b3
commit 251eb63ec1
14 changed files with 219 additions and 53 deletions

View File

@@ -1,24 +1,36 @@
import { fetchRespHandler } from "../utils/http"
import { fetchRespHandler } from "../utils/http";
import { logger } from "./monitoring";
const API_ENDPOINT = "https://grafana.fiskerdps.com/api/datasources/proxy/2"
const API_ENDPOINT = process.env.REACT_APP_GRAFANA_API;
const grafanaAPI = {
getCarsCount: async () => fetch(`${API_ENDPOINT}/?query=SELECT%20countDistinct(VIN)%20as%20count%0AFROM%20default.vehicle_signal%0AWHERE%20Timestamp%20%3C%3D%20toDateTime64(${Date.now() / Math.pow(10, 3)}%2C%203)%20AND%20Timestamp%20%3E%3D%20toDateTime64(${Date.now() / Math.pow(10, 3) - 60 * 60 * 24}%2C%203)%20FORMAT%20JSON`, {
getCarsCount: async () =>
fetch(
`${API_ENDPOINT}/?query=SELECT%20countDistinct(VIN)%20as%20count%0AFROM%20default.vehicle_signal%0AWHERE%20Timestamp%20%3C%3D%20toDateTime64(${
Date.now() / Math.pow(10, 3)
}%2C%203)%20AND%20Timestamp%20%3E%3D%20toDateTime64(${
Date.now() / Math.pow(10, 3) - 60 * 60 * 24
}%2C%203)%20FORMAT%20JSON`,
{
method: "GET",
headers: Object.assign({ "Content-Type": "application/json" }),
})
.then(fetchRespHandler)
.then(result => result.data[0].count)
.catch(error => logger.warn(error.stack)),
}
)
.then(fetchRespHandler)
.then((result) => result.data[0].count)
.catch((error) => logger.warn(error.stack)),
getSignalsCount: async () => fetch(`${API_ENDPOINT}/?query=SELECT%20count()%20as%20count%0AFROM%20default.vehicle_signal%20FORMAT%20JSON`, {
getSignalsCount: async () =>
fetch(
`${API_ENDPOINT}/?query=SELECT%20count()%20as%20count%0AFROM%20default.vehicle_signal%20FORMAT%20JSON`,
{
method: "GET",
headers: Object.assign({ "Content-Type": "application/json" }),
})
.then(fetchRespHandler)
.then(result => result.data[0].count)
.catch(error => logger.warn(error.stack)),
}
)
.then(fetchRespHandler)
.then((result) => result.data[0].count)
.catch((error) => logger.warn(error.stack)),
};
export default grafanaAPI;

View File

@@ -0,0 +1,50 @@
const GRAFANA_BASE_URL = process.env.REACT_APP_GRAFANA_BASE_URL;
const template = (props, value) => {
const keys = Object.keys(props);
return keys.reduce(
(current, key) => current.replace(`\${${key}}`, props[key]),
value
);
};
export const grafanaCharts = {
BASE: GRAFANA_BASE_URL,
HOME_CHART: `${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_HOME_CHART_PATH}`,
CELLVOLTAGE_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_VOLTAGE_CHART_PATH}`
),
CELLTEMP_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_CELLTEMP_CHART_PATH}`
),
BATTERYTEMP_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYTEMP_CHART}`
),
BATTERYCAP_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYCAP_CHART}`
),
BATTERYPERCENT_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYPERCENT_CHART}`
),
BATTERY12VPERCENT_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERY12VPERCENT_CHART}`
),
BATTERY12VVOLTAGE_CHART: (props) =>
template(
props,
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERY12VVOLTAGE_CHART}`
),
};

View File

@@ -0,0 +1,59 @@
import { grafanaCharts } from "./grafanaCharts";
describe("Grafana Charts URLs", () => {
it("Base", () => {
expect(grafanaCharts.BASE).toEqual("https://dev-grafana.fiskerdps.com");
});
it("Home", () => {
expect(grafanaCharts.HOME_CHART).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/1VTVJ_qGk/dashboard?orgId=2&refresh=30s&panelId=12"
);
});
it("Cell Voltage", () => {
expect(
grafanaCharts.CELLVOLTAGE_CHART({ vin: "VIN", cellNum: "CELLNUM" })
).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/LVI-aQGnz/diagnostics?orgId=2&var-VIN=VIN&var-Signal=BMS_CellVoltCELLNUM&panelId=2"
);
});
it("Cell Temperature", () => {
expect(
grafanaCharts.CELLTEMP_CHART({ vin: "VIN", cellNum: "CELLNUM" })
).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/LVI-aQGnz/diagnostics?orgId=2&var-VIN=VIN&var-Signal=BMS_CellTCELLNUM&panelId=2"
);
});
it("Battery Temperature Time Series", () => {
expect(grafanaCharts.BATTERYTEMP_CHART({ vin: "VIN" })).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=4"
);
});
it("Battery Capacity Time Series", () => {
expect(grafanaCharts.BATTERYCAP_CHART({ vin: "VIN" })).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=6"
);
});
it("Battery Percent Time Series", () => {
expect(grafanaCharts.BATTERYPERCENT_CHART({ vin: "VIN" })).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&panelId=12"
);
});
it("12V Battery Percentage Time Series", () => {
expect(grafanaCharts.BATTERY12VPERCENT_CHART({ vin: "VIN" })).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=2"
);
});
it("12V Battery Voltage Time Series", () => {
expect(grafanaCharts.BATTERY12VVOLTAGE_CHART({ vin: "VIN" })).toEqual(
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=9"
);
});
});