diff options
author | Ram Krishna Verma <ram_krishna.verma@bell.ca> | 2020-08-06 18:06:17 -0400 |
---|---|---|
committer | Ram Krishna Verma <ram_krishna.verma@bell.ca> | 2020-08-07 09:15:53 -0400 |
commit | c0d20132b774b1fa43b4fb9b322e13b6d19d33ee (patch) | |
tree | d62987133ad74c1611d7fc86f8816c4182dabbd8 /main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java | |
parent | e32cb0265d6950c10a7512868846feeee95f9434 (diff) |
Fail component health check if PDP is down
Changing the policy component health check to fail if the required
PDP instances are down or not registered with PAP.
The check is performed by comparing the "currentInstanceCount"
& "desiredInstanceCount" fields of PdpSubGroup.
Issue-ID: POLICY-2718
Change-Id: Iad1075d0812f4ef166dfed4f110eff4d9e5f995e
Signed-off-by: Ram Krishna Verma <ram_krishna.verma@bell.ca>
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java')
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java index 36f25a08..3ce8aa64 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -141,9 +142,10 @@ public class PolicyComponentsHealthCheckProvider { // Check PDPs, read status from DB try { - Map<String, List<Pdp>> pdpListWithType = fetchPdpsHealthStatus(); - if (isHealthy && (pdpListWithType.isEmpty() || pdpListWithType.values().stream().flatMap(List::stream) - .anyMatch(pdp -> !PdpHealthStatus.HEALTHY.equals(pdp.getHealthy())))) { + List<PdpGroup> groups = fetchPdpGroups(); + Map<String, List<Pdp>> pdpListWithType = fetchPdpsHealthStatus(groups); + if (isHealthy && (!verifyNumberOfPdps(groups) || pdpListWithType.values().stream().flatMap(List::stream) + .anyMatch(pdp -> !PdpHealthStatus.HEALTHY.equals(pdp.getHealthy())))) { isHealthy = false; } result.put(PapConstants.POLICY_PDPS, pdpListWithType); @@ -157,22 +159,40 @@ public class PolicyComponentsHealthCheckProvider { return Pair.of(Status.OK, result); } - private Map<String, List<Pdp>> fetchPdpsHealthStatus() throws PfModelException { + private Map<String, List<Pdp>> fetchPdpsHealthStatus(List<PdpGroup> groups) { Map<String, List<Pdp>> pdpListWithType = new HashMap<>(); - final PolicyModelsProviderFactoryWrapper modelProviderWrapper = Registry - .get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class); - try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) { - final List<PdpGroup> groups = databaseProvider.getPdpGroups(null); - for (final PdpGroup group : groups) { - for (final PdpSubGroup subGroup : group.getPdpSubgroups()) { - List<Pdp> pdpList = new ArrayList<>(subGroup.getPdpInstances()); - pdpListWithType.computeIfAbsent(subGroup.getPdpType(), k -> new ArrayList<>()).addAll(pdpList); - } + for (final PdpGroup group : groups) { + for (final PdpSubGroup subGroup : group.getPdpSubgroups()) { + List<Pdp> pdpList = new ArrayList<>(subGroup.getPdpInstances()); + pdpListWithType.computeIfAbsent(subGroup.getPdpType(), k -> new ArrayList<>()).addAll(pdpList); } } return pdpListWithType; } + private boolean verifyNumberOfPdps(List<PdpGroup> groups) { + boolean flag = true; + for (final PdpGroup group : groups) { + for (final PdpSubGroup subGroup : group.getPdpSubgroups()) { + if (subGroup.getCurrentInstanceCount() < subGroup.getDesiredInstanceCount()) { + flag = false; + break; + } + } + } + return flag; + } + + private List<PdpGroup> fetchPdpGroups() throws PfModelException { + List<PdpGroup> groups = new ArrayList<>(); + final PolicyModelsProviderFactoryWrapper modelProviderWrapper = + Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class); + try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) { + groups = databaseProvider.getPdpGroups(null); + } + return groups; + } + private HealthCheckReport fetchPolicyComponentHealthStatus(HttpClient httpClient) { HealthCheckReport clientReport; try { |