mirror of https://github.com/rancher/ui.git
158 lines
4.2 KiB
JavaScript
158 lines
4.2 KiB
JavaScript
import Ember from 'ember';
|
|
import C from 'ui/utils/constants';
|
|
|
|
export default Ember.Mixin.create({
|
|
actions: {
|
|
addListener: function() {
|
|
this.get('listenersArray').pushObject(this.get('store').createRecord({
|
|
type: 'loadBalancerListener',
|
|
name: 'uilistener',
|
|
isPublic: true,
|
|
sourcePort: '',
|
|
sourceProtocol: 'http',
|
|
ssl: false,
|
|
targetPort: '',
|
|
targetProtocol: null,
|
|
}));
|
|
},
|
|
|
|
removeListener: function(obj) {
|
|
this.get('listenersArray').removeObject(obj);
|
|
},
|
|
|
|
chooseProtocol: function(listener, key, val) {
|
|
listener.set(key,val);
|
|
},
|
|
|
|
setPublic: function(listener, isPublic) {
|
|
listener.set('isPublic', isPublic);
|
|
},
|
|
},
|
|
|
|
listenersArray: null,
|
|
initListeners: function() {
|
|
var store = this.get('store');
|
|
var out = [];
|
|
var existingService = this.get('model.service.loadBalancerListeners');
|
|
if ( existingService )
|
|
{
|
|
existingService.forEach((l) => {
|
|
var protocol = l.get('sourceProtocol');
|
|
var ssl = false;
|
|
if ( protocol === 'https' )
|
|
{
|
|
ssl = true;
|
|
protocol = 'http';
|
|
}
|
|
else if ( protocol === 'ssl' )
|
|
{
|
|
ssl = true;
|
|
protocol = 'tcp';
|
|
}
|
|
|
|
out.push(store.createRecord({
|
|
type: 'loadBalancerListener',
|
|
name: 'uilistener',
|
|
isPublic: !!l.get('sourcePort'),
|
|
sourcePort: l.get('sourcePort') ? l.get('sourcePort') : l.get('privatePort'),
|
|
sourceProtocol: protocol,
|
|
ssl: ssl,
|
|
targetPort: l.get('targetPort'),
|
|
}));
|
|
});
|
|
}
|
|
else
|
|
{
|
|
out.push(store.createRecord({
|
|
type: 'loadBalancerListener',
|
|
name: 'uilistener',
|
|
isPublic: true,
|
|
sourcePort: '',
|
|
sourceProtocol: 'http',
|
|
ssl: false,
|
|
targetPort: '',
|
|
}));
|
|
}
|
|
|
|
this.set('listenersArray', out.sortBy('sourcePort'));
|
|
},
|
|
|
|
hasMultipleListeners: function() {
|
|
return this.get('listenersArray').filterBy('sourcePort').get('length') >= 2;
|
|
}.property('listenersArray.@each.sourcePort'),
|
|
|
|
hasHttpListeners: function() {
|
|
return this.get('listenersArray').filterBy('sourceProtocol','http').get('length') > 0;
|
|
}.property('listenersArray.@each.sourceProtocol'),
|
|
|
|
sslChanged: function() {
|
|
var sslPorts = this.get('listenersArray').
|
|
filterBy('sourcePort').
|
|
filterBy('ssl',true).map((listener) => { return listener.get('sourcePort');});
|
|
|
|
if ( sslPorts.get('length') )
|
|
{
|
|
this.setLabel(C.LABEL.BALANCER_SSL_PORTS, sslPorts.join(','));
|
|
}
|
|
else
|
|
{
|
|
this.removeLabel(C.LABEL.BALANCER_SSL_PORTS);
|
|
}
|
|
|
|
}.observes('listenersArray.@each.{ssl,sourcePort}'),
|
|
|
|
sourceProtocolOptions: function() {
|
|
return ['http','tcp'];
|
|
}.property(),
|
|
|
|
stickiness: 'none',
|
|
isStickyNone: Ember.computed.equal('stickiness','none'),
|
|
isStickyLbCookie: Ember.computed.equal('stickiness','lbCookie'),
|
|
isStickyAppCookie: Ember.computed.equal('stickiness','appCookie'),
|
|
|
|
lbCookieModeChoices: [
|
|
{value: 'rewrite', label: 'Rewrite'},
|
|
{value: 'insert', label: 'Insert'},
|
|
{value: 'prefix', label: 'Prefix'},
|
|
],
|
|
|
|
appCookieModeChoices: [
|
|
{value: 'path_parameters', label: 'Path Parameter'},
|
|
{value: 'query_string', label: 'Query String'},
|
|
],
|
|
|
|
initStickiness: function() {
|
|
if ( this.get('config.appCookieStickinessPolicy') )
|
|
{
|
|
this.set('stickiness', 'appCookie');
|
|
}
|
|
else if ( this.get('config.lbCookieStickinessPolicy') )
|
|
{
|
|
this.set('stickiness', 'lbCookie');
|
|
}
|
|
else
|
|
{
|
|
this.set('stickiness','none');
|
|
}
|
|
},
|
|
|
|
stickinessDidChange: function() {
|
|
var stickiness = this.get('stickiness');
|
|
if ( stickiness === 'none' )
|
|
{
|
|
this.set('config.lbCookieStickinessPolicy', null);
|
|
this.set('config.appCookieStickinessPolicy', null);
|
|
}
|
|
else if ( stickiness === 'lbCookie' )
|
|
{
|
|
this.set('config.lbCookieStickinessPolicy', this.get('lbCookie'));
|
|
this.set('config.appCookieStickinessPolicy', null);
|
|
}
|
|
else if ( stickiness === 'appCookie' )
|
|
{
|
|
this.set('config.lbCookieStickinessPolicy', null);
|
|
this.set('config.appCookieStickinessPolicy', this.get('appCookie'));
|
|
}
|
|
}.observes('stickiness'),
|
|
});
|