mirror of
https://github.com/portainer/portainer.git
synced 2025-07-23 07:19:41 +02:00
feat(ingress): remove ingresses from add and edit application EE-4206 (#7677)
This commit is contained in:
parent
c384d834f5
commit
fcb76f570e
7 changed files with 31 additions and 103 deletions
|
@ -2,12 +2,7 @@ import _ from 'lodash-es';
|
|||
import angular from 'angular';
|
||||
import PortainerError from 'Portainer/error';
|
||||
|
||||
import {
|
||||
KubernetesApplication,
|
||||
KubernetesApplicationDeploymentTypes,
|
||||
KubernetesApplicationPublishingTypes,
|
||||
KubernetesApplicationTypes,
|
||||
} from 'Kubernetes/models/application/models';
|
||||
import { KubernetesApplication, KubernetesApplicationDeploymentTypes, KubernetesApplicationTypes } from 'Kubernetes/models/application/models';
|
||||
import KubernetesApplicationHelper from 'Kubernetes/helpers/application';
|
||||
import KubernetesApplicationRollbackHelper from 'Kubernetes/helpers/application/rollback';
|
||||
import KubernetesApplicationConverter from 'Kubernetes/converters/application';
|
||||
|
@ -17,7 +12,6 @@ import { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';
|
|||
import KubernetesServiceHelper from 'Kubernetes/helpers/serviceHelper';
|
||||
import { KubernetesHorizontalPodAutoScalerHelper } from 'Kubernetes/horizontal-pod-auto-scaler/helper';
|
||||
import { KubernetesHorizontalPodAutoScalerConverter } from 'Kubernetes/horizontal-pod-auto-scaler/converter';
|
||||
import { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';
|
||||
import KubernetesPodConverter from 'Kubernetes/pod/converter';
|
||||
|
||||
class KubernetesApplicationService {
|
||||
|
@ -79,12 +73,6 @@ class KubernetesApplicationService {
|
|||
return apiService;
|
||||
}
|
||||
|
||||
_generateIngressPatchPromises(oldIngresses, newIngresses) {
|
||||
return _.map(newIngresses, (newIng) => {
|
||||
const oldIng = _.find(oldIngresses, { Name: newIng.Name });
|
||||
return this.KubernetesIngressService.patch(oldIng, newIng);
|
||||
});
|
||||
}
|
||||
/* #endregion */
|
||||
|
||||
/* #region GET */
|
||||
|
@ -221,26 +209,12 @@ class KubernetesApplicationService {
|
|||
*/
|
||||
async createAsync(formValues) {
|
||||
// formValues -> Application
|
||||
let [app, headlessService, services, service, claims] = KubernetesApplicationConverter.applicationFormValuesToApplication(formValues);
|
||||
let [app, headlessService, services, claims] = KubernetesApplicationConverter.applicationFormValuesToApplication(formValues);
|
||||
|
||||
if (services) {
|
||||
services.forEach(async (service) => {
|
||||
await this.KubernetesServiceService.create(service);
|
||||
});
|
||||
|
||||
//Generate all ingresses from current form by passing services object
|
||||
const ingresses = KubernetesIngressConverter.generateNewIngresses(formValues.OriginalIngresses, services);
|
||||
if (ingresses) {
|
||||
//Update original ingress with current ingress
|
||||
await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, ingresses));
|
||||
}
|
||||
}
|
||||
|
||||
if (service) {
|
||||
if (formValues.PublishingType === KubernetesApplicationPublishingTypes.INGRESS) {
|
||||
const ingresses = KubernetesIngressConverter.applicationFormValuesToIngresses(formValues, service.Name);
|
||||
await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, ingresses));
|
||||
}
|
||||
}
|
||||
|
||||
const apiService = this._getApplicationApiService(app);
|
||||
|
@ -322,20 +296,10 @@ class KubernetesApplicationService {
|
|||
newServices.forEach(async (service) => {
|
||||
await this.KubernetesServiceService.create(service);
|
||||
});
|
||||
|
||||
// Create multiple ingress
|
||||
const ingresses = KubernetesIngressConverter.generateNewIngresses(oldFormValues.OriginalIngresses, newServices);
|
||||
if (ingresses) {
|
||||
await Promise.all(this._generateIngressPatchPromises(oldFormValues.OriginalIngresses, ingresses));
|
||||
}
|
||||
}
|
||||
|
||||
// Delete services ( only called when all services been deleted )
|
||||
if (oldServices.length !== 0 && newServices.length === 0) {
|
||||
const ingresses = KubernetesIngressConverter.removeIngressesPaths(oldFormValues.OriginalIngresses, oldServices);
|
||||
if (ingresses) {
|
||||
await Promise.all(this._generateIngressPatchPromises(oldFormValues.OriginalIngresses, ingresses));
|
||||
}
|
||||
await this.KubernetesServiceService.deleteAll(oldServices);
|
||||
}
|
||||
|
||||
|
@ -356,15 +320,6 @@ class KubernetesApplicationService {
|
|||
await this.KubernetesServiceService.create(newService);
|
||||
}
|
||||
});
|
||||
|
||||
// Clear all ingress which is related to services in this application
|
||||
const clearIngress = KubernetesIngressConverter.removeIngressesPaths(oldFormValues.OriginalIngresses, oldServices);
|
||||
|
||||
// Generate all ingress from services in this application
|
||||
const newIngress = KubernetesIngressConverter.generateNewIngresses(clearIngress, newServices);
|
||||
|
||||
// Compare new ingress with old ingress to get api patch
|
||||
await Promise.all(this._generateIngressPatchPromises(oldFormValues.OriginalIngresses, newIngress));
|
||||
}
|
||||
|
||||
const newKind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(newApp);
|
||||
|
@ -438,17 +393,6 @@ class KubernetesApplicationService {
|
|||
if (application.ServiceType) {
|
||||
// delete headless service && non-headless service
|
||||
await this.KubernetesServiceService.delete(application.Services);
|
||||
|
||||
if (application.Ingresses.length) {
|
||||
const originalIngresses = await this.KubernetesIngressService.get(payload.Namespace);
|
||||
const formValues = {
|
||||
OriginalIngresses: originalIngresses,
|
||||
PublishedPorts: KubernetesApplicationHelper.generatePublishedPortsFormValuesFromPublishedPorts(application.ServiceType, application.PublishedPorts),
|
||||
};
|
||||
const ingresses = KubernetesIngressConverter.applicationFormValuesToDeleteIngresses(formValues, application);
|
||||
|
||||
await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, ingresses));
|
||||
}
|
||||
}
|
||||
if (!_.isEmpty(application.AutoScaler)) {
|
||||
await this.KubernetesHorizontalPodAutoScalerService.delete(application.AutoScaler);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue