You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/03/06 02:49:41 UTC
[1/2] ambari git commit: AMBARI-9950. YARN RM HA Mode Configurations
Are Incorrect (alexantonenko)
Repository: ambari
Updated Branches:
refs/heads/branch-2.0.0 b1e41005b -> 1956e0cd6
AMBARI-9950. YARN RM HA Mode Configurations Are Incorrect (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1956e0cd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1956e0cd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1956e0cd
Branch: refs/heads/branch-2.0.0
Commit: 1956e0cd6f5f70f830cf7d6c01ea493c945e2a4b
Parents: 21c67f9
Author: Alex Antonenko <hi...@gmail.com>
Authored: Fri Mar 6 03:35:28 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Fri Mar 6 03:49:31 2015 +0200
----------------------------------------------------------------------
.../resourceManager/step3_controller.js | 65 +++++++++++++-------
ambari-web/app/data/HDP2/rm_ha_properties.js | 46 ++++++++++++++
.../resourceManager/step3_controller_test.js | 63 +++++++++++++++++--
3 files changed, 147 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1956e0cd/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
index 18e1d38..f97bd07 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability/resourceManager/step3_controller.js
@@ -70,7 +70,8 @@ App.RMHighAvailabilityWizardStep3Controller = Em.Controller.extend({
},
loadConfigTagsSuccessCallback: function (data, opt, params) {
- var urlParams = '(type=zoo.cfg&tag=' + data.Clusters.desired_configs['zoo.cfg'].tag + ')';
+ var urlParams = '(type=zoo.cfg&tag=' + data.Clusters.desired_configs['zoo.cfg'].tag + ')|' +
+ '(type=yarn-site&tag=' + data.Clusters.desired_configs['yarn-site'].tag + ')';
App.ajax.send({
name: 'reassign.load_configs',
sender: this,
@@ -79,25 +80,27 @@ App.RMHighAvailabilityWizardStep3Controller = Em.Controller.extend({
serviceConfig: params.serviceConfig
},
success: 'loadConfigsSuccessCallback',
- error: 'loadConfigsErrorCallback'
+ error: 'loadConfigsSuccessCallback'
});
},
loadConfigsSuccessCallback: function (data, opt, params) {
- var zooCfg = data.items.findProperty('type', 'zoo.cfg');
- var portValue = zooCfg && Em.get(zooCfg, 'properties.clientPort');
- var zkPort = typeof portValue === 'undefined' ? '2181' : portValue;
- this.setDynamicConfigValues(params.serviceConfig, zkPort);
- this.setProperties({
- selectedService: params.serviceConfig,
- isLoaded: true
- });
- },
+ var
+ zooCfg = data && data.items ? data.items.findProperty('type', 'zoo.cfg') : null,
+ yarnSite = data && data.items ? data.items.findProperty('type', 'yarn-site') : null,
+ portValue = zooCfg && Em.get(zooCfg, 'properties.clientPort'),
+ zkPort = portValue ? portValue : '2181',
+ webAddressPort = yarnSite && yarnSite.properties ? yarnSite.properties['yarn.resourcemanager.webapp.address'] : null,
+ httpsWebAddressPort = yarnSite && yarnSite.properties ? yarnSite. properties['yarn.resourcemanager.webapp.https.address'] : null;
+
+ webAddressPort = webAddressPort && webAddressPort.match(/:[0-9]*/g) ? webAddressPort.match(/:[0-9]*/g)[0] : ":8088";
+ httpsWebAddressPort = httpsWebAddressPort && httpsWebAddressPort.match(/:[0-9]*/g) ? httpsWebAddressPort.match(/:[0-9]*/g)[0] : ":8090";
+
+ params = params.serviceConfig ? params.serviceConfig : arguments[4].serviceConfig;
- loadConfigsErrorCallback: function (request, ajaxOptions, error, data, params) {
- this.setDynamicConfigValues(params.serviceConfig, '2181');
+ this.setDynamicConfigValues(params, zkPort, webAddressPort, httpsWebAddressPort);
this.setProperties({
- selectedService: params.serviceConfig,
+ selectedService: params,
isLoaded: true
});
},
@@ -106,17 +109,37 @@ App.RMHighAvailabilityWizardStep3Controller = Em.Controller.extend({
* Set values dependent on host selection
* @param configs
* @param zkPort
+ * @param webAddressPort
+ * @param httpsWebAddressPort
*/
- setDynamicConfigValues: function (configs, zkPort) {
- var configProperties = configs.configs;
- var currentRMHost = this.get('content.rmHosts.currentRM');
- var additionalRMHost = this.get('content.rmHosts.additionalRM');
- var zooKeeperHostsWithPort = App.HostComponent.find().filterProperty('componentName', 'ZOOKEEPER_SERVER').map(function (item) {
- return item.get('host.hostName') + ':' + zkPort;
- }).join(',');
+ setDynamicConfigValues: function (configs, zkPort, webAddressPort, httpsWebAddressPort) {
+ var
+ configProperties = configs.configs,
+ currentRMHost = this.get('content.rmHosts.currentRM'),
+ additionalRMHost = this.get('content.rmHosts.additionalRM'),
+ zooKeeperHostsWithPort = App.HostComponent.find().filterProperty('componentName', 'ZOOKEEPER_SERVER').map(function (item) {
+ return item.get('host.hostName') + ':' + zkPort;
+ }).join(',');
+
configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm1').set('value', currentRMHost).set('defaultValue', currentRMHost);
configProperties.findProperty('name', 'yarn.resourcemanager.hostname.rm2').set('value', additionalRMHost).set('defaultValue', additionalRMHost);
configProperties.findProperty('name', 'yarn.resourcemanager.zk-address').set('value', zooKeeperHostsWithPort).set('defaultValue', zooKeeperHostsWithPort);
+
+ configProperties.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1')
+ .set('value', currentRMHost + webAddressPort)
+ .set('defaultValue', currentRMHost + webAddressPort);
+
+ configProperties.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2')
+ .set('value', additionalRMHost + webAddressPort)
+ .set('defaultValue', additionalRMHost + webAddressPort);
+
+ configProperties.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1')
+ .set('value', currentRMHost + httpsWebAddressPort)
+ .set('defaultValue', currentRMHost + httpsWebAddressPort);
+
+ configProperties.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2')
+ .set('value', additionalRMHost + httpsWebAddressPort)
+ .set('defaultValue', additionalRMHost + httpsWebAddressPort);
},
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/1956e0cd/ambari-web/app/data/HDP2/rm_ha_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/rm_ha_properties.js b/ambari-web/app/data/HDP2/rm_ha_properties.js
index 84e3cd8..ef77b1e 100644
--- a/ambari-web/app/data/HDP2/rm_ha_properties.js
+++ b/ambari-web/app/data/HDP2/rm_ha_properties.js
@@ -61,6 +61,52 @@ module.exports =
"filename": "yarn-site",
serviceName: 'MISC'
},
+
+ {
+ "id": "site property",
+ "name": "yarn.resourcemanager.webapp.address.rm1",
+ "displayName": "yarn.resourcemanager.webapp.address.rm1",
+ "isReconfigurable": false,
+ "defaultValue": "",
+ "value": "",
+ "category": "YARN",
+ "filename": "yarn-site",
+ serviceName: 'MISC'
+ },
+ {
+ "id": "site property",
+ "name": "yarn.resourcemanager.webapp.address.rm2",
+ "displayName": "yarn.resourcemanager.webapp.address.rm2",
+ "isReconfigurable": false,
+ "defaultValue": "",
+ "value": "",
+ "category": "YARN",
+ "filename": "yarn-site",
+ serviceName: 'MISC'
+ },
+ {
+ "id": "site property",
+ "name": "yarn.resourcemanager.webapp.https.address.rm1",
+ "displayName": "yarn.resourcemanager.webapp.https.address.rm1",
+ "isReconfigurable": false,
+ "defaultValue": "",
+ "value": "",
+ "category": "YARN",
+ "filename": "yarn-site",
+ serviceName: 'MISC'
+ },
+ {
+ "id": "site property",
+ "name": "yarn.resourcemanager.webapp.https.address.rm2",
+ "displayName": "yarn.resourcemanager.webapp.https.address.rm2",
+ "isReconfigurable": false,
+ "defaultValue": "",
+ "value": "",
+ "category": "YARN",
+ "filename": "yarn-site",
+ serviceName: 'MISC'
+ },
+
{
"id": "site property",
"name": "yarn.resourcemanager.hostname.rm2",
http://git-wip-us.apache.org/repos/asf/ambari/blob/1956e0cd/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js b/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
index 155bc67..b85d665 100644
--- a/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/highAvailability/resourceManager/step3_controller_test.js
@@ -64,6 +64,9 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
'desired_configs': {
'zoo.cfg': {
'tag': 1
+ },
+ 'yarn-site': {
+ 'tag': 1
}
}
}
@@ -71,7 +74,7 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
'serviceConfig': {}
});
var data = App.ajax.send.args[0][0].data;
- expect(data.urlParams).to.equal('(type=zoo.cfg&tag=1)');
+ expect(data.urlParams).to.equal('(type=zoo.cfg&tag=1)|(type=yarn-site&tag=1)');
expect(data.serviceConfig).to.eql({});
});
@@ -87,18 +90,25 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
'serviceConfig': {}
},
'port': '2181',
+ 'webAddressPort' : ':8088',
+ 'httpsWebAddressPort' : ':8090',
'title': 'empty response'
},
{
'items': [
{
'type': 'zoo.cfg'
+ },
+ {
+ 'type': 'yarn-site'
}
],
'params': {
'serviceConfig': {}
},
'port': '2181',
+ 'webAddressPort' : ':8088',
+ 'httpsWebAddressPort' : ':8090',
'title': 'no zoo.cfg properties received'
},
{
@@ -108,12 +118,20 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
'properties': {
'n': 'v'
}
+ },
+ {
+ 'type': 'yarn-site',
+ 'properties': {
+ 'n': 'v'
+ }
}
],
'params': {
'serviceConfig': {}
},
'port': '2181',
+ 'webAddressPort' : ':8088',
+ 'httpsWebAddressPort' : ':8090',
'title': 'no clientPort property received'
},
{
@@ -123,12 +141,21 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
'properties': {
'clientPort': '2182'
}
+ },
+ {
+ 'type': 'yarn-site',
+ 'properties': {
+ 'yarn.resourcemanager.webapp.address' : 'c6402.ambari.apache.org:7777',
+ 'yarn.resourcemanager.webapp.https.address' : 'c6402.ambari.apache.org:8888'
+ }
}
],
'params': {
'serviceConfig': {}
},
'port': '2182',
+ 'webAddressPort' : ':7777',
+ 'httpsWebAddressPort' : ':8888',
'title': 'clientPort property received'
}
];
@@ -146,7 +173,7 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
controller.loadConfigsSuccessCallback({
items: item.items
}, {}, item.params);
- expect(controller.setDynamicConfigValues.args[0]).to.eql([{}, item.port]);
+ expect(controller.setDynamicConfigValues.args[0]).to.eql([{}, item.port, item.webAddressPort, item.httpsWebAddressPort]);
expect(controller.get('selectedService')).to.eql({});
expect(controller.get('isLoaded')).to.be.true;
});
@@ -154,7 +181,7 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
});
- describe('#loadConfigsErrorCallback', function () {
+ describe('#loadConfigsSuccessCallback=loadConfigsErrorCallback(we have one callback for bouth cases)', function () {
var controller = App.RMHighAvailabilityWizardStep3Controller.create();
@@ -167,10 +194,11 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
});
it('should proceed with default value', function () {
- controller.loadConfigsErrorCallback({}, {}, {}, {}, {
+ controller.loadConfigsSuccessCallback({}, {}, {}, {}, {
serviceConfig: {}
});
- expect(controller.setDynamicConfigValues.args[0]).to.eql([{}, '2181']);
+ console.error("test_alex!!!!!",controller.setDynamicConfigValues.args[0]);
+ expect(controller.setDynamicConfigValues.args[0]).to.eql([{}, '2181', ':8088', ':8090']);
expect(controller.get('selectedService')).to.eql({});
expect(controller.get('isLoaded')).to.be.true;
});
@@ -197,6 +225,18 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
}),
Em.Object.create({
name: 'yarn.resourcemanager.zk-address'
+ }),
+ Em.Object.create({
+ name: 'yarn.resourcemanager.webapp.address.rm1'
+ }),
+ Em.Object.create({
+ name: 'yarn.resourcemanager.webapp.address.rm2'
+ }),
+ Em.Object.create({
+ name: 'yarn.resourcemanager.webapp.https.address.rm1'
+ }),
+ Em.Object.create({
+ name: 'yarn.resourcemanager.webapp.https.address.rm2'
})
]
};
@@ -231,11 +271,22 @@ describe('App.RMHighAvailabilityWizardStep3Controller', function () {
});
it('setting new RM properties values', function () {
- controller.setDynamicConfigValues(configs, '2181');
+ controller.setDynamicConfigValues(configs, '2181', ':8088', ':8090');
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm1').get('value')).to.equal('h0');
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm1').get('defaultValue')).to.equal('h0');
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm2').get('value')).to.equal('h1');
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.hostname.rm2').get('defaultValue')).to.equal('h1');
+
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1').get('value')).to.equal('h0:8088');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm1').get('defaultValue')).to.equal('h0:8088');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2').get('value')).to.equal('h1:8088');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.address.rm2').get('defaultValue')).to.equal('h1:8088');
+
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1').get('value')).to.equal('h0:8090');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm1').get('defaultValue')).to.equal('h0:8090');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2').get('value')).to.equal('h1:8090');
+ expect(configs.configs.findProperty('name', 'yarn.resourcemanager.webapp.https.address.rm2').get('defaultValue')).to.equal('h1:8090');
+
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.zk-address').get('value')).to.equal('h2:2181,h3:2181');
expect(configs.configs.findProperty('name', 'yarn.resourcemanager.zk-address').get('defaultValue')).to.equal('h2:2181,h3:2181');
});
[2/2] ambari git commit: AMBARI-9949. Add Service: Choose Services
page,
selected service issue during navigation to wizard from Stack Versions page.
(alexantonenko)
Posted by al...@apache.org.
AMBARI-9949. Add Service: Choose Services page, selected service issue during navigation to wizard from Stack Versions page. (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/21c67f93
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/21c67f93
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/21c67f93
Branch: refs/heads/branch-2.0.0
Commit: 21c67f93ba87750f418ac1e08da4ce4d9430a35c
Parents: b1e4100
Author: Alex Antonenko <hi...@gmail.com>
Authored: Thu Mar 5 21:42:25 2015 +0200
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Fri Mar 6 03:49:31 2015 +0200
----------------------------------------------------------------------
.../controllers/main/service/add_controller.js | 5 +-
.../main/service/add_controller_test.js | 84 ++++++++++++++++++++
2 files changed, 87 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/21c67f93/ambari-web/app/controllers/main/service/add_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js
index b340e68..c1682a9 100644
--- a/ambari-web/app/controllers/main/service/add_controller.js
+++ b/ambari-web/app/controllers/main/service/add_controller.js
@@ -30,7 +30,7 @@ App.AddServiceController = App.WizardController.extend(App.AddSecurityConfigs, {
hideBackButton: true,
/**
- * @type {object}
+ * @type {string}
* @default null
*/
serviceToInstall: null,
@@ -201,7 +201,7 @@ App.AddServiceController = App.WizardController.extend(App.AddSecurityConfigs, {
};
App.StackService.find().forEach(function (item) {
var isInstalled = App.Service.find().someProperty('id', item.get('serviceName'));
- var isSelected = item.get('serviceName') == this.get('serviceToInstall');
+ var isSelected = (item.get('serviceName') == this.get('serviceToInstall')) || item.get('coSelectedServices').contains(this.get('serviceToInstall'));
item.set('isSelected', isInstalled || isSelected);
item.set('isInstalled', isInstalled);
if (isInstalled) {
@@ -227,6 +227,7 @@ App.AddServiceController = App.WizardController.extend(App.AddSecurityConfigs, {
this.get('isStepDisabled').findProperty('step', 3).set('value', this.get('content.skipSlavesStep'));
}
}
+ this.set('serviceToInstall', null);
this.set('content.services', App.StackService.find());
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/21c67f93/ambari-web/test/controllers/main/service/add_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/add_controller_test.js b/ambari-web/test/controllers/main/service/add_controller_test.js
index 2054cc1..79b0f21 100644
--- a/ambari-web/test/controllers/main/service/add_controller_test.js
+++ b/ambari-web/test/controllers/main/service/add_controller_test.js
@@ -339,4 +339,88 @@ describe('App.AddServiceController', function() {
});
});
+
+ describe('#loadServices', function() {
+ beforeEach(function() {
+ this.controller = App.AddServiceController.create({});
+ this.db = {};
+ sinon.stub(this.controller, 'getDBProperty');
+ sinon.stub(this.controller, 'setDBProperty', function(key, value) {
+ this.db = value;
+ }.bind(this));
+ });
+
+ afterEach(function() {
+ this.controller.getDBProperty.restore();
+ this.controller.setDBProperty.restore();
+ });
+
+ var tests = [
+ {
+ appStackService: [
+ Em.Object.create({ id: 'HDFS', serviceName: 'HDFS', coSelectedServices: []}),
+ Em.Object.create({ id: 'YARN', serviceName: 'YARN', coSelectedServices: ['MAPREDUCE2']}),
+ Em.Object.create({ id: 'MAPREDUCE2', serviceName: 'MAPREDUCE2', coSelectedServices: []}),
+ Em.Object.create({ id: 'FALCON', serviceName: 'FALCON', coSelectedServices: []}),
+ Em.Object.create({ id: 'STORM', serviceName: 'STORM', coSelectedServices: []})
+ ],
+ appService: [
+ Em.Object.create({ id: 'HDFS', serviceName: 'HDFS'}),
+ Em.Object.create({ id: 'STORM', serviceName: 'STORM'})
+ ],
+ servicesFromDB: false,
+ serviceToInstall: 'MAPREDUCE2',
+ e: {
+ selectedServices: ['HDFS', 'YARN', 'MAPREDUCE2', 'STORM'],
+ installedServices: ['HDFS', 'STORM']
+ },
+ m: 'MapReduce selected on Admin -> Stack Versions Page, Yarn service should be selected because it coselected'
+ },
+ {
+ appStackService: [
+ Em.Object.create({ id: 'HDFS', serviceName: 'HDFS', coSelectedServices: []}),
+ Em.Object.create({ id: 'YARN', serviceName: 'YARN', coSelectedServices: ['MAPREDUCE2']}),
+ Em.Object.create({ id: 'HBASE', serviceName: 'HBASE', coSelectedServices: []}),
+ Em.Object.create({ id: 'STORM', serviceName: 'STORM', coSelectedServices: []})
+ ],
+ appService: [
+ Em.Object.create({ id: 'HDFS', serviceName: 'HDFS'}),
+ Em.Object.create({ id: 'STORM', serviceName: 'STORM'})
+ ],
+ servicesFromDB: {
+ selectedServices: ['HBASE'],
+ installedServices: ['HDFS', 'STORM']
+ },
+ serviceToInstall: null,
+ e: {
+ selectedServices: ['HDFS', 'HBASE', 'STORM'],
+ installedServices: ['HDFS', 'STORM']
+ },
+ m: 'HDFS and STORM are installed. Select HBASE'
+ }
+ ];
+
+ tests.forEach(function(test) {
+ it(test.m, function() {
+ sinon.stub(App.StackService, 'find').returns(test.appStackService);
+ sinon.stub(App.Service, 'find').returns(test.appService);
+ this.controller.getDBProperty.withArgs('services').returns(test.servicesFromDB);
+ this.controller.set('serviceToInstall', test.serviceToInstall);
+ this.controller.loadServices();
+ App.StackService.find.restore();
+ App.Service.find.restore();
+ if (!test.servicesFromDB) {
+ // verify saving to local db on first enter to the wizard
+ expect(this.db.selectedServices).to.be.eql(test.e.selectedServices);
+ expect(this.db.installedServices).to.be.eql(test.e.installedServices);
+ } else {
+ // verify values for App.StackService
+ expect(test.appStackService.filterProperty('isSelected', true).mapProperty('serviceName')).to.be.eql(test.e.selectedServices);
+ expect(test.appStackService.filterProperty('isInstalled', true).mapProperty('serviceName')).to.be.eql(test.e.installedServices);
+ }
+ expect(this.controller.get('serviceToInstall')).to.be.null;
+ });
+ }, this);
+ });
+
});