--- /dev/null
+nodes_vir = new vis.DataSet();
+edges_vir = new vis.DataSet();
+
+var VirtualDatas='';
+
+ function getVirtualInfos(){
+ var virData=null;
+ jQuery.ajax({
+ url: "/restconf/config/generic-virtual-network:virtual-networks/",
+ type:"GET",
+ dataType:"json",
+ async: false,
+ success: function(data){
+ if(data != null)
+ {
+ virData = data;
+ VirtualDatas=data;
+ console.log(VirtualDatas);
+ }
+ else
+ alert("No Virtual Data");
+ },
+ error:function(data){
+ alert("Get Virtual Data Error!");
+ }
+ });
+ return virData;
+ }
+ getVirtualInfos();
+ function getVirtualDatas(){
+ var Datas=getVirtualInfos();
+ if(!Datas){
+ Datas=virtualJson;
+ }
+ VirtualDatas=Datas;
+ // console.log(VirtualDatas);
+ //return virtualDatas;
+ }
+
+function getVirtualInfoById(user_id,Data){
+ if(!Data) Data=VirtualDatas;
+ if(!Data) return;
+ if(typeof(Data)=='string'){
+ var user_json = JSON.parse(Data);
+ }
+ else
+ {
+ var user_json = Data;
+ }
+
+ var user_info = user_json['virtual-networks']['virtual-network'];
+ for(var item in user_info){
+ if(user_id==user_info[item]['user-id']){
+ return user_info[item];
+ }
+ }
+}
+
+var virtual_nodes=[];
+function create_virtual_topo(topo_data,intentinfo,mappinginfo)
+{
+ nodes_vir.clear();
+ edges_vir.clear();
+
+ console.log(topo_data);
+ var vitrual_network=topo_data;
+ if(vitrual_network!=null)
+ {
+ var vitrual_nodes=vitrual_network["virtual-nodes"]["virtual-node"];
+ for(var i in vitrual_nodes)
+ {
+ virtual_nodes[vitrual_nodes[i]["node-id"]]=(+i+1);
+ nodes_vir.add({
+ id: +i+1,
+ label: vitrual_nodes[i]["node-type"],
+ group: vitrual_nodes[i]["node-type"],
+ radius:20
+ });
+
+ }
+ console.log(virtual_nodes);
+ var vitrual_links=vitrual_network["virtual-links"]["virtual-link"];
+ for(var j in vitrual_links){
+ edges_vir.add({
+ id: +j+1,
+ from: virtual_nodes[vitrual_links[j]["src-node-id"]],
+ to: virtual_nodes[vitrual_links[j]["dest-node-id"]],
+ length:150,
+ width:2,
+ color:{color:'ff4e00',highlight:'ff4e00',hover:'ff4e00'}
+ });
+ }
+ }
+
+drawOthers(null,intentinfo,mappinginfo);
+console.log(virtual_nodes);
+ var data= {
+ nodes: nodes_vir,
+ edges: edges_vir
+ };
+ var options = {
+ /* physics: {
+ repulsion: {
+ centralGravity: 0,
+ springLength: 200,//弹簧长度
+ springConstant: 0,//弹簧常数
+ nodeDistance: 0,
+ damping: 0 //阻尼,减幅,衰减
+ }}, */
+ smoothCurves: false,
+ stabilize: true,
+ nodes: {
+ // default for all nodes
+ fontSize:15,
+ shape: 'dot',
+ radius:23,
+ fixed:true
+ },
+ groups:{
+ vswitch:{
+ color: {
+ border: 'black',
+ background: '#B0E2FF',
+ }
+ },
+ vrouter:{
+ color: {
+ border: 'black',
+ background: '#7FFF00',
+ }
+ },
+ fw:{
+ //shape:'box',
+ color: {
+ border: 'black',
+ background: '#EEEE00',
+ }
+ },
+ lb:{
+ //shape:'box',
+ color: {
+ border: 'black',
+ background: '#C63300',
+ }
+ },
+ cache:{
+ //shape:'box',
+ color: {
+ border: 'black',
+ background: '#FF00FF',
+ }
+ }
+ }
+
+ };
+
+ console.log(nodes_vir.get().length);
+ var container = document.getElementById('vir_graph');
+ var graph = new vis.Graph(container, data, options);
+}
+
+function drawOthers(virtualData,intentData,mappingData){
+ console.log();
+ var user_nodes=intentData['objects']['node'];
+ var intentNodes=[];
+ for (var i in user_nodes) {
+ intentNodes[user_nodes[i]['node-id']]=[user_nodes[i]['node-type'],user_nodes[i]['node-name']];
+ };
+ var mapping_nodes=mappingData['intent-vn-mapping-result'];
+ var mappingNodes=[];
+ for (var i in mapping_nodes) {
+ if(mapping_nodes[i]['intent-type']=='node')
+ {
+ mappingNodes[mapping_nodes[i]['intent-id']]=mapping_nodes[i]['virtual-resource'][0]['parent-virtual-resource-entity-id'];
+ }
+ };
+ console.log(intentNodes);
+ console.log(mappingNodes);
+ var nodelen= nodes_vir.get().length;
+ for(var item in intentNodes){
+ virtual_nodes[item]=nodelen+1;
+ if(intentNodes[item][0]=='host'){
+ nodes_vir.add({
+ id: ++nodelen,
+ label: ''+intentNodes[item][1],
+ image: "src/app/nemo/images/host.png",
+ shape: 'image',
+ fontSize: 15
+ });
+ }
+ else if(intentNodes[item][0]=='fw'){
+ nodes_vir.add({
+ id: ++nodelen,
+ label: ''+intentNodes[item][1],
+ group: 'fw',
+ image: "src/app/nemo/images/fw.png",
+ shape: 'image',
+ fontSize: 15
+ });
+ }
+ else if(intentNodes[item][0]=='lb'){
+ nodes_vir.add({
+ id: ++nodelen,
+ label: ''+intentNodes[item][1],
+ group: 'lb',
+ image: "src/app/nemo/images/lb.png",
+ shape: 'image',
+ fontSize: 15
+ });
+ }
+ else if(intentNodes[item][0]=='cache'){
+ nodes_vir.add({
+ id: ++nodelen,
+ label: ''+intentNodes[item][1],
+ group: 'cache',
+ image: "src/app/nemo/images/cache.png",
+ shape: 'image',
+ fontSize: 15
+ });
+ }
+ else if(intentNodes[item][0]=='ext-group'){
+ nodes_vir.add({
+ id: ++nodelen,
+ label: ''+intentNodes[item][1],
+ image: "src/app/nemo/images/ext-group.png",
+ shape: 'image',
+ fontSize: 15
+ });
+ }
+ else
+ {
+ delete virtual_nodes[item];
+ }
+ }
+ for(var item in mappingNodes){
+ var edgeslen=edges_vir.get().length;
+ edges_vir.add({
+ id: ++edgeslen,
+ from: virtual_nodes[item],
+ to: virtual_nodes[mappingNodes[item]],
+ length:150
+ });
+ }
+}
+
+
+
+