diff --git a/app/authenticated/route.js b/app/authenticated/route.js index b18a6ddc6..92f0be02c 100644 --- a/app/authenticated/route.js +++ b/app/authenticated/route.js @@ -270,10 +270,6 @@ export default Ember.Route.extend({ this._includeChanged('loadBalancer', 'loadBalancerTargets', 'loadBalancerId', change.data.resource); }, - loadBalancerConfigChanged: function(change) { - this._includeChanged('loadBalancer', 'loadBalancerListeners', 'loadBalancerListeners', change.data.resource); - }, - loadBalancerChanged: function(change) { var balancer = change.data.resource; var config = balancer.get('loadBalancerConfig'); diff --git a/app/components/new-balancer/component.js b/app/components/new-balancer/component.js index 5da75ceb4..e54a3b3b7 100644 --- a/app/components/new-balancer/component.js +++ b/app/components/new-balancer/component.js @@ -8,6 +8,7 @@ export default Ember.Component.extend(NewOrEdit, SelectTab, { service: null, existing: null, balancerConfig: null, + haproxyConfig: null, allHosts: null, allServices: null, allCertificates: null, diff --git a/app/components/new-balancer/template.hbs b/app/components/new-balancer/template.hbs index 0bc9039df..9e1fec9b3 100644 --- a/app/components/new-balancer/template.hbs +++ b/app/components/new-balancer/template.hbs @@ -56,6 +56,7 @@ @@ -78,20 +79,38 @@ }} -
+
+

Additional haproxy.cfg configuration can be put here and will be appended to the configuration generated by Rancher.

+
-
- +
+ + {{textarea + value=haproxyConfig.global + prompt="Custom global section lines" + rows="8" + classNames="form-control" + }}
-
- {{form-user-labels - initialLabels=launchConfig.labels - setLabels=(action 'setLabels' 'user') +
+ + {{textarea + value=haproxyConfig.defaults + prompt="Custom defaults section lines" + rows="8" + classNames="form-control" }}
+
+ {{form-user-labels + initialLabels=launchConfig.labels + setLabels=(action 'setLabels' 'user') + }} +
+
{{form-scheduling isService=true diff --git a/app/components/stack-section/component.js b/app/components/stack-section/component.js index 3af3734d3..3db843cfc 100644 --- a/app/components/stack-section/component.js +++ b/app/components/stack-section/component.js @@ -14,7 +14,7 @@ export default Ember.Component.extend(FilterState, { collapsed: true, classNames: ['stack-section'], - filterableContent: Ember.computed.alias('model.services'), + filterableContent: Ember.computed.alias('model.unremovedServices'), actions: { toggleCollapse() { diff --git a/app/environment/route.js b/app/environment/route.js index 789a42a7b..79f918e46 100644 --- a/app/environment/route.js +++ b/app/environment/route.js @@ -12,7 +12,6 @@ export default Ember.Route.extend({ include: ['instances'] }).then((services) => { env.set('services', services||[]); - env.set('services.sortProperties', ['name','id']); return Ember.Object.create({ stack: env, all: all, diff --git a/app/environments/route.js b/app/environments/route.js index 35180b3c9..d039bb83c 100644 --- a/app/environments/route.js +++ b/app/environments/route.js @@ -20,7 +20,6 @@ export default Ember.Route.extend({ include: ['instances'] }).then((services) => { env.set('services', services||[]); - env.set('services.sortProperties', ['name','id']); return env; }); diff --git a/app/models/environment.js b/app/models/environment.js index d9bcb767d..cd31713db 100644 --- a/app/models/environment.js +++ b/app/models/environment.js @@ -193,7 +193,10 @@ var Environment = Resource.extend({ unremovedServices: function() { - return UnremovedArrayProxy.create({sourceContent: this.get('services')}); + return UnremovedArrayProxy.create({ + sourceContent: this.get('services'), + sortProperties: ['displayName','id'] + }); }.property('services'), externalIdInfo: function() { diff --git a/app/models/loadbalancerconfig.js b/app/models/loadbalancerconfig.js index 538e8c3d7..bfd506fe1 100644 --- a/app/models/loadbalancerconfig.js +++ b/app/models/loadbalancerconfig.js @@ -3,14 +3,13 @@ import Resource from 'ember-api-store/models/resource'; var LoadBalancerConfig = Resource.extend({ type: 'loadBalancerConfig', - listeners: Ember.computed.alias('loadBalancerListeners'), config: function() { return this; }.property() }); LoadBalancerConfig.reopenClass({ - alwaysInclude: ['loadBalancerListeners','loadBalancers'], + alwaysInclude: ['loadBalancers'], }); export default LoadBalancerConfig; diff --git a/app/service/new-balancer/route.js b/app/service/new-balancer/route.js index 16a647172..ef57ea706 100644 --- a/app/service/new-balancer/route.js +++ b/app/service/new-balancer/route.js @@ -14,7 +14,7 @@ export default Ember.Route.extend({ if ( params.serviceId ) { - dependencies.pushObject(store.find('service', params.serviceId, {include: ['loadbalancerlisteners']})); + dependencies.pushObject(store.find('service', params.serviceId)); } return Ember.RSVP.all(dependencies, 'Load dependencies').then(function(results) { @@ -23,10 +23,12 @@ export default Ember.Route.extend({ var allCertificates = results[2]; var existing = results[3]; - var launchConfig, lbConfig, balancer, appCookie, lbCookie; + var launchConfig, lbConfig, balancer, appCookie, lbCookie, haproxyConfig; if ( existing ) { balancer = existing.cloneForNew(); + delete balancer.instances; + launchConfig = balancer.get('launchConfig'); launchConfig.set('type','container'); launchConfig.set('healthCheck',null); @@ -39,7 +41,6 @@ export default Ember.Route.extend({ lbConfig.set('type','loadBalancerConfig'); delete lbConfig.id; lbConfig = store.createRecord(lbConfig); - lbConfig.set('loadBalancerListeners', balancer.get('loadBalancerListeners')); balancer.set('loadBalancerConfig', lbConfig); appCookie = lbConfig.get('appCookieStickinessPolicy'); @@ -57,6 +58,14 @@ export default Ember.Route.extend({ lbCookie = store.createRecord(lbCookie); lbConfig.set('lbCookieStickinessPolicy', lbCookie); } + + haproxyConfig = lbConfig.get('haproxyConfig'); + if ( haproxyConfig ) + { + haproxyConfig.set('type','haproxyConfig'); + haproxyConfig = store.createRecord(haproxyConfig); + lbConfig.set('haproxyConfig', haproxyConfig); + } } } else @@ -89,6 +98,16 @@ export default Ember.Route.extend({ }); } + if ( !haproxyConfig ) + { + haproxyConfig = store.createRecord({ + type: 'haproxyConfig', + 'global': '', + 'defaults': '' + }); + } + + lbConfig.set('haproxyConfig', haproxyConfig); balancer.set('loadBalancerConfig', lbConfig); return { @@ -99,6 +118,7 @@ export default Ember.Route.extend({ service: balancer, config: lbConfig, launchConfig: launchConfig, + haproxyConfig: haproxyConfig }; }); }, diff --git a/app/service/new-balancer/template.hbs b/app/service/new-balancer/template.hbs index 436ede140..53ec3093c 100644 --- a/app/service/new-balancer/template.hbs +++ b/app/service/new-balancer/template.hbs @@ -1,6 +1,7 @@ {{new-balancer service=model.service balancerConfig=model.config + haproxyConfig=model.haproxyConfig existing=model.existingBalancer allHosts=model.allHosts allServices=model.allServices diff --git a/config/environment.js b/config/environment.js index bd777caf6..3b028e2db 100644 --- a/config/environment.js +++ b/config/environment.js @@ -49,9 +49,6 @@ module.exports = function(environment) { '&include=hosts' + '&include=instances' + '&include=instance' + - '&include=loadBalancerConfig' + - '&include=loadBalancerTargets' + - '&include=loadBalancerListeners' + '&include=instanceLinks' + '&include=ipAddresses', baseAssets: '', diff --git a/package.json b/package.json index 5156910e2..5fd55970c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "0.70.0", + "version": "0.72.0", "private": true, "directories": { "doc": "doc", @@ -22,7 +22,7 @@ "license": "Apache 2", "devDependencies": { "broccoli-asset-rev": "^2.1.2", - "ember-api-store": "^1.2.3", + "ember-api-store": "^1.2.4", "ember-browserify": "^1.0.1", "ember-cli": "1.13.8", "ember-cli-app-version": "0.5.0",