Added slices and instances to tree layout
diff --git a/gui/ngXosViews/serviceTopology/src/js/services.js b/gui/ngXosViews/serviceTopology/src/js/services.js
index e7c6e3f..55eac9c 100644
--- a/gui/ngXosViews/serviceTopology/src/js/services.js
+++ b/gui/ngXosViews/serviceTopology/src/js/services.js
@@ -17,7 +17,7 @@
.service('Subscribers', function($resource){
return $resource('/xos/subscribers', {id: '@id'});
})
- .service('ServiceRelation', function($q, _, lodash, Services, Tenant){
+ .service('ServiceRelation', function($q, lodash, Services, Tenant, Slice, Instances){
// count the mas depth of an object
const depthOf = (obj) => {
@@ -128,6 +128,49 @@
return deferred.promise;
};
+ const getServiceInterfaces = (serviceId) => {
+ var deferred = $q.defer();
+
+ var _slices;
+
+ Slice.query({service: serviceId}).$promise
+ .then((slices) => {
+ _slices = slices;
+ const promisesArr = slices.reduce((promises, slice) => {
+ promises.push(Instances.query({slice: slice.id}).$promise);
+ return promises;
+ }, []);
+
+ return $q.all(promisesArr);
+ })
+ .then((instances) => {
+ console.log(instances);
+ // parse data to build a tree (2 level only)
+ var interfaceTree = [];
+ lodash.forEach(_slices, (slice, i) => {
+ let current = {
+ name: slice.name,
+ slice: slice,
+ type: 'slice',
+ children: instances[i].map((instance) => {
+ return {
+ name: instance.humanReadableName,
+ children: [],
+ type: 'instance',
+ instance: instance
+ };
+
+ })
+ };
+ interfaceTree.push(current);
+ });
+ console.log(interfaceTree)
+ deferred.resolve(interfaceTree);
+ });
+
+ return deferred.promise;
+ };
+
// export APIs
this.get = get;
this.buildLevel = buildLevel;
@@ -135,6 +178,7 @@
this.findLevelRelation = findLevelRelation;
this.findLevelServices = findLevelServices;
this.depthOf = depthOf;
+ this.getServiceInterfaces = getServiceInterfaces;
});
}());
\ No newline at end of file