blob: 27a03b2035765f33243a20717c4493df155407ab [file] [log] [blame]
/*global async, d3*/
function toD3(results) {
var model = {
edgeSwitchs: [],
aggregationSwitches: [],
coreSwitches: []
}
// identify switch types
var coreSwitchDPIDs = {};
results.configuration.core.forEach(function (dpid) {
coreSwitchDPIDs[dpid] = true;
});
var aggregationSwitchDPIDs = {};
results.configuration.aggregation.forEach(function (dpid) {
aggregationSwitchDPIDs[dpid] = true;
});
results.switches.forEach(function (s) {
if (coreSwitchDPIDs[s.dpid]) {
model.coreSwitches.push(s);
} else if (aggregationSwitchDPIDs[s.dpid]) {
model.aggregationSwitches.push(s);
} else {
model.edgeSwitchs.push(s);
}
});
return model;
}
function updateModel(cb) {
async.parallel({
links: function(cb) {
d3.json('data/wm_core_topology_links_json.json', function (error, result) {
cb(error, result);
});
},
switches: function(cb) {
d3.json('data/wm_core_topology_switches_all_json.json', function (error, result) {
cb(error, result);
});
},
flows: function(cb) {
d3.json('data/wm_flow_getall_json.json', function (error, result) {
cb(error, result);
});
},
controllers: function(cb) {
d3.json('data/wm_registry_controllers_json.json', function (error, result) {
cb(error, result);
});
},
mapping: function(cb) {
d3.json('data/wm_registry_switches_json.json', function (error, result) {
cb(error, result);
});
},
configuration: function(cb) {
d3.json('data/configuration.json', function (error, result) {
cb(error, result);
});
},
},
function(err, results) {
var model = toD3(results);
model.timestamp = new Date();
cb(model);
});
}