summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--appc-provider/appc-provider-bundle/.gitignore3
-rw-r--r--appc-provider/appc-provider-bundle/src/main/java/org/onap/appc/provider/lcm/service/ResumeTrafficService.java56
-rw-r--r--appc-provider/appc-provider-bundle/src/test/java/org/onap/appc/provider/lcm/service/ResumeTrafficServiceTest.java34
-rw-r--r--appc-provider/appc-provider-features/.gitignore3
-rw-r--r--appc-provider/appc-provider-model/.gitignore3
-rw-r--r--appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang16
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;