fix(striker-ui): add total size, free in anvil shared storage summary

main
Tsu-ba-me 1 year ago
parent bf19d03ee5
commit 58a3b56def
  1. 26
      striker-ui-api/src/lib/request_handlers/anvil/getAnvilStore.ts
  2. 2
      striker-ui-api/src/types/ApiAn.d.ts

@ -27,7 +27,14 @@ export const getAnvilStore: RequestHandler<
return response.status(400).send(); return response.status(400).send();
} }
let rows: [uuid: string, name: string, size: string, free: string][]; let rows: [
uuid: string,
name: string,
size: string,
free: string,
totalSize: string,
totalFree: string,
][];
try { try {
rows = await query( rows = await query(
@ -35,7 +42,9 @@ export const getAnvilStore: RequestHandler<
DISTINCT ON (b.storage_group_uuid) storage_group_uuid, DISTINCT ON (b.storage_group_uuid) storage_group_uuid,
b.storage_group_name, b.storage_group_name,
d.scan_lvm_vg_size, d.scan_lvm_vg_size,
d.scan_lvm_vg_free d.scan_lvm_vg_free,
SUM(d.scan_lvm_vg_size) AS total_vg_size,
SUM(d.scan_lvm_vg_free) AS total_vg_free
FROM anvils AS a FROM anvils AS a
JOIN storage_groups AS b JOIN storage_groups AS b
ON a.anvil_uuid = b.storage_group_anvil_uuid ON a.anvil_uuid = b.storage_group_anvil_uuid
@ -44,6 +53,11 @@ export const getAnvilStore: RequestHandler<
JOIN scan_lvm_vgs AS d JOIN scan_lvm_vgs AS d
ON c.storage_group_member_vg_uuid = d.scan_lvm_vg_internal_uuid ON c.storage_group_member_vg_uuid = d.scan_lvm_vg_internal_uuid
WHERE a.anvil_uuid = '${anUuid}' WHERE a.anvil_uuid = '${anUuid}'
GROUP BY
b.storage_group_uuid,
b.storage_group_name,
d.scan_lvm_vg_size,
d.scan_lvm_vg_free
ORDER BY b.storage_group_uuid, d.scan_lvm_vg_free;`, ORDER BY b.storage_group_uuid, d.scan_lvm_vg_free;`,
); );
} catch (error) { } catch (error) {
@ -52,6 +66,12 @@ export const getAnvilStore: RequestHandler<
return response.status(500).send(); return response.status(500).send();
} }
if (!rows.length) return response.status(404).send();
const {
0: { 4: totalSize, 5: totalFree },
} = rows;
const rsbody: AnvilDetailStoreSummary = { const rsbody: AnvilDetailStoreSummary = {
storage_groups: rows.map<AnvilDetailStore>( storage_groups: rows.map<AnvilDetailStore>(
([sgUuid, sgName, sgSize, sgFree]) => ({ ([sgUuid, sgName, sgSize, sgFree]) => ({
@ -61,6 +81,8 @@ export const getAnvilStore: RequestHandler<
storage_group_uuid: sgUuid, storage_group_uuid: sgUuid,
}), }),
), ),
total_free: totalFree,
total_size: totalSize,
}; };
return response.json(rsbody); return response.json(rsbody);

@ -129,6 +129,8 @@ type AnvilDetailParamsDictionary = {
type AnvilDetailStoreSummary = { type AnvilDetailStoreSummary = {
storage_groups: AnvilDetailStore[]; storage_groups: AnvilDetailStore[];
total_free: string;
total_size: string;
}; };
type AnvilOverview = { type AnvilOverview = {

Loading…
Cancel
Save