mirror of https://github.com/portainer/portainer
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { EnvironmentId } from '@/react/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;
|
|
}
|