package org.onap.policy.pap.main.comm;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-import java.util.TreeMap;
+
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.base.PfModelException;
}
/*
- * Indicate that a heart beat was received from the PDP. This is invoked
- * only if handleXxx() does not throw an exception.
+ * Indicate that a heart beat was received from the PDP. This is invoked only if handleXxx() does not
+ * throw an exception.
*/
if (message.getName() != null) {
- PdpTracker pdpTracker = Registry.get(PapConstants.REG_PDP_TRACKER);
+ final PdpTracker pdpTracker = Registry.get(PapConstants.REG_PDP_TRACKER);
pdpTracker.add(message.getName());
}
} catch (final PolicyPapException exp) {
private boolean findAndUpdatePdpGroup(final PdpStatus message, final PolicyModelsProvider databaseProvider)
throws PfModelException {
boolean pdpGroupFound = false;
- PdpGroup emptyPdpGroup = null;
final PdpGroupFilter filter =
- PdpGroupFilter.builder().pdpType(message.getPdpType()).groupState(PdpState.ACTIVE).build();
+ PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
- final TreeMap<Integer, PdpGroup> selectedPdpGroups = new TreeMap<>();
final List<PdpGroup> pdpGroups = databaseProvider.getFilteredPdpGroups(filter);
- emptyPdpGroup = selectPdpGroupsForRegistration(message, selectedPdpGroups, pdpGroups);
- if (emptyPdpGroup != null) {
- pdpGroupFound = registerPdp(message, databaseProvider, emptyPdpGroup);
- } else if (!selectedPdpGroups.isEmpty()) {
- final PdpGroup finalizedPdpGroup = selectedPdpGroups.lastEntry().getValue();
- pdpGroupFound = registerPdp(message, databaseProvider, finalizedPdpGroup);
+ if (!pdpGroups.isEmpty()) {
+ pdpGroupFound = registerPdp(message, databaseProvider, pdpGroups.get(0));
}
return pdpGroupFound;
}
- private PdpGroup selectPdpGroupsForRegistration(final PdpStatus message,
- final Map<Integer, PdpGroup> selectedPdpGroups, final List<PdpGroup> pdpGroups) {
- PdpGroup emptyPdpGroup = null;
- for (final PdpGroup pdpGroup : pdpGroups) {
- emptyPdpGroup = selectPdpSubGroupsForRegistration(message, selectedPdpGroups, pdpGroup, emptyPdpGroup);
- }
- return emptyPdpGroup;
- }
-
- private PdpGroup selectPdpSubGroupsForRegistration(final PdpStatus message,
- final Map<Integer, PdpGroup> selectedPdpGroups, final PdpGroup pdpGroup, PdpGroup emptyPdpGroup) {
- for (final PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
- if (message.getSupportedPolicyTypes().containsAll(pdpSubGroup.getSupportedPolicyTypes())) {
- if (pdpSubGroup.getCurrentInstanceCount() == 0) {
- emptyPdpGroup = pdpGroup;
- } else {
- selectedPdpGroups.put(
- pdpSubGroup.getDesiredInstanceCount() - pdpSubGroup.getCurrentInstanceCount(),
- pdpGroup);
- }
- }
- }
- return emptyPdpGroup;
- }
-
private boolean registerPdp(final PdpStatus message, final PolicyModelsProvider databaseProvider,
final PdpGroup finalizedPdpGroup) throws PfModelException {
Optional<PdpSubGroup> subGroup;
final Pdp pdpInstanceDetails) {
/*
- * "EqualsBuilder" is a bit of a misnomer, as it uses containsAll() to check supported policy types.
- * Nevertheless, it does the job and provides a convenient way to build a bunch of comparisons.
+ * "EqualsBuilder" is a bit of a misnomer, as it uses containsAll() to check policies. Nevertheless, it does the
+ * job and provides a convenient way to build a bunch of comparisons.
*/
return new EqualsBuilder().append(message.getPdpGroup(), pdpGroup.getName())
.append(message.getPdpSubgroup(), subGroup.getPdpType())
.append(message.getPdpType(), subGroup.getPdpType())
.append(message.getState(), pdpInstanceDetails.getPdpState())
- .append(message.getSupportedPolicyTypes().containsAll(subGroup.getSupportedPolicyTypes()), true)
- .build();
+ .append(message.getPolicies().containsAll(subGroup.getPolicies()), true)
+ .append(subGroup.getPolicies().containsAll(message.getPolicies()), true).build();
}
private void updatePdpHealthStatus(final PdpStatus message, final PdpSubGroup pdpSubgroup, final Pdp pdpInstance,