
es.tid.topologyModuleBase.COPServiceTopology.model.TranslateModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of topology Show documentation
Show all versions of topology Show documentation
Traffic Engineering Database, BGP-LS peer, Topology Module
The newest version!
package es.tid.topologyModuleBase.COPServiceTopology.model;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.tedb.DomainTEDB;
import es.tid.tedb.InterDomainEdge;
import es.tid.tedb.IntraDomainEdge;
import es.tid.tedb.MultiDomainTEDB;
import es.tid.tedb.Node_Info;
import es.tid.tedb.SimpleTEDB;
import es.tid.tedb.TE_Information;
import es.tid.tedb.elements.EndPoint;
import es.tid.tedb.elements.Intf;
import es.tid.tedb.elements.Link;
import es.tid.topologyModuleBase.COPServiceTopology.model.Edge.EdgeTypeEnum;
public class TranslateModel {
public static Node getNodeById(DomainTEDB db, String nodeId){
for (Object n : db.getIntraDomainLinksvertexSet()){
if(n instanceof es.tid.tedb.elements.Node){
Node node= translateNode(db, (es.tid.tedb.elements.Node)n);
if(node.getNodeId().equals(nodeId)){
return node;
}
}else if(n instanceof Inet4Address){
Node node= translateNodeIp(db, (Inet4Address)n, db.getNodeTable().get(n));
if(node.getNodeId().equals(nodeId)){
return node;
}
}
}
return null;
}
public static Node translateNode(DomainTEDB db, es.tid.tedb.elements.Node n){
//System.out.println("DEBUG translateNode: NodeInput: "+n);
Node node = new Node();
//node.setName(n.getNodeID());
if(n.getAddress().size()>0){
node.setName(n.getAddress().get(0));
}else{
node.setName(n.getNodeID());
}
node.setDomain(n.getDomain()+"");
node.setNodetype(n.getLayer());
node.setNodeId(n.getNodeID());
ListintList = new ArrayList();
for (es.tid.tedb.elements.Intf i : n.getIntfList()){
intList.add(translateEdgeEnd( n, i));
}
node.setEdgeEnd(intList);
//node.setUnderlayAbstractTopology(underlayAbstractTopology);
return node;
}
public static Node translateNodeIp(DomainTEDB ted, Inet4Address n, Node_Info nodeInfo) {
Node node = new Node();
System.out.println("DEBUG translateNodeIP, nodeInfo (of node "+n+"):"+nodeInfo);
node.setName(n.getHostAddress());
node.setNodeId(n.getHostAddress());
if(nodeInfo==null){
System.out.println("No node Info: DomainID:"+ted.getDomainID());
node.setDomain(ted.getDomainID().getHostAddress());
}else{
node.setDomain(nodeInfo.getAs_number().getHostAddress());
}
node.setEdgeEnd(new ArrayList());
return node;
}
public static EdgeEnd translateEdgeEnd(es.tid.tedb.elements.Node n, es.tid.tedb.elements.Intf i){
EdgeEnd edgeEnd = new EdgeEnd();
edgeEnd.setEdgeEndId(i.getName());
edgeEnd.setName(i.getName());
//edgeEnd.setPeerNodeId(i.getAddress().get(0)); //correct map?
//edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
return edgeEnd;
}
public static EdgeEnd translateEdgeEnd(DomainTEDB db, es.tid.tedb.elements.EndPoint e){
EdgeEnd edgeEnd = new EdgeEnd();
edgeEnd.setEdgeEndId(e.getNode()+"-"+e.getIntf());
edgeEnd.setName(e.getNode()+"-"+e.getIntf());
edgeEnd.setPeerNodeId(e.getNode()); //correct map?
//edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
return edgeEnd;
}
public static Bitmap translateBitmap(TE_Information te_Information){
Bitmap bitmap = new Bitmap();
return bitmap;
}
public static Edge translateEdge(DomainTEDB db,IntraDomainEdge e){
//if(e.getTE_info()==null){
return translateEthEdge(db, e);
//}else{
// return translateDwdmEdge(db, e);
//}
}
public static Edge translateEdge(MultiDomainTEDB db,InterDomainEdge e){
//if(e.getTE_info()==null){
return translateEthEdge(db, e);
//}else{
// return translateDwdmEdge(db, e);
//}
}
public static DwdmEdge translateDwdmEdge(DomainTEDB db, IntraDomainEdge e){
DwdmEdge dwdmEdge = new DwdmEdge();
dwdmEdge.setName(e.getLinkID());
dwdmEdge.setEdgeId(e.getLinkID());
dwdmEdge.setEdgeType(EdgeTypeEnum.dwdm_edge);
dwdmEdge.setMetric(e.getTemetric()+"");
if(e.getBw()!=null){
dwdmEdge.setMaxResvBw(e.getBw().getMaxBandwidth()+"");
dwdmEdge.setUnreservBw(e.getBw().getUnreservedBw()+"");
}
Object src = e.getSrc_Numif_id();
if( src instanceof es.tid.tedb.elements.EndPoint ){
Node node = TranslateModel.getNodeById( db, ((es.tid.tedb.elements.EndPoint) src).getNode());
dwdmEdge.setSource(node);
for(EdgeEnd end : node.getEdgeEnd()){
if(end.getName().equals(((es.tid.tedb.elements.EndPoint) src).getIntf()) ){
dwdmEdge.setLocalIfid(end);
}
}
}
Object dst = e.getDst_Numif_id();
if( dst instanceof es.tid.tedb.elements.EndPoint ){
Node node = TranslateModel.getNodeById( db, ((es.tid.tedb.elements.EndPoint) dst).getNode());
dwdmEdge.setTarget(node);
for(EdgeEnd end : node.getEdgeEnd()){
if(end.getName().equals(((es.tid.tedb.elements.EndPoint) dst).getIntf()) ){
dwdmEdge.setRemoteIfid(end);
}
}
}
//Write special DWDM fields
if(e.getTE_info().getAvailableLabels()!=null && e.getTE_info().getAvailableLabels().getLabelSet()!=null){
byte[] bytesBitMap = ((BitmapLabelSet)e.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap();
List lBits = new ArrayList();
for(byte b : bytesBitMap){
for(int i=0;i<8;i++){
if(lBits.size()<=((BitmapLabelSet)e.getTE_info().getAvailableLabels().getLabelSet()).getNumLabels())
lBits.add(b|(1< edges = new ArrayList();
for(IntraDomainEdge link : ted.getIntraDomainLinks()){
edges.add(translateEdge(ted, link));
}
topology.setEdges(edges);
List nodes = new ArrayList();
for(Object node : ted.getIntraDomainLinksvertexSet()){
// System.out.println("DEBUG nodeInTopology, (class "+node.getClass()+"):" +node );
if(node instanceof es.tid.tedb.elements.Node){
nodes.add(translateNode(ted, (es.tid.tedb.elements.Node)node));
}
else if(node instanceof java.net.Inet4Address){
nodes.add(translateNodeIp(ted, (java.net.Inet4Address)node, ted.getNodeTable().get(node)));
}
}
topology.setNodes(nodes);
//topology.setUnderlayTopology(); //TODO
return topology;
}
public static Topology translateTopology(String topId, MultiDomainTEDB ted){
//System.out.println("DEBUG translateTopology: TEDinput: "+ted.printTopology());
Topology topology = new Topology();
/*if(ted==null){
topology.setTopologyId("topology null Exception");
return topology;
}
if(ted.getDomainID()==null){
topology.setTopologyId("getDomainID null Exception");
return topology;
}*/
topology.setTopologyId(topId);
List edges = new ArrayList();
for(InterDomainEdge link : ted.getInterDomainLinks()){
edges.add(translateEdge(ted, link));
}
topology.setEdges(edges);
// List nodes = new ArrayList();
// for(Object node : ted.getIntraDomainLinksvertexSet()){
// // System.out.println("DEBUG nodeInTopology, (class "+node.getClass()+"):" +node );
// if(node instanceof es.tid.tedb.elements.Node){
// nodes.add(translateNode(ted, (es.tid.tedb.elements.Node)node));
// }
// else if(node instanceof java.net.Inet4Address){
// nodes.add(translateNodeIp(ted, (java.net.Inet4Address)node, ted.getNodeTable().get(node)));
// }
// }
// topology.setNodes(nodes);
//topology.setUnderlayTopology(); //TODO
return topology;
}
public static es.tid.tedb.elements.Node translate2Node(Node node) {
es.tid.tedb.elements.Node n = new es.tid.tedb.elements.Node();
n.setNodeID(node.getName());
n.setDomain(Integer.parseInt(node.getDomain()));
n.setLayer(node.getNodetype());
n.setNodeID(node.getNodeId());
try{
Inet4Address addr = (Inet4Address)Inet4Address.getByName(node.getName());
ArrayList l_addr= new ArrayList();
l_addr.add(addr.getHostAddress());
n.setAddress(l_addr);
}catch(UnknownHostException e){
//TODO
}
ArrayListintList = new ArrayList();
for (EdgeEnd end : node.getEdgeEnd()){
intList.add(translate2EdgeEnd(node, end));
}
n.setIntfList(intList);
return n;
}
private static Intf translate2EdgeEnd(Node node, EdgeEnd edgeEnd) {
Intf intf = new Intf();
intf.setName(edgeEnd.getName());
ArrayList adds = new ArrayList(1);
adds.add(edgeEnd.getPeerNodeId());
intf.setAddress(adds);
//edgeEnd.setEdgeEndId(e.getNode()+"-"+e.getIntf());
//edgeEnd.setName(e.getNode()+"-"+e.getIntf());
//edgeEnd.setPeerNodeId(e.getNode()); //correct map?
//edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
return intf;
}
public static Link translate2Link(Edge e) {
System.out.println("translate2Link, Edge: "+e);
Link link= new Link();
link.setLinkID(e.getEdgeId());
link.setSource(translate2EndPoint(e.getSource(),e.getLocalIfid()));
link.setDest(translate2EndPoint(e.getTarget(), e.getRemoteIfid()));
link.setDirectional(false);
if(e.getEdgeType() != null){
link.setType(e.getEdgeType().toString());
}
return link;
}
private static EndPoint translate2EndPoint(Node source, EdgeEnd edgeEnd) {
System.out.println("translate2EndPoint, node: "+source+"\nEdgeEnd: "+edgeEnd);
return (new EndPoint(source.getNodeId(),edgeEnd.getName()));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy