
es.tid.topologyModuleBase.plugins.reader.TopologyReaderCOP 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.plugins.reader;
import java.io.File;
import java.net.Inet4Address;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.locks.Lock;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.MaximumBandwidth;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.tedb.DomainTEDB;
import es.tid.tedb.IntraDomainEdge;
import es.tid.tedb.SimpleTEDB;
import es.tid.tedb.TEDB;
import es.tid.tedb.TE_Information;
import es.tid.topologyModuleBase.TopologyModuleParams;
import es.tid.topologyModuleBase.COPServiceTopology.client.ApiClient;
import es.tid.topologyModuleBase.COPServiceTopology.client.ApiException;
import es.tid.topologyModuleBase.COPServiceTopology.client.Configuration;
import es.tid.topologyModuleBase.COPServiceTopology.client.api.DefaultApi;
import es.tid.topologyModuleBase.COPServiceTopology.model.EdgeEnd;
import es.tid.topologyModuleBase.COPServiceTopology.model.TopologiesSchema;
import es.tid.topologyModuleBase.COPServiceTopology.model.Edge.EdgeTypeEnum;
import es.tid.topologyModuleBase.COPServiceTopology.model.*;
import es.tid.topologyModuleBase.database.TopologiesDataBase;
import es.tid.topologyModuleBase.plugins.reader.TopologyReader;
public class TopologyReaderCOP extends TopologyReader
{
private boolean isRunning=false;
public TopologyReaderCOP(TopologiesDataBase ted,TopologyModuleParams params, Lock lock)
{
super(ted,params,lock);
}
@Override
public void readTopology()
{
//Initialize Traffic Engineering Database
/*ApiClient apiClient = new ApiClient();
apiClient.setBasePath("http://"+params.getRemoteCOPhost()+":"+params.getRemoteCOPPort()+"/restconf");
readNetwork(new DefaultApi(apiClient));
*/
ApiClient defaultClient = new ApiClient();
defaultClient.setBasePath("http://"+params.getRemoteCOPhost()+":"+params.getRemoteCOPPort()+"/restconf");
log.info("New COPTopologyReader trying to read topology from: "+defaultClient.getBasePath());
//Timer timer = new Timer();
//timer.schedule(new ReadTopologyTask(ted,lock,new DefaultApi(defaultClient)), 0, 20000);
(new ReadTopologyTask(ted,lock,new DefaultApi(defaultClient))).run();
}
@Override
public void run(){
readTopology();
}
private class ReadTopologyTask extends TimerTask {
private TopologiesDataBase ted;
private Lock lock;
private DefaultApi api;
public ReadTopologyTask(TopologiesDataBase ted, Lock lock, DefaultApi api) {
super();
this.ted = ted;
this.lock = lock;
this.api = api;
}
@Override
public void run() {
// TODO Auto-generated method stub
lock.lock();
isRunning=true;
try {
TopologiesSchema retrieveTopologies = api.retrieveTopologies();
//EdgeEnd retrieveLocalIf = api.retrieveTopologiesTopologyEdgesLocalIfidLocalIfidById("1", "ADVA_2_CTTC_2");
//log.info(retrieveTopologies.toString());
//System.out.println("DESPUES retrieveTopologies: "+retrieveTopologies.toString());
//Topology top = api.retrieveTopologiesTopologyTopologyById("0.0.0.1");
for(Topology top : retrieveTopologies.getTopology()){
DomainTEDB db = (DomainTEDB)this.ted.getDB(top.getTopologyId());
System.out.println("COP reader, reading db with domainID: "+top.getTopologyId()+ " bd->"+db);
if(db != null){
ted.getTeds().remove(top.getTopologyId());
}
db = new SimpleTEDB();
((SimpleTEDB)db).createGraph();
for(Node n : top.getNodes()){
es.tid.tedb.elements.Node node = TranslateModel.translate2Node(n);
((SimpleTEDB)db).getNetworkGraph().addVertex(node);
}
for(Edge e: top.getEdges()){
es.tid.tedb.elements.Link link = TranslateModel.translate2Link(e);
fromLinkToIntradomainlink((SimpleTEDB)db, link, e);
}
this.ted.addTEDB(top.getTopologyId(), db);
}
} catch (ApiException e) {
// TODO Auto-generated catch block
log.info("APIException in COPtopologyReader from: " + api.getApiClient().getBasePath());
e.printStackTrace();
}catch (Exception e){
log.info("GeneralException in COPtopologyReader from: " + api.getApiClient().getBasePath());
e.printStackTrace();
}finally{
isRunning=false;
lock.unlock();
}
}
private void fromLinkToIntradomainlink(SimpleTEDB db, es.tid.tedb.elements.Link link, Edge e){
boolean finished=false;
System.out.println("From link To Intradomianlink, link: "+link.toString());
Iterator
© 2015 - 2025 Weber Informatics LLC | Privacy Policy