summaryrefslogtreecommitdiffstats
path: root/appc-provider
diff options
context:
space:
mode:
authorvidhyasree <sn141y@att.com>2018-01-12 15:23:34 -0500
committerPatrick Brady <pb071s@att.com>2018-01-17 16:15:52 -0500
commitac97522c6eca08a4dd9c4b2486e07b89fb5d9d99 (patch)
tree547d97d7d1c38a21f64a2beba57db25c639a6ead /appc-provider
parenteb27ca3e1b3e067e4798a115cb0f30b98f55fea0 (diff)
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 <sn141y@att.com> Change-Id: I9a3ca163bbd520e599416d03edc921a6cafb3059
Diffstat (limited to 'appc-provider')
-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;