import java.util.stream.IntStream;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Coordinate;
import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Km;
import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.edfa.params.Operational;
import org.opendaylight.yang.gen.v1.gnpy.path.rev190502.synchronization.info.SynchronizationBuilder;
import org.opendaylight.yang.gen.v1.gnpy.path.rev190502.synchronization.info.synchronization.Svec;
import org.opendaylight.yang.gen.v1.gnpy.path.rev190502.synchronization.info.synchronization.SvecBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestInput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.section.element.section.element.Span;
import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.section.element.section.element.ila.Ila;
public class ExtractTopoDataStoreImpl {
private static final Logger LOG = LoggerFactory.getLogger(ExtractTopoDataStoreImpl.class);
- private final DataBroker dataBroker;
+ private final NetworkTransactionService networkTransactionService;
private List<Elements> elements = new ArrayList<>();
private List<Connections> connections = new ArrayList<>();
private List<PathRequest> pathRequest = new ArrayList<>();
* Construct the ExtractTopoDataStoreImpl.
*/
@SuppressWarnings("unchecked")
- public ExtractTopoDataStoreImpl(final DataBroker dataBroker, PathComputationRequestInput input, AToZDirection atoz,
- Long requestId) {
- this.dataBroker = dataBroker;
+ public ExtractTopoDataStoreImpl(final NetworkTransactionService networkTransactionService,
+ PathComputationRequestInput input,AToZDirection atoz, Long requestId) {
+ this.networkTransactionService = networkTransactionService;
Map<String, List<?>> map = extractTopo();
if (map.containsKey("Elements")) {
elements = (List<Elements>) map.get("Elements");
} else {
elements = null;
}
- if (map.containsKey("Elements")) {
+ if (map.containsKey("Connections")) {
connections = (List<Connections>) map.get("Connections");
} else {
connections = null;
}
+
pathRequest = extractPathRequest(input, atoz, requestId);
synchronization = extractSynchronization(requestId);
}
- public ExtractTopoDataStoreImpl(final DataBroker dataBroker, PathComputationRequestInput input, ZToADirection ztoa,
- Long requestId) {
- this.dataBroker = dataBroker;
+ public ExtractTopoDataStoreImpl(final NetworkTransactionService networkTransactionService,
+ PathComputationRequestInput input, ZToADirection ztoa, Long requestId) {
+ this.networkTransactionService = networkTransactionService;
Map<String, List<?>> map = extractTopo();
if (map.containsKey("Elements")) {
elements = (List<Elements>) map.get("Elements");
} else {
elements = null;
}
- if (map.containsKey("Elements")) {
+ if (map.containsKey("Connections")) {
connections = (List<Connections>) map.get("Connections");
} else {
connections = null;
InstanceIdentifier<Network> insIdrOpenRoadmNet = InstanceIdentifier
.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))).build();
- ReadOnlyTransaction readOnlyTransaction = this.dataBroker.newReadOnlyTransaction();
// Read the data broker
try {
- // Initialize the reading of the data broker
+ // Initialize the reading of the networkTransactionService
// read the configuration part of the data broker that concerns
// the openRoadm topology and get all the nodes
- java.util.Optional<Network> openRoadmTopo = readOnlyTransaction
- .read(LogicalDatastoreType.CONFIGURATION, insIdOpenRoadmTopo).get().toJavaUtil();
- java.util.Optional<Network> openRoadmNet = readOnlyTransaction
- .read(LogicalDatastoreType.CONFIGURATION, insIdrOpenRoadmNet).get().toJavaUtil();
+ java.util.Optional<Network> openRoadmTopo = this.networkTransactionService
+ .read(LogicalDatastoreType.CONFIGURATION, insIdOpenRoadmTopo).get();
+ java.util.Optional<Network> openRoadmNet = this.networkTransactionService
+ .read(LogicalDatastoreType.CONFIGURATION, insIdrOpenRoadmNet).get();
if (openRoadmNet.isPresent()) {
List<Node> openRoadmNetNodeList = openRoadmNet.get().getNode();
if (openRoadmTopo.isPresent()) {
int idFiber = 0;
int nbEDFA = 0;
if (!linksList.isEmpty()) {
- LOG.warn("The link list is not empty");
+ LOG.debug("The link list is not empty");
for (Link link : linksList) {
Link1 link1 = link.augmentation(Link1.class);
int linkType = link1.getLinkType().getIntValue();
destId = element1.getUid();
destIp = null;
// Create a new link
- if (srcId != destId) {
+ if (!destId.equals(srcId)) {
Connections connection = createNewConnection(srcId, srcIp,
destId, destIp);
topoConnections.add(connection);
mapFiberIp.put(clfi, ipFiber);
idFiber++;
- double attIn = span.getSpanlossCurrent().getValue().doubleValue();
- double lossCoef = 0.2;
+ double attIn = 0;
double connIn = 0;
double connOut = 0;
String typeVariety = "SSMF";
- double length = 0; //convert to kilometer
+ double length = 0;
// Compute the length of the link
List<LinkConcatenation> linkConcatenationList = span.getLinkConcatenation();
for (LinkConcatenation linkConcatenation : linkConcatenationList) {
double srlgLength = linkConcatenation.getSRLGLength();
- length += srlgLength / convertKmM; //convert to kilometer
+ //convert to kilometer
+ length += srlgLength / convertKmM;
}
+ double lossCoef = span.getSpanlossCurrent().getValue().doubleValue() / length;
Elements element1 = addElementsFiber(2, 0, "RLD", "Lannion_CAS",
ipFiber.getIpv4Address().getValue(), length, attIn, lossCoef, connIn,
// Create a new link
destId = element1.getUid();
destIp = null;
- if (srcId != destId) {
+ if (!destId.equals(srcId)) {
Connections connection = createNewConnection(srcId, srcIp, destId, destIp);
topoConnections.add(connection);
srcId = destId;
// Create a new link
destId = element1.getUid();
destIp = null;
- if (srcId != destId) {
+ if (!destId.equals(srcId)) {
Connections connection = createNewConnection(srcId, srcIp, destId, destIp);
topoConnections.add(connection);
srcId = destId;
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("Error reading the topology", e);
- readOnlyTransaction.close();
+ this.networkTransactionService.close();
}
- readOnlyTransaction.close();
+ this.networkTransactionService.close();
map.put("Elements", topoElements);
map.put("Connections", topoConnections);
return map;
IpAddress ipAddress = mapNodeRefIp.get(nodeRef);
for (Elements element : elements) {
if (element.getUid().contains(ipAddress.getIpv4Address().getValue().toString())) {
- if ((ipAddressCurrent == null) || (ipAddressCurrent != ipAddress)) {
+ if ((ipAddressCurrent == null) || (!ipAddress.equals(ipAddressCurrent))) {
ipAddressCurrent = ipAddress;
// Fill in routeObjectIncludeExcludes
RouteObjectIncludeExclude routeObjectIncludeExclude1 = addRouteObjectIncludeExclude(
IpAddress ipAddress = mapNodeRefIp.get(nodeRef);
for (Elements element : elements) {
if (element.getUid().contains(ipAddress.getIpv4Address().getValue().toString())) {
- if ((ipAddressCurrent == null) || (ipAddressCurrent != ipAddress)) {
+ if ((ipAddressCurrent == null) || (!ipAddress.equals(ipAddressCurrent))) {
ipAddressCurrent = ipAddress;
// Fill in routeObjectIncludeExcludes
RouteObjectIncludeExclude routeObjectIncludeExclude1 = addRouteObjectIncludeExclude(
public List<Synchronization> extractSynchronization(Long requestId) {
// Create RequestIdNumber
List<Long> requestIdNumber = new ArrayList<>();
- requestIdNumber.add(0, new Long(0));
+ requestIdNumber.add(requestId);
// Create a synchronization
Svec svec = new SvecBuilder().setRelaxable(true).setDisjointness(new TePathDisjointness(true, true, false))
.setRequestIdNumber(requestIdNumber).build();
.setOutVoa(outVoa).build();
Edfa edfa = new EdfaBuilder()
.setOperational(operational).build();
- Elements element1 = new ElementsBuilder().setUid(uidEdfa) // Choose an
- // ip
- // address
+ Elements element1 = new ElementsBuilder().setUid(uidEdfa)
+ // Choose an ip address
.setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Edfa.class)
.setMetadata(metadata1).setElementType(edfa).setTypeVariety(typeVariety).build();
return element1;