mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			189 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			HTML
		
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			HTML
		
	
	
<ng-form name="serviceForm">
 | 
						|
  <div ng-if="$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled">
 | 
						|
    <p class="text-warning vertical-center pt-2">
 | 
						|
      <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, click
 | 
						|
      <a class="hyperlink" ui-sref="kubernetes.cluster.setup">here</a> to configure load balancer.
 | 
						|
    </p>
 | 
						|
  </div>
 | 
						|
  <div ng-if="!$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled">
 | 
						|
    <p class="text-warning vertical-center pt-2">
 | 
						|
      <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, contact your administrator.
 | 
						|
    </p>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <div
 | 
						|
    ng-if="
 | 
						|
      ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && $ctrl.loadbalancerEnabled) ||
 | 
						|
      $ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.CLUSTER_IP ||
 | 
						|
      $ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT
 | 
						|
    "
 | 
						|
  >
 | 
						|
    <div ng-show="!$ctrl.multiItemDisable" class="vertical-center mt-5 mb-5">
 | 
						|
      <label class="control-label !pt-0 text-left">Published ports</label>
 | 
						|
    </div>
 | 
						|
    <div ng-repeat="servicePort in $ctrl.service.Ports" class="service-form row mt-5">
 | 
						|
      <div class="form-group col-sm-3 !mx-0 !pl-0">
 | 
						|
        <div class="input-group input-group-sm">
 | 
						|
          <span class="input-group-addon required">Container port</span>
 | 
						|
          <input
 | 
						|
            type="number"
 | 
						|
            class="form-control"
 | 
						|
            name="container_port_{{ $index }}"
 | 
						|
            ng-model="servicePort.targetPort"
 | 
						|
            placeholder="80"
 | 
						|
            ng-min="1"
 | 
						|
            ng-max="65535"
 | 
						|
            min="1"
 | 
						|
            max="65535"
 | 
						|
            ng-change="$ctrl.servicePort($index)"
 | 
						|
            required
 | 
						|
            ng-disabled="$ctrl.originalIngresses.length === 0 || ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled)"
 | 
						|
            ng-change="$ctrl.onChangeContainerPort()"
 | 
						|
            data-cy="k8sAppCreate-containerPort_{{ $index }}"
 | 
						|
          />
 | 
						|
        </div>
 | 
						|
        <span>
 | 
						|
          <div class="small text-warning mt-1" ng-if="$ctrl.state.duplicates.targetPort.refs[$index] !== undefined">
 | 
						|
            <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This container port is already used.
 | 
						|
          </div>
 | 
						|
          <div class="small text-warning mt-1" ng-messages="serviceForm['container_port_'+$index].$error">
 | 
						|
            <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number is required.</p>
 | 
						|
            <p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p>
 | 
						|
            <p class="vertical-center" ng-message="max"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p>
 | 
						|
          </div>
 | 
						|
        </span>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <div class="form-group col-sm-3 !mx-0 !pl-0">
 | 
						|
        <div class="input-group input-group-sm">
 | 
						|
          <span class="input-group-addon required">Service port</span>
 | 
						|
          <input
 | 
						|
            type="number"
 | 
						|
            class="form-control"
 | 
						|
            name="service_port_{{ $index }}"
 | 
						|
            ng-model="servicePort.port"
 | 
						|
            placeholder="80"
 | 
						|
            ng-min="1"
 | 
						|
            ng-max="65535"
 | 
						|
            min="1"
 | 
						|
            max="65535"
 | 
						|
            required
 | 
						|
            ng-disabled="$ctrl.originalIngresses.length === 0 || ($ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled)"
 | 
						|
            ng-change="$ctrl.onChangeServicePort()"
 | 
						|
            data-cy="k8sAppCreate-servicePort_{{ $index }}"
 | 
						|
          />
 | 
						|
        </div>
 | 
						|
        <span>
 | 
						|
          <div class="small text-warning mt-1" ng-if="$ctrl.state.duplicates.servicePort.refs[$index] !== undefined">
 | 
						|
            <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This service port is already used.
 | 
						|
          </div>
 | 
						|
          <div class="small text-warning mt-1">
 | 
						|
            <div ng-messages="serviceForm['service_port_'+$index].$error">
 | 
						|
              <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number is required.</p>
 | 
						|
              <p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number must be inside the range 1-65535.</p>
 | 
						|
              <p class="vertical-center" ng-message="max"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number must be inside the range 1-65535.</p>
 | 
						|
            </div>
 | 
						|
          </div>
 | 
						|
        </span>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <div class="form-group col-sm-3 !mx-0 !pl-0" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT">
 | 
						|
        <div class="input-group input-group-sm">
 | 
						|
          <span class="input-group-addon required">Nodeport</span>
 | 
						|
          <input
 | 
						|
            type="number"
 | 
						|
            class="form-control"
 | 
						|
            name="node_port_{{ $index }}"
 | 
						|
            ng-model="servicePort.nodePort"
 | 
						|
            placeholder="30080"
 | 
						|
            ng-min="30000"
 | 
						|
            ng-max="32767"
 | 
						|
            min="30000"
 | 
						|
            max="32767"
 | 
						|
            required
 | 
						|
            ng-change="$ctrl.onChangeNodePort()"
 | 
						|
            data-cy="k8sAppCreate-nodeportPort_{{ $index }}"
 | 
						|
          />
 | 
						|
        </div>
 | 
						|
        <div class="w-full">
 | 
						|
          <span>
 | 
						|
            <div class="small text-warning mt-1">
 | 
						|
              <div ng-messages="serviceForm['node_port_'+$index].$error">
 | 
						|
                <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport is required.</p>
 | 
						|
                <p class="vertical-center" ng-message="min"
 | 
						|
                  ><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system allocated.</p
 | 
						|
                >
 | 
						|
                <p class="vertical-center" ng-message="max"
 | 
						|
                  ><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system allocated.</p
 | 
						|
                >
 | 
						|
                <div class="text-warning mt-1" ng-if="$ctrl.state.duplicates.nodePort.refs[$index] !== undefined">
 | 
						|
                  <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This node port is already used.
 | 
						|
                </div>
 | 
						|
              </div>
 | 
						|
            </div>
 | 
						|
          </span>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
      <div class="form-group col-sm-3 !mx-0 !pl-0" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER">
 | 
						|
        <div class="input-group input-group-sm">
 | 
						|
          <span class="input-group-addon">Loadbalancer port</span>
 | 
						|
          <input
 | 
						|
            type="number"
 | 
						|
            class="form-control"
 | 
						|
            name="loadbalancer_port_{{ $index }}"
 | 
						|
            ng-model="servicePort.port"
 | 
						|
            placeholder="80"
 | 
						|
            ng-min="1"
 | 
						|
            ng-max="65535"
 | 
						|
            min="1"
 | 
						|
            max="65535"
 | 
						|
            required
 | 
						|
            ng-disabled="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled"
 | 
						|
            data-cy="k8sAppCreate-loadbalancerPort_{{ $index }}"
 | 
						|
          />
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <div class="form-group col-sm-3 !mx-0 !pl-0">
 | 
						|
        <div class="input-group input-group-sm">
 | 
						|
          <div class="btn-group btn-group-sm">
 | 
						|
            <label
 | 
						|
              class="btn btn-light"
 | 
						|
              ng-model="servicePort.protocol"
 | 
						|
              uib-btn-radio="'TCP'"
 | 
						|
              ng-change="ctrl.onChangePortProtocol($index)"
 | 
						|
              ng-disabled="ctrl.isProtocolOptionDisabled($index, 'TCP')"
 | 
						|
              data-cy="k8sAppCreate-TCPButton_{{ $index }}"
 | 
						|
              >TCP</label
 | 
						|
            >
 | 
						|
            <label
 | 
						|
              class="btn btn-light"
 | 
						|
              ng-model="servicePort.protocol"
 | 
						|
              uib-btn-radio="'UDP'"
 | 
						|
              ng-change="ctrl.onChangePortProtocol($index)"
 | 
						|
              ng-disabled="ctrl.isProtocolOptionDisabled($index, 'UDP')"
 | 
						|
              data-cy="k8sAppCreate-UDPButton_{{ $index }}"
 | 
						|
              >UDP</label
 | 
						|
            >
 | 
						|
          </div>
 | 
						|
          <button
 | 
						|
            ng-disabled="$ctrl.service.Ports.length === 1"
 | 
						|
            ng-show="!$ctrl.multiItemDisable"
 | 
						|
            class="btn btn-sm btn-dangerlight btn-only-icon"
 | 
						|
            type="button"
 | 
						|
            ng-click="$ctrl.removePort($index)"
 | 
						|
            data-cy="k8sAppCreate-rmPortButton_{{ $index }}"
 | 
						|
          >
 | 
						|
            <pr-icon icon="'trash-2'" size="'md'"></pr-icon>
 | 
						|
          </button>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    </div>
 | 
						|
    <div class="mt-4">
 | 
						|
      <span class="btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0" ng-click="$ctrl.addPort()" data-cy="k8sAppCreate-addNewPortButton">
 | 
						|
        <pr-icon icon="'plus'" size="'sm'"></pr-icon> Publish a new port
 | 
						|
      </span>
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
</ng-form>
 |