Here's the working code
getResources: function (dbname) {
var url = '/manage/v2/databases/'+ dbname + '?format=json';
return $http.get(url).then(function (response) {
Resource.masterForests = getAttachedForests(response.data);
Resource.appservers = getAttachedAppServers(response.data);
Resource.replicaClusters = getReplicaClusters(response.data);
console.warn('Master Forests = ', Resource.masterForests);
return Resource.replicaClusters;
}).then(function(replicaClusters) {
var clusterArr = [];
angular.forEach(replicaClusters, function(cluster) {
clusterArr.push($http.get('/manage/v2/clusters/'+ cluster + '?format=json'));
});
return $q.all(clusterArr).then(function(results) {
angular.forEach(results, function(result) {
var cluster = result.data['foreign-cluster-default'].name;
var dbs = getReplicaDBs(result.data);
Resource.replicaDBs[cluster] = dbs;
});
});
}).then(function() {
var forestarr = [];
angular.forEach(Resource.masterForests, function(forestName){
forestarr.push($http.get('/manage/v2/forests/'+ forestName + '?format=json'));
});
return $q.all(forestarr).then(function (results) {
angular.forEach(results, function(result){
var host = getForestHost(result.data);
var forest = result.data['forest-default'].name;
Resource.forestHosts.push(host);
// group forest by hosts
groupForestsByHost(Resource, host, forest);
});
});
});
}
In controller
Resource.getResources($scope.db).then(function() {
$scope.masterForests = Resource.masterForests;
$scope.replicaClusters = Resource.replicaClusters;
$scope.forestHosts = Resource.forestHosts;
$scope.forestsOnHosts = Resource.forestsOnHosts;
$scope.replicaDBs = Resource.replicaDBs;
$scope.appservers = Resource.appservers;
}