aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java64
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java21
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java14
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpRequestsTest.java22
4 files changed, 36 insertions, 85 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
index 6a743a31..bc1f175e 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
@@ -20,7 +20,7 @@
package org.onap.policy.pap.main.comm;
-import java.util.Collections;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -236,16 +236,13 @@ public class PdpModifyRequestMap {
requests.stopPublishing();
- // don't do anything if we don't have a group
- String name = requests.getLastGroupName();
- if (name == null) {
- logger.warn("no group with which to disable {}", requests.getPdpName());
- return;
+ // remove the PDP from all groups
+ try {
+ removeFromGroups(requests.getPdpName());
+ } catch (PfModelException e) {
+ logger.info("unable to remove PDP {} from subgroup", requests.getPdpName(), e);
}
- // remove the PDP from the group
- removeFromGroup(requests.getPdpName(), name);
-
// send the state change
PdpStateChange change = new PdpStateChange();
change.setName(requests.getPdpName());
@@ -254,38 +251,50 @@ public class PdpModifyRequestMap {
}
/**
- * Removes a PDP from its group.
+ * Removes a PDP from all active groups.
*
* @param pdpName name of the PDP to be removed
- * @param groupName name of the group from which it should be removed
+ * @throws PfModelException if an error occurs
*/
- private void removeFromGroup(String pdpName, String groupName) {
+ public void removeFromGroups(String pdpName) throws PfModelException {
try (PolicyModelsProvider dao = daoFactory.create()) {
- PdpGroupFilter filter = PdpGroupFilter.builder().name(groupName).groupState(PdpState.ACTIVE)
- .version(PdpGroupFilter.LATEST_VERSION).build();
-
+ PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
List<PdpGroup> groups = dao.getFilteredPdpGroups(filter);
- if (groups.isEmpty()) {
- return;
- }
+ List<PdpGroup> updates = new ArrayList<>(1);
- PdpGroup group = groups.get(0);
-
- for (PdpSubGroup subgrp : group.getPdpSubgroups()) {
- if (removeFromSubgroup(pdpName, group, subgrp)) {
- dao.updatePdpGroups(Collections.singletonList(group));
- return;
+ for (PdpGroup group : groups) {
+ if (removeFromGroup(pdpName, group)) {
+ updates.add(group);
}
}
- } catch (PfModelException e) {
- logger.info("unable to remove PDP {} from subgroup", pdpName, e);
+ if (!updates.isEmpty()) {
+ dao.updatePdpGroups(updates);
+ }
}
}
/**
+ * Removes a PDP from a group.
+ *
+ * @param pdpName name of the PDP to be removed
+ * @param group group from which it should be removed
+ * @return {@code true} if the PDP was removed from the, {@code false} if it was not
+ * assigned to the group
+ */
+ private boolean removeFromGroup(String pdpName, PdpGroup group) {
+ for (PdpSubGroup subgrp : group.getPdpSubgroups()) {
+ if (removeFromSubgroup(pdpName, group, subgrp)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
* Removes a PDP from a subgroup.
*
* @param pdpName name of the PDP to be removed
@@ -293,9 +302,8 @@ public class PdpModifyRequestMap {
* @param subgrp subgroup from which to attempt to remove the PDP
* @return {@code true} if the PDP was removed, {@code false} if the PDP was not in
* the group
- * @throws PfModelException if a DB error occurs
*/
- private boolean removeFromSubgroup(String pdpName, PdpGroup group, PdpSubGroup subgrp) throws PfModelException {
+ private boolean removeFromSubgroup(String pdpName, PdpGroup group, PdpSubGroup subgrp) {
Iterator<Pdp> iter = subgrp.getPdpInstances().iterator();
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java
index 9fbf36d4..5863b2cb 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpRequests.java
@@ -22,7 +22,6 @@ package org.onap.policy.pap.main.comm;
import lombok.Getter;
import org.onap.policy.models.pdp.concepts.PdpMessage;
-import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.pap.main.comm.msgdata.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,12 +54,6 @@ public class PdpRequests {
*/
private Request[] singletons = new Request[MAX_PRIORITY];
- /**
- * Last group name to which the associated PDP was assigned.
- */
- @Getter
- private String lastGroupName;
-
/**
* Constructs the object.
@@ -72,18 +65,6 @@ public class PdpRequests {
}
/**
- * Records the group information from the request.
- *
- * @param request the request from which to extract the group information
- */
- private void recordGroup(Request request) {
- PdpMessage message = request.getMessage();
- if (message instanceof PdpUpdate) {
- lastGroupName = message.getPdpGroup();
- }
- }
-
- /**
* Adds a singleton request.
*
* @param request the request to be added
@@ -94,8 +75,6 @@ public class PdpRequests {
throw new IllegalArgumentException("unexpected broadcast for " + pdpName);
}
- recordGroup(request);
-
if (checkExisting(request)) {
// have an existing request that's similar - discard this request
return;
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
index 199ebcf1..a92ff95b 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
@@ -293,8 +293,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testDisablePdp() {
map.addRequest(update);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
// indicate failure
invokeFailureHandler(1);
@@ -316,8 +314,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
map.addRequest(change);
map.stopPublishing(PDP1);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
invokeFailureHandler(1);
// should not have stopped publishing a second time
@@ -338,8 +334,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testRemoveFromGroup() throws Exception {
map.addRequest(change);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
PdpGroup group = makeGroup(MY_GROUP, MY_VERSION);
group.setPdpSubgroups(Arrays.asList(makeSubGroup(MY_SUBGROUP + "a", PDP1 + "a"),
makeSubGroup(MY_SUBGROUP, PDP1), makeSubGroup(MY_SUBGROUP + "c", PDP1 + "c")));
@@ -364,8 +358,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testRemoveFromGroup_DaoEx() throws Exception {
map.addRequest(change);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
when(dao.getFilteredPdpGroups(any())).thenThrow(new PfModelException(Status.BAD_REQUEST, "expected exception"));
invokeFailureHandler(1);
@@ -382,8 +374,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testRemoveFromGroup_NoGroups() throws Exception {
map.addRequest(change);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
invokeFailureHandler(1);
verify(dao, never()).updatePdpGroups(any());
@@ -393,8 +383,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testRemoveFromGroup_NoMatchingSubgroup() throws Exception {
map.addRequest(change);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
PdpGroup group = makeGroup(MY_GROUP, MY_VERSION);
group.setPdpSubgroups(Arrays.asList(makeSubGroup(MY_SUBGROUP, DIFFERENT)));
@@ -409,8 +397,6 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
public void testRemoveFromSubgroup() throws Exception {
map.addRequest(change);
- when(requests.getLastGroupName()).thenReturn(MY_GROUP);
-
PdpGroup group = makeGroup(MY_GROUP, MY_VERSION);
group.setPdpSubgroups(Arrays.asList(makeSubGroup(MY_SUBGROUP, PDP1, PDP1 + "x", PDP1 + "y")));
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpRequestsTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpRequestsTest.java
index e219c1d5..1bf73225 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpRequestsTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpRequestsTest.java
@@ -23,7 +23,6 @@ package org.onap.policy.pap.main.comm;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
@@ -60,27 +59,6 @@ public class PdpRequestsTest extends CommonRequestBase {
}
@Test
- public void testRecordGroup_testGetLatestGroupXxx() {
- assertNull(data.getLastGroupName());
-
- data.addSingleton(update);
- assertEquals(MY_GROUP, data.getLastGroupName());
-
- UpdateReq req = makeUpdateReq(PDP1, MY_GROUP, MY_SUBGROUP);
- req.getMessage().setPdpGroup(DIFFERENT);
- data.addSingleton(req);
- assertEquals(DIFFERENT, data.getLastGroupName());
-
- // doesn't record info from other message types
- StateChangeReq req2 = change;
- req2.getMessage().setPdpGroup(MY_GROUP);
- data.addSingleton(req2);
-
- // should be unchanged
- assertEquals(DIFFERENT, data.getLastGroupName());
- }
-
- @Test
public void testAddSingleton() {
data.addSingleton(update);