1 nodes_vir = new vis.DataSet();
2 edges_vir = new vis.DataSet();
6 function getVirtualInfos(){
9 url: "/restconf/config/generic-virtual-network:virtual-networks/",
13 success: function(data){
18 console.log(VirtualDatas);
21 alert("No Virtual Data");
24 // alert("Get Virtual Data Error!");
25 console.log("Get Virtual Data Error!");
31 function getVirtualDatas(){
32 var Datas=getVirtualInfos();
37 // console.log(VirtualDatas);
38 //return virtualDatas;
41 function getVirtualInfoById(user_id,Data){
42 if(!Data) Data=VirtualDatas;
44 if(typeof(Data)=='string'){
45 var user_json = JSON.parse(Data);
52 var user_info = user_json['virtual-networks']['virtual-network'];
53 for(var item in user_info){
54 if(user_id==user_info[item]['user-id']){
55 return user_info[item];
60 var virtual_nodes=[];//virtual_node_id----->[vid_node_id,virtual_node_name]
61 function create_virtual_topo(topo_data,intentinfo,mappinginfo)
66 console.log(topo_data);
67 var vitrual_network=topo_data;
68 if(vitrual_network!=null)
70 var vitrual_nodes_js=vitrual_network["virtual-nodes"]["virtual-node"];
71 for(var i in vitrual_nodes_js)
73 virtual_nodes[vitrual_nodes_js[i]["node-id"]]=[(+i+1),vitrual_nodes_js[i]["node-type"]+(+i+1)];
76 label: vitrual_nodes_js[i]["node-type"]+(+i+1),
77 group: vitrual_nodes_js[i]["node-type"],
82 console.log(virtual_nodes);
83 var vitrual_links=vitrual_network["virtual-links"]["virtual-link"];
84 for(var j in vitrual_links){
87 from: virtual_nodes[vitrual_links[j]["src-node-id"]][0],
88 to: virtual_nodes[vitrual_links[j]["dest-node-id"]][0],
91 color:{color:'ff4e00',highlight:'ff4e00',hover:'ff4e00'}
96 drawOthers(null,intentinfo,mappinginfo);
97 console.log(virtual_nodes);
106 springLength: 200,//弹簧长度
107 springConstant: 0,//弹簧常数
109 damping: 0 //阻尼,减幅,衰减
114 // default for all nodes
124 background: '#B0E2FF',
130 background: '#7FFF00',
137 background: '#EEEE00',
144 background: '#C63300',
151 background: '#FF00FF',
158 console.log(nodes_vir.get().length);
159 var container = document.getElementById('vir_graph');
160 var graph = new vis.Graph(container, data, options);
163 function drawOthers(virtualData,intentData,mappingData){
165 var user_nodes=intentData['objects']['node'];
166 var intentNodes=[];//intent_node_id(physical host or node id)------>[intent_node_type,intent_node_name]
167 for (var i in user_nodes) {
168 intentNodes[user_nodes[i]['node-id']]=[user_nodes[i]['node-type'],user_nodes[i]['node-name']];
170 var mapping_nodes=mappingData['intent-vn-mapping-result'];
171 var mappingNodes=[];//intent-id(physical host or node id)------>virtual_node_id
172 for (var i in mapping_nodes) {
173 if(mapping_nodes[i]['intent-type']=='node')
175 if(mapping_nodes[i]['virtual-resource'][0]['parent-virtual-resource-entity-id'])
176 mappingNodes[mapping_nodes[i]['intent-id']]=mapping_nodes[i]['virtual-resource'][0]['parent-virtual-resource-entity-id'];
179 console.log(intentNodes);
180 console.log(mappingNodes);
181 var nodelen= nodes_vir.get().length;
182 for(var item in intentNodes){
183 virtual_nodes[item]=[parseInt(nodelen+1),'external-node'];
184 if(intentNodes[item][0]=='host'){
187 label: ''+intentNodes[item][1],
188 image: "src/app/nemo/images/host.png",
193 else if(intentNodes[item][0]=='fw'){
196 label: ''+intentNodes[item][1],
198 image: "src/app/nemo/images/fw.png",
203 else if(intentNodes[item][0]=='lb'){
206 label: ''+intentNodes[item][1],
208 image: "src/app/nemo/images/lb.png",
213 else if(intentNodes[item][0]=='cache'){
216 label: ''+intentNodes[item][1],
218 image: "src/app/nemo/images/cache.png",
223 else if(intentNodes[item][0]=='ext-group'){
226 label: ''+intentNodes[item][1],
227 image: "src/app/nemo/images/ext-group.png",
234 delete virtual_nodes[item];
237 console.log(virtual_nodes);
238 for(var item in mappingNodes){
239 // console.log(virtual_nodes[item]);
240 if(!virtual_nodes[item]) continue;
241 var edgeslen=edges_vir.get().length;
244 from: virtual_nodes[item][0],
245 to: virtual_nodes[mappingNodes[item]][0],
251 var creataVirtualTables={
252 createVirtualNodeTable:function (id,Data){
253 // if(!Data) Data=VirtualDatas;
256 // virtualnodes=virtual_nodes;
258 var virtualNodes=Data['virtual-nodes']['virtual-node'];
259 console.log(virtualnodes);
260 for(var item in virtualNodes){
261 //virtualnodes[virtualNodes[item]['node-id']]=[virtual_nodes[virtualNodes[item]['node-id']]]
263 virTableInfo.virtual_node_id=virtualNodes[item]['node-id'];
264 virTableInfo.virtual_node_name=virtual_nodes[virtualNodes[item]['node-id']][1];
265 virTableInfo.internal_port_number='';
266 virTableInfo.external_port_number='';
267 var virtualPort=virtualNodes[item]['virtual-port'];
268 if(!virtualPort){virtualnodes.push(virTableInfo);continue;}
269 var interPort=exterPort=0;
270 for(var i in virtualPort){
271 if(virtualPort[i]['port-type']=='internal') interPort++;
272 if(virtualPort[i]['port-type']=='external') exterPort++;
274 virTableInfo.internal_port_number=interPort;
275 virTableInfo.external_port_number=exterPort;
276 virtualnodes.push(virTableInfo);
279 console.log(virtualnodes);
280 // var Mynode=Data['virtual-network']['virtual-nodes']['virtual-node'];
281 // for(var i in Mynode){
283 // virtualnodes[Mynode[i]['node-id']]=Mynode[i]['node-type'];
285 // console.log(virtualnodes);
286 jQuery("#"+id).find('tr:gt(1)').empty();
287 for(var item in virtualnodes){
288 // if(virtualnodes[item][1]!='external-node'){}
290 var $tr='<tr><td title='+virtualnodes[item].virtual_node_id+'>'+virtualnodes[item].virtual_node_id+'</td><td>'+virtualnodes[item].virtual_node_name+'</td>'
291 $tr+='<td>'+'virtual '+virtualnodes[item].virtual_node_name.substring(1,virtualnodes[item].virtual_node_name.length-1)+'</td>'
292 $tr+='<td>'+virtualnodes[item].internal_port_number+'</td><td>'+virtualnodes[item].external_port_number+'</td>'
294 jQuery("#"+id).append($tr);
298 createVirtualLinkTable:function (id,Data){
299 // if(!Data) Data=VirtualDatas;
301 var virtuallinks=[];//virtual_link_id---->[src-node-id,dest-node-id,metric,bandwidth,delay]
303 var mylink=Data['virtual-links']['virtual-link'];
304 for(var i in mylink){
305 if(!mylink[i]['metric'])
306 virtuallinks[mylink[i]['link-id']]=[mylink[i]['src-node-id'],mylink[i]['dest-node-id'],'',mylink[i]['bandwidth'],mylink[i]['delay']];
308 virtuallinks[mylink[i]['link-id']]=[mylink[i]['src-node-id'],mylink[i]['dest-node-id'],mylink[i]['metric'],mylink[i]['bandwidth'],mylink[i]['delay']];
311 console.log(virtuallinks);
312 jQuery("#"+id).find('tr:gt(1)').empty();
313 for(var item in virtuallinks){
314 var $tr='<tr><td title='+item+'>'+item+'</td><td>'+virtual_nodes[virtuallinks[item][0]][1]+'-'+virtual_nodes[virtuallinks[item][1]][1]+'</td>'
315 $tr+='<td>'+virtual_nodes[virtuallinks[item][0]][1]+'<td>'+virtual_nodes[virtuallinks[item][1]][1]+'</td>';
316 $tr+='<td>'+virtuallinks[item][3]+'kbps'+'</td><td>'+virtuallinks[item][4]+'ms'+'</td>';
318 jQuery("#"+id).append($tr);