From: vidhyasree Date: Fri, 12 Jan 2018 20:23:34 +0000 (-0500) Subject: Fix for resumetraffic to allow traffic X-Git-Tag: v1.3.0~410 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=ac97522c6eca08a4dd9c4b2486e07b89fb5d9d99;p=appc.git Fix for resumetraffic to allow traffic ResumeTraffic action is added to LCM actions prior. In this ticket payload structure is added to resumetraffic in yang file. In ResumeTrafficService.java and ResumeTrafficServiceTest.java added payload parameters. Issue-ID: APPC-346 Signed-off-by: vidhyasree Change-Id: I9a3ca163bbd520e599416d03edc921a6cafb3059 --- diff --git a/appc-provider/appc-provider-bundle/.gitignore b/appc-provider/appc-provider-bundle/.gitignore index 67b7abeb9..530fa2072 100644 --- a/appc-provider/appc-provider-bundle/.gitignore +++ b/appc-provider/appc-provider-bundle/.gitignore @@ -2,4 +2,5 @@ /target-ide/ /bin/ /.settings/ -**/yang-gen-config/ \ No newline at end of file +**/yang-gen-config/ +/target-ide/ diff --git a/appc-provider/appc-provider-bundle/src/main/java/org/onap/appc/provider/lcm/service/ResumeTrafficService.java b/appc-provider/appc-provider-bundle/src/main/java/org/onap/appc/provider/lcm/service/ResumeTrafficService.java index 53d038141..57081c1c3 100644 --- a/appc-provider/appc-provider-bundle/src/main/java/org/onap/appc/provider/lcm/service/ResumeTrafficService.java +++ b/appc-provider/appc-provider-bundle/src/main/java/org/onap/appc/provider/lcm/service/ResumeTrafficService.java @@ -9,15 +9,15 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * ============LICENSE_END========================================================= */ @@ -29,13 +29,14 @@ import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ResumeTrafficInp import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ResumeTrafficOutput; import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ResumeTrafficOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.action.identifiers.ActionIdentifiers; +import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Payload; import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader; import org.onap.appc.requesthandler.objects.RequestHandlerInput; import org.onap.appc.executor.objects.LCMCommandStatus; import org.onap.appc.util.JsonUtil; - import java.io.IOException; import java.util.Map; + /** * Provide LCM command service for Resume VNF traffic */ @@ -51,16 +52,18 @@ public class ResumeTrafficService extends AbstractBaseService { /** * Process the Resume request + * * @param input of ResumeTrafficInput from the REST API input * @return ResumeTrafficOutputBuilder which has the process results */ public ResumeTrafficOutputBuilder process(ResumeTrafficInput input) { - CommonHeader commonHeader = input.getCommonHeader(); + CommonHeader commonHeader = input.getCommonHeader(); ActionIdentifiers actionIdentifiers = input.getActionIdentifiers(); + Payload payload = input.getPayload(); - validate(commonHeader, input.getAction(), actionIdentifiers); + validate(commonHeader, input.getAction(), actionIdentifiers, payload); if (status == null) { - proceedAction(input); + proceedAction(commonHeader, actionIdentifiers, payload); } ResumeTrafficOutputBuilder outputBuilder = new ResumeTrafficOutputBuilder(); @@ -75,23 +78,40 @@ public class ResumeTrafficService extends AbstractBaseService { * * @param input of ResumeTrafficInput from the REST API input */ - void validate(CommonHeader commonHeader, - Action action, - ActionIdentifiers actionIdentifiers) { - status = validateVnfId(commonHeader, action, actionIdentifiers); - if (status != null) { - return; - } - } + void validate(CommonHeader commonHeader, Action action, ActionIdentifiers actionIdentifiers, Payload payload) { + status = validateVnfId(commonHeader, action, actionIdentifiers); + if (status != null) { + return; + } + // validate payload + String keyName = "payload"; + if (payload == null) { + status = buildStatusForParamName(LCMCommandStatus.MISSING_MANDATORY_PARAMETER, keyName); + return; + } + String payloadString = payload.getValue(); + status = validateMustHaveParamValue(payloadString == null ? payloadString : payloadString.trim(), "payload"); + if (status != null) { + return; + } + try { + Map payloadMap = JsonUtil.convertJsonStringToFlatMap(payloadString); + validateMustHaveParamValue(payloadMap.get(keyName), keyName); + } catch (IOException e) { + logger.error(String.format("ResumeTrafficService (%s) got IOException when converting payload", rpcName), + e); + status = buildStatusForErrorMsg(LCMCommandStatus.UNEXPECTED_ERROR, e.getMessage()); + } + } /** * Proceed to action for the Resume VNF traffic. * * @param input of ResumeTrafficInput from the REST API input */ - void proceedAction(ResumeTrafficInput input) { - RequestHandlerInput requestHandlerInput = getRequestHandlerInput( - input.getCommonHeader(), input.getActionIdentifiers(), null, this.getClass().getName()); + void proceedAction(CommonHeader commonHeader, ActionIdentifiers actionIdentifiers, Payload payload) { + RequestHandlerInput requestHandlerInput = + getRequestHandlerInput(commonHeader, actionIdentifiers, payload, this.getClass().getName()); if (requestHandlerInput != null) { executeAction(requestHandlerInput); } diff --git a/appc-provider/appc-provider-bundle/src/test/java/org/onap/appc/provider/lcm/service/ResumeTrafficServiceTest.java b/appc-provider/appc-provider-bundle/src/test/java/org/onap/appc/provider/lcm/service/ResumeTrafficServiceTest.java index 2ea7ee0d2..1372b7370 100644 --- a/appc-provider/appc-provider-bundle/src/test/java/org/onap/appc/provider/lcm/service/ResumeTrafficServiceTest.java +++ b/appc-provider/appc-provider-bundle/src/test/java/org/onap/appc/provider/lcm/service/ResumeTrafficServiceTest.java @@ -51,10 +51,11 @@ import static org.powermock.api.mockito.PowerMockito.whenNew; @PrepareForTest({ResumeTrafficService.class, RequestExecutor.class}) public class ResumeTrafficServiceTest { private final Action myAction = Action.ResumeTraffic; - + private final String PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"}}"; private ResumeTrafficInput mockInput = mock(ResumeTrafficInput.class); private CommonHeader mockCommonHeader = mock(CommonHeader.class); private ActionIdentifiers mockAI = mock(ActionIdentifiers.class); + private Payload mockPayload = mock(Payload.class); private ResumeTrafficService resumeServiceAction; @Before @@ -126,7 +127,7 @@ public class ResumeTrafficServiceTest { @Test public void testValidate() throws Exception { - resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI,mockPayload); Status status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); Assert.assertEquals("should return missing parameter", Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode()); @@ -140,23 +141,46 @@ public class ResumeTrafficServiceTest { Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId(); // test empty action - resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI,mockPayload); status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); Assert.assertEquals("Should return missing parameter for action", Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode()); // test empty ActionIdentifier - resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI,mockPayload); status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); Assert.assertEquals("should return missing parameter", Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode()); // test Invalid VNF_ID Mockito.doReturn("").when(mockAI).getVnfId(); - resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI,mockPayload); + status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); + Assert.assertEquals("should return invalid parameter", + Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode()); + // test null payload + Mockito.doReturn("vnfId").when(mockAI).getVnfId(); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI, null); + Mockito.verify(resumeServiceAction, times(1)).validateExcludedActIds(any(), any()); + status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); + Assert.assertEquals("should return missing parameter", + Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode()); + + // test empty payload + + Mockito.doReturn("").when(mockPayload).getValue(); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI, mockPayload); + status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); + Assert.assertEquals("should return invalid parameter", + Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode()); + + // test space payload + Mockito.doReturn(" ").when(mockPayload).getValue(); + resumeServiceAction.validate(mockCommonHeader, Action.ResumeTraffic, mockAI, mockPayload); status = (Status) Whitebox.getInternalState(resumeServiceAction, "status"); Assert.assertEquals("should return invalid parameter", Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode()); + } } diff --git a/appc-provider/appc-provider-features/.gitignore b/appc-provider/appc-provider-features/.gitignore index 8a45e5364..0cefa914d 100644 --- a/appc-provider/appc-provider-features/.gitignore +++ b/appc-provider/appc-provider-features/.gitignore @@ -1,4 +1,5 @@ /target/ +/target-ide/ /bin/ /.settings/ -/target-ide/ \ No newline at end of file +/target-ide/ diff --git a/appc-provider/appc-provider-model/.gitignore b/appc-provider/appc-provider-model/.gitignore index a7d704055..0cefa914d 100644 --- a/appc-provider/appc-provider-model/.gitignore +++ b/appc-provider/appc-provider-model/.gitignore @@ -1,4 +1,5 @@ /target/ /target-ide/ /bin/ -/.settings/ \ No newline at end of file +/.settings/ +/target-ide/ diff --git a/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang b/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang index 58e379251..a5947c4a4 100644 --- a/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang +++ b/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang @@ -9,15 +9,15 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * ============LICENSE_END========================================================= */ @@ -112,7 +112,7 @@ module appc-provider-lcm { enum "ConfigExport"; enum "StopApplication"; enum "StartApplication"; - enum "QuiesceTraffic"; + enum "QuiesceTraffic"; enum "ResumeTraffic"; enum "UpgradePreCheck"; enum "UpgradeSoftware"; @@ -471,7 +471,7 @@ module appc-provider-lcm { } } } - /********************************************************************************** + /********************************************************************************** * Define the VNF quiesce traffic service **********************************************************************************/ rpc quiesce-traffic { @@ -508,7 +508,11 @@ module appc-provider-lcm { mandatory true; } uses action-identifiers; - } + leaf payload { + type payload; + mandatory true; + } + } output { uses common-header; uses status;