X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=transportpce.git;a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fgnpy%2FGnpyUtilitiesImpl.java;h=a51f3495eb007da233e2fdb788e61fdd5e5ed2c0;hp=092a13a51ff645e5d31b453d692c50254aea6261;hb=952583aa9f0de2de04f230291a5989413591a7b7;hpb=74042a4b6ef4e52c1ffec929bfaf5220db013cc1 diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImpl.java b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImpl.java index 092a13a51..a51f3495e 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImpl.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImpl.java @@ -8,20 +8,19 @@ package org.opendaylight.transportpce.pce.gnpy; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices; -import org.opendaylight.transportpce.common.converter.JsonStringConverter; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.pce.constraints.PceConstraints; +import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer; import org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev190103.GnpyApi; import org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev190103.GnpyApiBuilder; import org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev190103.gnpy.api.ServiceFileBuilder; import org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev190103.gnpy.api.TopologyFileBuilder; import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.Connections; import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.Elements; +import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.Result; import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.generic.path.properties.path.properties.PathRouteObjects; import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.service.PathRequest; import org.opendaylight.yang.gen.v1.gnpy.path.rev200909.synchronization.info.Synchronization; @@ -30,11 +29,7 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirectionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint32; -import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Class that implements the functions asked to gnpy. @@ -45,26 +40,22 @@ import org.slf4j.LoggerFactory; public class GnpyUtilitiesImpl { - private static final Logger LOG = LoggerFactory.getLogger(GnpyUtilitiesImpl.class); private PathComputationRequestInput input; private GnpyTopoImpl gnpyTopo = null; private GnpyResult gnpyAtoZ; private GnpyResult gnpyZtoA; private Uint32 requestId; - private BindingDOMCodecServices bindingDOMCodecServices; - private JsonStringConverter converter; - + private final GnpyConsumer gnpyConsumer; public GnpyUtilitiesImpl(NetworkTransactionService networkTransaction, PathComputationRequestInput input, - BindingDOMCodecServices bindingDOMCodecServices) + GnpyConsumer gnpyConsumer) throws GnpyException { this.gnpyTopo = new GnpyTopoImpl(networkTransaction); this.input = input; this.gnpyAtoZ = null; this.gnpyZtoA = null; this.requestId = Uint32.valueOf(0); - this.bindingDOMCodecServices = bindingDOMCodecServices; - this.converter = new JsonStringConverter<>(bindingDOMCodecServices); + this.gnpyConsumer = gnpyConsumer; } public boolean verifyComputationByGnpy(AToZDirection atoz, ZToADirection ztoa, PceConstraints pceHardConstraints) @@ -92,18 +83,13 @@ public class GnpyUtilitiesImpl { // Send the computed path to GNPY tool List elementsList = new ArrayList<>(gnpyTopo.getElements().values()); List connectionsList = gnpyTopo.getConnections(); - String gnpyResponse; - try { - gnpyResponse = getGnpyResponse(elementsList, connectionsList, pathRequestList, + Result gnpyResponse = getGnpyResponse(elementsList, connectionsList, pathRequestList, synchronizationList); - } catch (Exception e) { - throw new GnpyException("Something went wrong", e); - } // Analyze the response if (gnpyResponse == null) { throw new GnpyException("In GnpyUtilities: no response from GNPy server"); } - GnpyResult result = new GnpyResult(gnpyResponse, gnpyTopo, bindingDOMCodecServices); + GnpyResult result = new GnpyResult(gnpyResponse, gnpyTopo); result.analyzeResult(); return result; } @@ -128,9 +114,8 @@ public class GnpyUtilitiesImpl { return result.computeHardConstraintsFromGnpyPath(pathRouteObjectList); } - public String getGnpyResponse(List elementsList, List connectionsList, - List pathRequestList, List synchronizationList) - throws GnpyException { + public Result getGnpyResponse(List elementsList, List connectionsList, + List pathRequestList, List synchronizationList) { GnpyApi gnpyApi = new GnpyApiBuilder() .setTopologyFile( new TopologyFileBuilder() @@ -142,20 +127,7 @@ public class GnpyUtilitiesImpl { .collect(Collectors.toMap(PathRequest::key, pathRequest -> pathRequest))) .build()) .build(); - try { - InstanceIdentifier idGnpyApi = InstanceIdentifier.builder(GnpyApi.class).build(); - String gnpyJson = converter.createJsonStringFromDataObject(idGnpyApi, gnpyApi, - JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02); - LOG.debug("GNPy Id: {} / json created : {}", idGnpyApi, gnpyJson); - ConnectToGnpyServer connect = new ConnectToGnpyServer(); - String gnpyJsonModified = gnpyJson.replace("gnpy-eqpt-config:", "") - .replace("gnpy-path-computation-simplified:", "").replace("gnpy-network-topology:", ""); - - return connect.returnGnpyResponse(gnpyJsonModified); - } catch (IOException e) { - LOG.error("Cannot convert data object to json string {}", gnpyApi); - throw new GnpyException("Cannot convert data object to json string", e); - } + return gnpyConsumer.computePaths(gnpyApi); } public GnpyResult getGnpyAtoZ() {