From e7665fae852858cec913f96b56073863272cf366 Mon Sep 17 00:00:00 2001 From: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> Date: Tue, 21 Sep 2021 20:40:40 -0700 Subject: [PATCH] Compute Pool Fields on Refresh (#1067) Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> Co-authored-by: Alex <33497058+bexsoft@users.noreply.github.com> --- .../Console/Tenants/ListTenants/types.ts | 2 ++ .../Tenants/TenantDetails/TenantDetails.tsx | 24 +++++++++++++++ .../Tenants/TenantDetails/TenantSummary.tsx | 30 +++---------------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts b/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts index 8bc963002..8ad99184f 100644 --- a/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts +++ b/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts @@ -103,6 +103,8 @@ export interface ITenant { // computed capacity: string; subnet_license: LicenseInfo; + total_instances?: number; + total_volumes?: number; } export interface ITenantsResponse { diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantDetails.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantDetails.tsx index 9d36b3c18..25a080274 100644 --- a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantDetails.tsx +++ b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantDetails.tsx @@ -166,6 +166,30 @@ const TenantDetails = ({ `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}` ) .then((res: ITenant) => { + // add computed fields + const resPools = !res.pools ? [] : res.pools; + + let totalInstances = 0; + let totalVolumes = 0; + let poolNamedIndex = 0; + for (let pool of resPools) { + const cap = + pool.volumes_per_server * + pool.servers * + pool.volume_configuration.size; + pool.label = `pool-${poolNamedIndex}`; + if (pool.name === undefined || pool.name === "") { + pool.name = pool.label; + } + pool.capacity = niceBytes(cap + ""); + pool.volumes = pool.servers * pool.volumes_per_server; + totalInstances += pool.servers; + totalVolumes += pool.volumes; + poolNamedIndex += 1; + } + res.total_instances = totalInstances; + res.total_volumes = totalVolumes; + setTenantInfo(res); setTenantDetailsLoad(false); }) diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantSummary.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantSummary.tsx index 02e835d85..376eb2f39 100644 --- a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantSummary.tsx +++ b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantSummary.tsx @@ -175,32 +175,10 @@ const TenantSummary = ({ useEffect(() => { if (tenant) { - const res = tenant; - - const resPools = !res.pools ? [] : res.pools; - - let totalInstances = 0; - let totalVolumes = 0; - let poolNamedIndex = 0; - for (let pool of resPools) { - const cap = - pool.volumes_per_server * - pool.servers * - pool.volume_configuration.size; - pool.label = `pool-${poolNamedIndex}`; - if (pool.name === undefined || pool.name === "") { - pool.name = pool.label; - } - pool.capacity = niceBytes(cap + ""); - pool.volumes = pool.servers * pool.volumes_per_server; - totalInstances += pool.servers; - totalVolumes += pool.volumes; - poolNamedIndex += 1; - } - setCapacity(res.total_size || 0); - setPoolCount(resPools.length); - setVolumes(totalVolumes); - setInstances(totalInstances); + setCapacity(tenant.total_size || 0); + setPoolCount(tenant.pools.length); + setVolumes(tenant.total_volumes || 0); + setInstances(tenant.total_instances || 0); } }, [tenant]);