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!");
30 function getVirtualDatas(){
31 var Datas=getVirtualInfos();
36 // console.log(VirtualDatas);
37 //return virtualDatas;
40 function getVirtualInfoById(user_id,Data){
41 if(!Data) Data=VirtualDatas;
43 if(typeof(Data)=='string'){
44 var user_json = JSON.parse(Data);
51 var user_info = user_json['virtual-networks']['virtual-network'];
52 for(var item in user_info){
53 if(user_id==user_info[item]['user-id']){
54 return user_info[item];
59 var virtual_nodes=[];//virtual_node_id----->[vid_node_id,virtual_node_name]
60 function create_virtual_topo(topo_data,intentinfo,mappinginfo)
65 console.log(topo_data);
66 var vitrual_network=topo_data;
67 if(vitrual_network!=null)
69 var vitrual_nodes_js=vitrual_network["virtual-nodes"]["virtual-node"];
70 for(var i in vitrual_nodes_js)
72 virtual_nodes[vitrual_nodes_js[i]["node-id"]]=[(+i+1),vitrual_nodes_js[i]["node-type"]+(+i+1)];
75 label: vitrual_nodes_js[i]["node-type"]+(+i+1),
76 group: vitrual_nodes_js[i]["node-type"],
81 console.log(virtual_nodes);
82 var vitrual_links=vitrual_network["virtual-links"]["virtual-link"];
83 for(var j in vitrual_links){
86 from: virtual_nodes[vitrual_links[j]["src-node-id"]][0],
87 to: virtual_nodes[vitrual_links[j]["dest-node-id"]][0],
90 color:{color:'ff4e00',highlight:'ff4e00',hover:'ff4e00'}
95 drawOthers(null,intentinfo,mappinginfo);
96 console.log(virtual_nodes);
105 springLength: 200,//弹簧长度
106 springConstant: 0,//弹簧常数
108 damping: 0 //阻尼,减幅,衰减
113 // default for all nodes
123 background: '#B0E2FF',
129 background: '#7FFF00',
136 background: '#EEEE00',
143 background: '#C63300',
150 background: '#FF00FF',
157 console.log(nodes_vir.get().length);
158 var container = document.getElementById('vir_graph');
159 var graph = new vis.Graph(container, data, options);
162 function drawOthers(virtualData,intentData,mappingData){
164 var user_nodes=intentData['objects']['node'];
165 var intentNodes=[];//intent_node_id(physical host or node id)------>[intent_node_type,intent_node_name]
166 for (var i in user_nodes) {
167 intentNodes[user_nodes[i]['node-id']]=[user_nodes[i]['node-type'],user_nodes[i]['node-name']];
169 var mapping_nodes=mappingData['intent-vn-mapping-result'];
170 var mappingNodes=[];//intent-id(physical host or node id)------>virtual_node_id
171 for (var i in mapping_nodes) {
172 if(mapping_nodes[i]['intent-type']=='node')
174 if(mapping_nodes[i]['virtual-resource'][0]['parent-virtual-resource-entity-id'])
175 mappingNodes[mapping_nodes[i]['intent-id']]=mapping_nodes[i]['virtual-resource'][0]['parent-virtual-resource-entity-id'];
178 console.log(intentNodes);
179 console.log(mappingNodes);
180 var nodelen= nodes_vir.get().length;
181 for(var item in intentNodes){
182 virtual_nodes[item]=[parseInt(nodelen+1),'external-node'];
183 if(intentNodes[item][0]=='host'){
186 label: ''+intentNodes[item][1],
187 image: "src/app/nemo/images/host.png",
192 else if(intentNodes[item][0]=='fw'){
195 label: ''+intentNodes[item][1],
197 image: "src/app/nemo/images/fw.png",
202 else if(intentNodes[item][0]=='lb'){
205 label: ''+intentNodes[item][1],
207 image: "src/app/nemo/images/lb.png",
212 else if(intentNodes[item][0]=='cache'){
215 label: ''+intentNodes[item][1],
217 image: "src/app/nemo/images/cache.png",
222 else if(intentNodes[item][0]=='ext-group'){
225 label: ''+intentNodes[item][1],
226 image: "src/app/nemo/images/ext-group.png",
233 delete virtual_nodes[item];
236 console.log(virtual_nodes);
237 for(var item in mappingNodes){
238 // console.log(virtual_nodes[item]);
239 if(!virtual_nodes[item]) continue;
240 var edgeslen=edges_vir.get().length;
243 from: virtual_nodes[item][0],
244 to: virtual_nodes[mappingNodes[item]][0],
250 var creataVirtualTables={
251 createVirtualNodeTable:function (id,Data){
252 // if(!Data) Data=VirtualDatas;
255 // virtualnodes=virtual_nodes;
257 var virtualNodes=Data['virtual-nodes']['virtual-node'];
258 console.log(virtualnodes);
259 for(var item in virtualNodes){
260 //virtualnodes[virtualNodes[item]['node-id']]=[virtual_nodes[virtualNodes[item]['node-id']]]
262 virTableInfo.virtual_node_id=virtualNodes[item]['node-id'];
263 virTableInfo.virtual_node_name=virtual_nodes[virtualNodes[item]['node-id']][1];
264 virTableInfo.internal_port_number='';
265 virTableInfo.external_port_number='';
266 var virtualPort=virtualNodes[item]['virtual-port'];
267 if(!virtualPort){virtualnodes.push(virTableInfo);continue;}
268 var interPort=exterPort=0;
269 for(var i in virtualPort){
270 if(virtualPort[i]['port-type']=='internal') interPort++;
271 if(virtualPort[i]['port-type']=='external') exterPort++;
273 virTableInfo.internal_port_number=interPort;
274 virTableInfo.external_port_number=exterPort;
275 virtualnodes.push(virTableInfo);
278 console.log(virtualnodes);
279 // var Mynode=Data['virtual-network']['virtual-nodes']['virtual-node'];
280 // for(var i in Mynode){
282 // virtualnodes[Mynode[i]['node-id']]=Mynode[i]['node-type'];
284 // console.log(virtualnodes);
285 jQuery("#"+id).find('tr:gt(1)').empty();
286 for(var item in virtualnodes){
287 // if(virtualnodes[item][1]!='external-node'){}
289 var $tr='<tr><td>'+virtualnodes[item].virtual_node_id+'</td><td>'+virtualnodes[item].virtual_node_name+'</td>'
290 $tr+='<td>'+'virtual '+virtualnodes[item].virtual_node_name.substring(1,virtualnodes[item].virtual_node_name.length-1)+'</td>'
291 $tr+='<td>'+virtualnodes[item].internal_port_number+'</td><td>'+virtualnodes[item].external_port_number+'</td>'
293 jQuery("#"+id).append($tr);
297 createVirtualLinkTable:function (id,Data){
298 // if(!Data) Data=VirtualDatas;
300 var virtuallinks=[];//virtual_link_id---->[src-node-id,dest-node-id,metric,bandwidth,delay]
302 var mylink=Data['virtual-links']['virtual-link'];
303 for(var i in mylink){
304 if(!mylink[i]['metric'])
305 virtuallinks[mylink[i]['link-id']]=[mylink[i]['src-node-id'],mylink[i]['dest-node-id'],'',mylink[i]['bandwidth'],mylink[i]['delay']];
307 virtuallinks[mylink[i]['link-id']]=[mylink[i]['src-node-id'],mylink[i]['dest-node-id'],mylink[i]['metric'],mylink[i]['bandwidth'],mylink[i]['delay']];
310 console.log(virtuallinks);
311 jQuery("#"+id).find('tr:gt(1)').empty();
312 for(var item in virtuallinks){
313 var $tr='<tr><td>'+item+'</td><td>'+virtual_nodes[virtuallinks[item][0]][1]+'-'+virtual_nodes[virtuallinks[item][1]][1]+'</td>'
314 $tr+='<td>'+virtual_nodes[virtuallinks[item][0]][1]+'<td>'+virtual_nodes[virtuallinks[item][1]][1]+'</td>';
315 $tr+='<td>'+virtuallinks[item][3]+'kbps'+'</td><td>'+virtuallinks[item][4]+'ms'+'</td>';
317 jQuery("#"+id).append($tr);