diff options
Diffstat (limited to 'appc-provider')
6 files changed, 83 insertions, 32 deletions
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<String, String> 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; |