X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=rapp-manager-dme%2Fsrc%2Fmain%2Fjava%2Fcom%2Foransc%2Frappmanager%2Fdme%2Fservice%2FDmeDeployer.java;h=a57f9b4272ab814afc43a71686d3e419274f6a0c;hb=4a9eca242a06d57fb9dca16b1a59cab2d6250c7b;hp=329841f5d7ca01c4329d540b8598008dcf15fd3a;hpb=a58b2c0d0cfaff779ece990a4bd33d7d10ad576c;p=nonrtric%2Fplt%2Frappmanager.git diff --git a/rapp-manager-dme/src/main/java/com/oransc/rappmanager/dme/service/DmeDeployer.java b/rapp-manager-dme/src/main/java/com/oransc/rappmanager/dme/service/DmeDeployer.java index 329841f..a57f9b4 100755 --- a/rapp-manager-dme/src/main/java/com/oransc/rappmanager/dme/service/DmeDeployer.java +++ b/rapp-manager-dme/src/main/java/com/oransc/rappmanager/dme/service/DmeDeployer.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.function.BiFunction; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,16 +61,12 @@ public class DmeDeployer implements RappDeployer { public boolean deployRappInstance(Rapp rapp, RappInstance rappInstance) { logger.debug("Deploying DME functions for RappInstance {}", rappInstance.getRappInstanceId()); boolean deployState = true; - if (rappInstance.getDme().getInfoTypesProducer() != null - || rappInstance.getDme().getInfoTypeConsumer() != null) { - Set infoTypes = new HashSet<>(); - if (rappInstance.getDme().getInfoTypesProducer() != null) { - infoTypes.addAll(rappInstance.getDme().getInfoTypesProducer()); - } - if (rappInstance.getDme().getInfoTypeConsumer() != null) { - infoTypes.add(rappInstance.getDme().getInfoTypeConsumer()); - } - deployState = createInfoTypes(rapp, infoTypes); + if (rappInstance.getDme().getInfoTypesProducer() != null) { + deployState = createProducerInfoTypes(rapp, rappInstance.getDme().getInfoTypesProducer()); + } + if (rappInstance.getDme().getInfoTypeConsumer() != null) { + deployState = + deployState && createConsumerInfoTypes(rapp, Set.of(rappInstance.getDme().getInfoTypeConsumer())); } if (rappInstance.getDme().getInfoProducer() != null) { deployState = deployState && createInfoProducer(rapp, rappInstance.getDme().getInfoProducer()); @@ -123,14 +120,15 @@ public class DmeDeployer implements RappDeployer { ConsumerJob consumerJob = objectMapper.readValue(consumerPayload, ConsumerJob.class); requiredInfoTypes.add(consumerJob.getInfoTypeId()); } - Set allInfoTypes = new HashSet<>(rapp.getRappResources().getDme().getInfoTypes()); + Set allInfoTypes = new HashSet<>(rapp.getRappResources().getDme().getProducerInfoTypes()); + allInfoTypes.addAll(rapp.getRappResources().getDme().getConsumerInfoTypes()); requiredInfoTypes.removeAll(allInfoTypes); if (!requiredInfoTypes.isEmpty()) { allInfoTypes.addAll(dataProducerRegistrationApiClient.getInfoTypdentifiers()); requiredInfoTypes.removeAll(allInfoTypes); if (!requiredInfoTypes.isEmpty()) { rapp.setReason(String.format("Invalid rapp package as the following info types cannot be found %s", - requiredInfoTypes)); + requiredInfoTypes)); } } return true; @@ -147,12 +145,21 @@ public class DmeDeployer implements RappDeployer { return true; } - boolean createInfoTypes(Rapp rApp, Set infoTypes) { - logger.debug("Creating DME info types {} for rApp {}", infoTypes, rApp.getRappId()); + boolean createProducerInfoTypes(Rapp rApp, Set infoTypes) { + logger.debug("Creating DME producer info types {} for rApp {}", infoTypes, rApp.getRappId()); + return createInfoTypes(rApp, infoTypes, rappCsarConfigurationHandler::getDmeProducerInfoTypePayload); + } + + boolean createConsumerInfoTypes(Rapp rApp, Set infoTypes) { + logger.debug("Creating DME consumer info types {} for rApp {}", infoTypes, rApp.getRappId()); + return createInfoTypes(rApp, infoTypes, rappCsarConfigurationHandler::getDmeConsumerInfoTypePayload); + } + + boolean createInfoTypes(Rapp rApp, Set infoTypes, BiFunction payloadReader) { try { Map producerInfoTypeInfoMap = new HashMap<>(); for (String infoType : infoTypes) { - String infoTypePayload = rappCsarConfigurationHandler.getDmeInfoTypePayload(rApp, infoType); + String infoTypePayload = payloadReader.apply(rApp, infoType); if (infoTypePayload != null && !infoTypePayload.isEmpty()) { producerInfoTypeInfoMap.put(infoType, objectMapper.readValue(infoTypePayload, ProducerInfoTypeInfo.class));