diff options
Diffstat (limited to 'src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java')
-rw-r--r-- | src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java | 125 |
1 files changed, 10 insertions, 115 deletions
diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java b/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java index ae40dbf..a92617c 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/child/StateOof.java @@ -22,31 +22,19 @@ package org.onap.dcaegen2.services.sonhms.child; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Set; import java.util.UUID; import java.util.concurrent.BlockingQueue; -import org.onap.dcaegen2.services.sonhms.ConfigPolicy; import org.onap.dcaegen2.services.sonhms.Configuration; -import org.onap.dcaegen2.services.sonhms.dao.SonRequestsRepository; -import org.onap.dcaegen2.services.sonhms.dmaap.PolicyDmaapClient; -import org.onap.dcaegen2.services.sonhms.entity.PciRequests; -import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException; import org.onap.dcaegen2.services.sonhms.exceptions.OofNotFoundException; -import org.onap.dcaegen2.services.sonhms.model.CellPciPair; -import org.onap.dcaegen2.services.sonhms.restclient.AsyncResponseBody; +import org.onap.dcaegen2.services.sonhms.model.AnrInput; import org.onap.dcaegen2.services.sonhms.restclient.OofRestClient; -import org.onap.dcaegen2.services.sonhms.restclient.Solution; -import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.slf4j.Logger; public class StateOof { private static final Logger log = org.slf4j.LoggerFactory.getLogger(StateOof.class); private BlockingQueue<List<String>> childStatusUpdate; - public StateOof() { } @@ -61,33 +49,14 @@ public class StateOof { } /** - * Triggers OOF. + * Triggers OOF for pci. * @throws OofNotFoundException when trigger oof fails */ - public void triggerOof(Map<String, ArrayList<Integer>> result, - String networkId) throws OofNotFoundException, InterruptedException { - // check for 0 collision and 0 confusion - ArrayList<String> cellidList = new ArrayList<>(); - ArrayList<String> cellIds = new ArrayList<>(); - - for (Map.Entry<String, ArrayList<Integer>> entry : result.entrySet()) { - String key = entry.getKey(); - ArrayList<Integer> arr; - arr = entry.getValue(); - if (!arr.isEmpty()) { - Set<Integer> set = new HashSet<>(arr); - if (((set.size() == 1) && !set.contains(0)) || (set.size() != 1)) { - cellIds.add(key); - - } - } - - } - - for (String cell : cellIds) { - log.debug("cellidList entries: {}", cell); - cellidList.add(cell); - } + public UUID triggerOof(List<String> cellidList, + String networkId, List<AnrInput> anrInputList) throws OofNotFoundException, InterruptedException { + + log.info("Triggering oof"); + log.debug("the cells triggering the oof are {}", cellidList); UUID transactionId = UUID.randomUUID(); @@ -97,8 +66,8 @@ public class StateOof { List<String> optimizers = config.getOptimizers(); String oofResponse = OofRestClient.queryOof(numSolutions, transactionId.toString(), "create", cellidList, - networkId, optimizers); - log.debug("Synchronous Response {}", oofResponse); + networkId, optimizers, anrInputList); + log.info("Synchronous Response {}", oofResponse); List<String> childStatus = new ArrayList<>(); childStatus.add(Long.toString(Thread.currentThread().getId())); @@ -110,83 +79,9 @@ public class StateOof { Thread.currentThread().interrupt(); } - - // Store Request details in Database - - PciRequests pciRequest = new PciRequests(); - - long childThreadId = Thread.currentThread().getId(); - pciRequest.setTransactionId(transactionId.toString()); - pciRequest.setChildThreadId(childThreadId); - SonRequestsRepository pciRequestsRepository = BeanUtil.getBean(SonRequestsRepository.class); - pciRequestsRepository.save(pciRequest); - - while (!ChildThread.getResponseMap().containsKey(childThreadId)) { - Thread.sleep(100); - } - - AsyncResponseBody asynResponseBody = ChildThread.getResponseMap().get(childThreadId); - - try { - sendToPolicy(asynResponseBody); - } catch (ConfigDbNotFoundException e1) { - log.debug("Config DB is unreachable: {}", e1); - } - - pciRequestsRepository = BeanUtil.getBean(SonRequestsRepository.class); - pciRequestsRepository.deleteByChildThreadId(childThreadId); - - childStatus = new ArrayList<>(); - childStatus.add(Long.toString(Thread.currentThread().getId())); - childStatus.add("success"); - try { - childStatusUpdate.put(childStatus); - } catch (InterruptedException e) { - log.debug("InterruptedException {}", e); - Thread.currentThread().interrupt(); - - } - - } - - /** - * Sends Dmaap notification to Policy. - * - * @throws ConfigDbNotFoundException - * when config db is unreachable - */ - private void sendToPolicy(AsyncResponseBody async) throws ConfigDbNotFoundException { - - if (log.isDebugEnabled()) { - log.debug(async.toString()); - } - - List<Solution> solutions; - solutions = async.getSolutions(); - PnfUtils pnfUtils = new PnfUtils(); - Map<String, List<CellPciPair>> pnfs = pnfUtils.getPnfs(solutions); - - for (Map.Entry<String, List<CellPciPair>> entry : pnfs.entrySet()) { - String pnfName = entry.getKey(); - List<CellPciPair> cellPciPairs = entry.getValue(); - - ChildThreadUtils childThreadUtils = new ChildThreadUtils(ConfigPolicy.getInstance()); - String notification = childThreadUtils.getNotificationString(pnfName, cellPciPairs, - UUID.randomUUID().toString(), System.currentTimeMillis()); - log.debug("Policy Notification: {}", notification); - PolicyDmaapClient policy = new PolicyDmaapClient(); - boolean status = policy.sendNotificationToPolicy(notification); - log.debug("sent Message: {}", status); - if (status) { - log.debug("Message sent to policy"); - } else { - log.debug("Sending notification to policy failed"); - } - - } + return transactionId; } - } |