mirror of https://github.com/portainer/portainer
94 lines
2.9 KiB
JavaScript
94 lines
2.9 KiB
JavaScript
import _ from 'lodash-es';
|
|
import { KubernetesServicePort, KubernetesIngressServiceRoute } from 'Kubernetes/models/service/models';
|
|
import { KubernetesFormValidationReferences } from 'Kubernetes/models/application/formValues';
|
|
import KubernetesFormValidationHelper from 'Kubernetes/helpers/formValidationHelper';
|
|
import { KubernetesApplicationPublishingTypes } from 'Kubernetes/models/application/models/constants';
|
|
|
|
export default class KubeServicesItemViewController {
|
|
/* @ngInject */
|
|
constructor(EndpointProvider, Authentication) {
|
|
this.EndpointProvider = EndpointProvider;
|
|
this.Authentication = Authentication;
|
|
this.KubernetesApplicationPublishingTypes = KubernetesApplicationPublishingTypes;
|
|
}
|
|
|
|
addPort() {
|
|
const port = new KubernetesServicePort();
|
|
port.nodePort = '';
|
|
port.port = '';
|
|
port.targetPort = '';
|
|
port.protocol = 'TCP';
|
|
|
|
if (this.ingressType) {
|
|
const route = new KubernetesIngressServiceRoute();
|
|
route.ServiceName = this.serviceName;
|
|
|
|
if (this.serviceType === KubernetesApplicationPublishingTypes.CLUSTER_IP && this.originalIngresses.length > 0) {
|
|
if (!route.IngressName) {
|
|
route.IngressName = this.originalIngresses[0].Name;
|
|
}
|
|
|
|
if (!route.Host) {
|
|
route.Host = this.originalIngresses[0].Hosts[0];
|
|
}
|
|
}
|
|
|
|
port.ingress = route;
|
|
port.Ingress = true;
|
|
}
|
|
this.servicePorts.push(port);
|
|
}
|
|
|
|
removePort(index) {
|
|
this.servicePorts.splice(index, 1);
|
|
}
|
|
|
|
servicePort(index) {
|
|
const targetPort = this.servicePorts[index].targetPort;
|
|
this.servicePorts[index].port = targetPort;
|
|
}
|
|
|
|
isAdmin() {
|
|
return this.Authentication.isAdmin();
|
|
}
|
|
|
|
onChangeContainerPort() {
|
|
const state = this.state.duplicates.targetPort;
|
|
const source = _.map(this.servicePorts, (sp) => sp.targetPort);
|
|
const duplicates = KubernetesFormValidationHelper.getDuplicates(source);
|
|
state.refs = duplicates;
|
|
state.hasRefs = Object.keys(duplicates).length > 0;
|
|
}
|
|
|
|
onChangeServicePort() {
|
|
const state = this.state.duplicates.servicePort;
|
|
const source = _.map(this.servicePorts, (sp) => sp.port);
|
|
const duplicates = KubernetesFormValidationHelper.getDuplicates(source);
|
|
state.refs = duplicates;
|
|
state.hasRefs = Object.keys(duplicates).length > 0;
|
|
}
|
|
|
|
onChangeNodePort() {
|
|
const state = this.state.duplicates.nodePort;
|
|
const source = _.map(this.servicePorts, (sp) => sp.nodePort);
|
|
const duplicates = KubernetesFormValidationHelper.getDuplicates(source);
|
|
state.refs = duplicates;
|
|
state.hasRefs = Object.keys(duplicates).length > 0;
|
|
}
|
|
|
|
$onInit() {
|
|
if (this.servicePorts.length === 0) {
|
|
this.addPort();
|
|
}
|
|
|
|
this.state = {
|
|
duplicates: {
|
|
targetPort: new KubernetesFormValidationReferences(),
|
|
servicePort: new KubernetesFormValidationReferences(),
|
|
nodePort: new KubernetesFormValidationReferences(),
|
|
},
|
|
endpointId: this.EndpointProvider.endpointID(),
|
|
};
|
|
}
|
|
}
|