feat(ui): handle API response with grids instead of flat groups

This commit is contained in:
Łukasz Mierzwa
2020-03-29 16:55:34 +01:00
parent bd80bd3b4a
commit 4f969aac30
2 changed files with 37 additions and 11 deletions

View File

@@ -161,7 +161,7 @@ class AlertStore {
{
colors: {},
counters: [],
groups: [],
grids: [],
silences: {},
upstreams: { instances: [], clusters: {} },
getAlertmanagerByName(name) {
@@ -326,7 +326,7 @@ class AlertStore {
const alertsURI =
FormatBackendURI(
`alerts.json?sortOrder=${sortOrder}&sortLabel=${sortLabel}&sortReverse=${sortReverse}&`
`alerts.json?sortOrder=${sortOrder}&sortLabel=${sortLabel}&sortReverse=${sortReverse}&gridLabel=severity&`
) + FormatAPIFilterQuery(this.filters.values.map((f) => f.raw));
return FetchGet(alertsURI, {}, this.info.setIsRetrying)
@@ -401,7 +401,7 @@ class AlertStore {
for (const key of [
"colors",
"counters",
"groups",
"grids",
"silences",
"upstreams",
]) {

View File

@@ -554,23 +554,49 @@ describe("AlertStore.fetch", () => {
it("adds new groups to the store after fetch", () => {
const response = EmptyAPIResponse();
response.groups = { foo: "foo", bar: "bar" };
response.grids = [
{
labelName: "",
labelValue: "",
alertGroups: { foo: "foo", bar: "bar" },
},
];
const store = new AlertStore(["label=value"]);
store.parseAPIResponse(response);
expect(Object.keys(store.data.groups)).toHaveLength(2);
expect(store.data.groups).toMatchObject({ foo: "foo", bar: "bar" });
expect(store.data.grids).toHaveLength(1);
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(2);
expect(store.data.grids[0].alertGroups).toMatchObject({
foo: "foo",
bar: "bar",
});
});
it("removes old groups from the store after fetch", () => {
const store = new AlertStore(["label=value"]);
store.data.groups = { foo: "foo", delete: "me", bar: "bar" };
expect(Object.keys(store.data.groups)).toHaveLength(3);
store.data.grids = [
{
labelName: "",
labelValue: "",
alertGroups: { foo: "foo", delete: "me", bar: "bar" },
},
];
expect(store.data.grids).toHaveLength(1);
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(3);
const response = EmptyAPIResponse();
response.groups = { foo: "foo", bar: "bar" };
response.grids = [
{
labelName: "",
labelValue: "",
alertGroups: { foo: "foo", bar: "bar" },
},
];
store.parseAPIResponse(response);
expect(Object.keys(store.data.groups)).toHaveLength(2);
expect(store.data.groups).toMatchObject({ foo: "foo", bar: "bar" });
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(2);
expect(store.data.grids[0].alertGroups).toMatchObject({
foo: "foo",
bar: "bar",
});
});
});