/target-ide/
/bin/
/.settings/
-**/yang-gen-config/
\ No newline at end of file
+**/yang-gen-config/
+/target-ide/
* 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=========================================================
*/
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
*/
/**
* 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();
*
* @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);
}
@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
@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());
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());
+
}
}
/target/
+/target-ide/
/bin/
/.settings/
-/target-ide/
\ No newline at end of file
+/target-ide/
/target/
/target-ide/
/bin/
-/.settings/
\ No newline at end of file
+/.settings/
+/target-ide/
* 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=========================================================
*/
enum "ConfigExport";
enum "StopApplication";
enum "StartApplication";
- enum "QuiesceTraffic";
+ enum "QuiesceTraffic";
enum "ResumeTraffic";
enum "UpgradePreCheck";
enum "UpgradeSoftware";
}
}
}
- /**********************************************************************************
+ /**********************************************************************************
* Define the VNF quiesce traffic service
**********************************************************************************/
rpc quiesce-traffic {
mandatory true;
}
uses action-identifiers;
- }
+ leaf payload {
+ type payload;
+ mandatory true;
+ }
+ }
output {
uses common-header;
uses status;