mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 15:59:41 +02:00
fix(ingress): fix-multiple-route-on-same-ingress EE-2597 (#6609)
* fix multiple route for same ingress & improvement for multiple ingress controller
This commit is contained in:
parent
98d8cd99fb
commit
9aeedf1bfa
2 changed files with 69 additions and 65 deletions
|
@ -89,17 +89,39 @@ export class KubernetesIngressConverter {
|
|||
return ingresses;
|
||||
}
|
||||
|
||||
static deleteIngressByServiceName(formValues, service) {
|
||||
const ingresses = angular.copy(formValues.OriginalIngresses);
|
||||
ingresses.forEach((ingress) => {
|
||||
const path = _.find(ingress.Paths, { ServiceName: service.Name });
|
||||
if (path) {
|
||||
_.remove(ingress.Paths, path);
|
||||
}
|
||||
static removeIngressesPaths(ingresses, services) {
|
||||
const originalIngress = angular.copy(ingresses);
|
||||
originalIngress.forEach((ingress) => {
|
||||
services.forEach((service) => {
|
||||
_.remove(ingress.Paths, { ServiceName: service.Name });
|
||||
});
|
||||
});
|
||||
return ingresses;
|
||||
return originalIngress;
|
||||
}
|
||||
|
||||
static generateNewIngresses(ingresses, services) {
|
||||
const originalIngresses = angular.copy(ingresses);
|
||||
services
|
||||
.filter((s) => s.Ingress)
|
||||
.forEach((service) => {
|
||||
if (service.Ports.length !== 0) {
|
||||
const matchedIngress = _.find(originalIngresses, { Name: service.Ports[0].ingress.IngressName });
|
||||
if (matchedIngress) {
|
||||
const rule = new KubernetesIngressRule();
|
||||
rule.ServiceName = service.Name;
|
||||
rule.IngressName = service.Ports[0].ingress.IngressName;
|
||||
rule.Host = service.Ports[0].ingress.Host;
|
||||
rule.Path = _.startsWith(service.Ports[0].ingress.Path, '/') ? service.Ports[0].ingress.Path : '/' + service.Ports[0].ingress.Path;
|
||||
rule.Port = service.Ports[0].port;
|
||||
|
||||
matchedIngress.Paths.push(rule);
|
||||
}
|
||||
}
|
||||
});
|
||||
return originalIngresses;
|
||||
}
|
||||
|
||||
// need this function for [ resource summary ] controller
|
||||
static newApplicationFormValuesToIngresses(formValues, serviceName, servicePorts) {
|
||||
const ingresses = angular.copy(formValues.OriginalIngresses);
|
||||
servicePorts.forEach((port) => {
|
||||
|
@ -118,27 +140,6 @@ export class KubernetesIngressConverter {
|
|||
return ingresses;
|
||||
}
|
||||
|
||||
static editingFormValuesToIngresses(formValues, serviceName, servicePorts) {
|
||||
const ingresses = angular.copy(formValues.OriginalIngresses);
|
||||
servicePorts.forEach((port) => {
|
||||
const ingressMatched = _.find(ingresses, { Name: port.ingress.IngressName });
|
||||
if (ingressMatched) {
|
||||
const pathMatched = _.find(ingressMatched.Paths, { ServiceName: serviceName });
|
||||
_.remove(ingressMatched.Paths, pathMatched);
|
||||
|
||||
const rule = new KubernetesIngressRule();
|
||||
rule.ServiceName = serviceName;
|
||||
rule.IngressName = port.ingress.IngressName;
|
||||
rule.Host = port.ingress.Host;
|
||||
rule.Path = _.startsWith(port.ingress.Path, '/') ? port.ingress.Path : '/' + port.ingress.Path;
|
||||
rule.Port = port.port;
|
||||
|
||||
ingressMatched.Paths.push(rule);
|
||||
}
|
||||
});
|
||||
return ingresses;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {KubernetesResourcePoolIngressClassFormValue[]} formValues
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue