mirror of https://github.com/portainer/portainer
79 lines
1.9 KiB
TypeScript
79 lines
1.9 KiB
TypeScript
![]() |
import { useMemo } from 'react';
|
||
|
|
||
|
import { StorageClass } from '@/react/portainer/environments/types';
|
||
|
import { Registry } from '@/react/portainer/registries/types/registry';
|
||
|
|
||
|
import { NamespaceFormValues, PortainerNamespace } from '../types';
|
||
|
import { megaBytesValue, parseCPU } from '../resourceQuotaUtils';
|
||
|
import { IngressControllerClassMap } from '../../cluster/ingressClass/types';
|
||
|
|
||
|
interface ComputeInitialValuesParams {
|
||
|
namespaceName: string;
|
||
|
environmentId: number;
|
||
|
storageClasses?: StorageClass[];
|
||
|
namespace?: PortainerNamespace;
|
||
|
registries?: Registry[];
|
||
|
ingressClasses?: IngressControllerClassMap[];
|
||
|
}
|
||
|
|
||
|
export function computeInitialValues({
|
||
|
namespaceName,
|
||
|
environmentId,
|
||
|
namespace,
|
||
|
registries,
|
||
|
ingressClasses,
|
||
|
}: ComputeInitialValuesParams): NamespaceFormValues | null {
|
||
|
if (!namespace) {
|
||
|
return null;
|
||
|
}
|
||
|
const memory = namespace.ResourceQuota?.spec?.hard?.['requests.memory'] ?? '';
|
||
|
const cpu = namespace.ResourceQuota?.spec?.hard?.['requests.cpu'] ?? '';
|
||
|
|
||
|
const registriesUsed = registries?.filter(
|
||
|
(registry) =>
|
||
|
registry.RegistryAccesses?.[`${environmentId}`]?.Namespaces.includes(
|
||
|
namespaceName
|
||
|
)
|
||
|
);
|
||
|
|
||
|
return {
|
||
|
name: namespaceName,
|
||
|
ingressClasses: ingressClasses ?? [],
|
||
|
resourceQuota: {
|
||
|
enabled: !!memory || !!cpu,
|
||
|
memory: `${megaBytesValue(memory)}`,
|
||
|
cpu: `${parseCPU(cpu)}`,
|
||
|
},
|
||
|
registries: registriesUsed ?? [],
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function useNamespaceFormValues({
|
||
|
namespaceName,
|
||
|
environmentId,
|
||
|
storageClasses,
|
||
|
namespace,
|
||
|
registries,
|
||
|
ingressClasses,
|
||
|
}: ComputeInitialValuesParams): NamespaceFormValues | null {
|
||
|
return useMemo(
|
||
|
() =>
|
||
|
computeInitialValues({
|
||
|
namespaceName,
|
||
|
environmentId,
|
||
|
storageClasses,
|
||
|
namespace,
|
||
|
registries,
|
||
|
ingressClasses,
|
||
|
}),
|
||
|
[
|
||
|
storageClasses,
|
||
|
namespace,
|
||
|
registries,
|
||
|
namespaceName,
|
||
|
ingressClasses,
|
||
|
environmentId,
|
||
|
]
|
||
|
);
|
||
|
}
|