mirror of https://github.com/portainer/portainer
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
|
import { EnvironmentId } from '@/portainer/environments/types';
|
||
|
import PortainerError from '@/portainer/error';
|
||
|
import axios from '@/portainer/services/axios';
|
||
|
|
||
|
import { IngressControllerClassMap } from '../types';
|
||
|
|
||
|
// get all supported ingress classes and controllers for the cluster
|
||
|
// allowedOnly set to true will hide globally disallowed ingresscontrollers
|
||
|
export async function getIngressControllerClassMap({
|
||
|
environmentId,
|
||
|
namespace,
|
||
|
allowedOnly,
|
||
|
}: {
|
||
|
environmentId: EnvironmentId;
|
||
|
namespace?: string;
|
||
|
allowedOnly?: boolean;
|
||
|
}) {
|
||
|
try {
|
||
|
const { data: controllerMaps } = await axios.get<
|
||
|
IngressControllerClassMap[]
|
||
|
>(
|
||
|
buildUrl(environmentId, namespace),
|
||
|
allowedOnly ? { params: { allowedOnly: true } } : undefined
|
||
|
);
|
||
|
return controllerMaps;
|
||
|
} catch (e) {
|
||
|
throw new PortainerError('Unable to get ingress controllers.', e as Error);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// get all supported ingress classes and controllers for the cluster
|
||
|
export async function updateIngressControllerClassMap(
|
||
|
environmentId: EnvironmentId,
|
||
|
ingressControllerClassMap: IngressControllerClassMap[],
|
||
|
namespace?: string
|
||
|
) {
|
||
|
try {
|
||
|
const { data: controllerMaps } = await axios.put<
|
||
|
IngressControllerClassMap[]
|
||
|
>(buildUrl(environmentId, namespace), ingressControllerClassMap);
|
||
|
return controllerMaps;
|
||
|
} catch (e) {
|
||
|
throw new PortainerError(
|
||
|
'Unable to update ingress controllers.',
|
||
|
e as Error
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function buildUrl(environmentId: EnvironmentId, namespace?: string) {
|
||
|
let url = `kubernetes/${environmentId}/`;
|
||
|
if (namespace) {
|
||
|
url += `namespaces/${namespace}/`;
|
||
|
}
|
||
|
url += 'ingresscontrollers';
|
||
|
return url;
|
||
|
}
|