From 19ef8b24a98c09a349e6ae7309f535a0135463f6 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Fri, 21 Aug 2020 13:43:08 -0400 Subject: Make Actors event-agnostic Removed event and event-context code from the Actor code. Also removed the preprocessing steps from the Actor code, giving the application complete control over any preprocessing. Also fixed a bug wherein the APPC actor was treating the AAI_RESOURCE_VNF property as a String instead of as a GenericVnf. Issue-ID: POLICY-2746-actor Change-Id: Ibc05fe39ffedc0bc461abf10e6a960861ac70119 Signed-off-by: Jim Hahn --- .../policy/controlloop/actor/vfc/VfcOperation.java | 37 +++----------------- .../policy/controlloop/actor/vfc/RestartTest.java | 39 ++++++--------------- .../controlloop/actor/vfc/VfcOperationTest.java | 40 ---------------------- 3 files changed, 16 insertions(+), 100 deletions(-) (limited to 'models-interactions/model-actors/actor.vfc/src') diff --git a/models-interactions/model-actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VfcOperation.java b/models-interactions/model-actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VfcOperation.java index 0a1136d2f..65c7318ff 100644 --- a/models-interactions/model-actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VfcOperation.java +++ b/models-interactions/model-actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VfcOperation.java @@ -21,7 +21,6 @@ package org.onap.policy.controlloop.actor.vfc; import java.util.List; -import java.util.concurrent.CompletableFuture; import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; @@ -82,14 +81,6 @@ public abstract class VfcOperation extends HttpOperation { return super.getPollingPath() + jobId; } - /** - * Starts the GUARD. - */ - @Override - protected CompletableFuture startPreprocessorAsync() { - return startGuardAsync(); - } - @Override protected Status detmStatus(Response rawResponse, VfcResponse response) { if (rawResponse.getStatus() == 200) { @@ -170,16 +161,15 @@ public abstract class VfcOperation extends HttpOperation { * @return request */ protected VfcRequest constructVfcRequest() { - final String serviceInstance = getOptProperty(OperationProperties.ENRICHMENT_SERVICE_ID, - "service-instance.service-instance-id"); - final String vmId = getOptProperty(OperationProperties.ENRICHMENT_VSERVER_ID, "vserver.vserver-id"); - final String vmName = getOptProperty(OperationProperties.ENRICHMENT_VSERVER_NAME, "vserver.vserver-name"); - final String vnfId = getOptProperty(OperationProperties.ENRICHMENT_GENERIC_VNF_ID, GENERIC_VNF_ID); + final String serviceInstance = getProperty(OperationProperties.ENRICHMENT_SERVICE_ID); + final String vmId = getProperty(OperationProperties.ENRICHMENT_VSERVER_ID); + final String vmName = getProperty(OperationProperties.ENRICHMENT_VSERVER_NAME); + final String vnfId = getProperty(OperationProperties.ENRICHMENT_GENERIC_VNF_ID); if (StringUtils.isBlank(serviceInstance) || StringUtils.isBlank(vmId) || StringUtils.isBlank(vmName)) { // original code did not check the VNF id, so we won't check it either throw new IllegalArgumentException( - "Cannot extract enrichment data for service instance, server id, or server name."); + "Missing enrichment data for service instance, server id, or server name."); } VfcHealActionVmInfo vmActionInfo = new VfcHealActionVmInfo(); @@ -202,21 +192,4 @@ public abstract class VfcOperation extends HttpOperation { return request; } - - /** - * Gets an optional property, first checking the properties, then checking the - * enrichment data. - * - * @param propName property name - * @param enrichmentName property name within the enrichment data - * @return the property's value, or {@code null} if it is not found - */ - protected String getOptProperty(String propName, String enrichmentName) { - if (containsProperty(propName)) { - // return the value, even if it's null - return getProperty(propName); - } - - return params.getContext().getEnrichment().get(enrichmentName); - } } diff --git a/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/RestartTest.java b/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/RestartTest.java index 9a4677d79..fab7636ba 100644 --- a/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/RestartTest.java +++ b/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/RestartTest.java @@ -32,7 +32,6 @@ import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.onap.policy.aai.AaiCqResponse; import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; import org.onap.policy.controlloop.actorserviceprovider.OperationProperties; @@ -67,49 +66,26 @@ public class RestartTest extends BasicVfcOperation { @Before public void setup() throws Exception { super.setUp(); - params.getContext().getEnrichment().put("service-instance.service-instance-id", TEST_SERVICE_INSTANCE_ID); - params.getContext().getEnrichment().put("vserver.vserver-id", TEST_VSERVER_ID); - params.getContext().getEnrichment().put("vserver.vserver-name", TEST_VSERVER_NAME); - restartOper = new Restart(params, config); - } - - /** - * Tests "success" case with simulator. - */ - @Test - public void testSuccess() throws Exception { - HttpPollingParams opParams = HttpPollingParams.builder().clientName(MY_CLIENT).path("ns").pollPath("jobs") - .maxPolls(1).build(); - config = new HttpPollingConfig(blockingExecutor, opParams, HttpClientFactoryInstance.getClientFactory()); - - params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).build(); restartOper = new Restart(params, config); - outcome = restartOper.start().get(); - assertEquals(OperationResult.SUCCESS, outcome.getResult()); - assertTrue(outcome.getResponse() instanceof VfcResponse); + loadProperties(); } /** - * Tests "success" case with simulator, using properties instead of custom query data. + * Tests "success" case with simulator. */ @Test - public void testSuccessViaProperties() throws Exception { + public void testSuccess() throws Exception { HttpPollingParams opParams = HttpPollingParams.builder().clientName(MY_CLIENT).path("ns").pollPath("jobs") .maxPolls(1).build(); config = new HttpPollingConfig(blockingExecutor, opParams, HttpClientFactoryInstance.getClientFactory()); params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).preprocessed(true).build(); - params.getContext().removeProperty(AaiCqResponse.CONTEXT_KEY); restartOper = new Restart(params, config); - // set the properties - restartOper.setProperty(OperationProperties.ENRICHMENT_SERVICE_ID, TEST_SERVICE_INSTANCE_ID); - restartOper.setProperty(OperationProperties.ENRICHMENT_VSERVER_ID, TEST_VSERVER_ID); - restartOper.setProperty(OperationProperties.ENRICHMENT_VSERVER_NAME, TEST_VSERVER_NAME); - restartOper.setProperty(OperationProperties.ENRICHMENT_GENERIC_VNF_ID, TEST_GENERIC_VNF_ID); + loadProperties(); // run the operation outcome = restartOper.start().get(); @@ -142,4 +118,11 @@ public class RestartTest extends BasicVfcOperation { assertNotNull(resultPair.getLeft()); assertNotNull(resultPair.getRight()); } + + private void loadProperties() { + restartOper.setProperty(OperationProperties.ENRICHMENT_SERVICE_ID, TEST_SERVICE_INSTANCE_ID); + restartOper.setProperty(OperationProperties.ENRICHMENT_VSERVER_ID, TEST_VSERVER_ID); + restartOper.setProperty(OperationProperties.ENRICHMENT_VSERVER_NAME, TEST_VSERVER_NAME); + restartOper.setProperty(OperationProperties.ENRICHMENT_GENERIC_VNF_ID, TEST_GENERIC_VNF_ID); + } } diff --git a/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/VfcOperationTest.java b/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/VfcOperationTest.java index 6f8956f6f..4f20c12d4 100644 --- a/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/VfcOperationTest.java +++ b/models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/VfcOperationTest.java @@ -26,11 +26,9 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import java.util.Map; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext; import org.onap.policy.vfc.VfcResponse; import org.onap.policy.vfc.VfcResponseDescriptor; @@ -59,11 +57,6 @@ public class VfcOperationTest extends BasicVfcOperation { assertTrue(oper.isUsePolling()); } - @Test - public void testStartPreprocessorAsync() { - assertNotNull(oper.startPreprocessorAsync()); - } - @Test public void testResetPollCount() { oper.resetPollCount(); @@ -88,37 +81,4 @@ public class VfcOperationTest extends BasicVfcOperation { public void testIsSuccess() { assertTrue(oper.isSuccess(rawResponse, response)); } - - @Test - public void testGetOptProperty() { - // in neither property nor enrichment - assertNull(oper.getOptProperty("propA", "propA2")); - - // both - should choose the property - remakeOper(Map.of("propB2", "valueB2")); - oper.setProperty("propB", "valueB"); - assertEquals("valueB", oper.getOptProperty("propB", "propB2")); - - // both - should choose the property, even if it's null - remakeOper(Map.of("propC2", "valueC2")); - oper.setProperty("propC", null); - assertNull(oper.getOptProperty("propC", "propC2")); - - // only in enrichment data - remakeOper(Map.of("propD2", "valueD2")); - assertEquals("valueD2", oper.getOptProperty("propD", "propD2")); - } - - /** - * Remakes the operation, with the specified A&AI enrichment data. - * - * @param aai A&AI enrichment data - */ - private void remakeOper(Map aai) { - event.setAai(aai); - context = new ControlLoopEventContext(event); - params = params.toBuilder().context(context).build(); - - oper = new VfcOperation(params, config) {}; - } } -- cgit 1.2.3-korg