2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
20 * ============LICENSE_END=========================================================
\r
23 package org.onap.appc.provider.lcm.service;
\r
25 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action;
\r
26 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ProvisioningInput;
\r
27 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ProvisioningOutput;
\r
28 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.ProvisioningOutputBuilder;
\r
29 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Payload;
\r
30 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.action.identifiers.ActionIdentifiers;
\r
31 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
\r
32 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
\r
33 import org.onap.appc.executor.objects.LCMCommandStatus;
\r
34 import org.onap.appc.util.JsonUtil;
\r
36 import java.io.IOException;
\r
37 import java.util.Map;
\r
39 * Provide LCM command service for Provisioning VNF Service
\r
41 public class ProvisioningService extends AbstractBaseService {
\r
46 public ProvisioningService() {
\r
47 super(Action.Provisioning);
\r
48 logger.debug("ProvisioningService starts");
\r
52 * Process the Provisioning request
\r
53 * @param input of ProvisioningInput from the REST API input
\r
54 * @return ProvisioningOutputBuilder which has the process results
\r
56 public ProvisioningOutputBuilder process(ProvisioningInput input) {
\r
57 CommonHeader commonHeader = input.getCommonHeader();
\r
58 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
\r
59 Payload payload = input.getPayload();
\r
61 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
\r
62 if (status == null) {
\r
63 proceedAction(commonHeader,actionIdentifiers,payload);
\r
66 ProvisioningOutputBuilder outputBuilder = new ProvisioningOutputBuilder();
\r
67 outputBuilder.setStatus(status);
\r
68 outputBuilder.setCommonHeader(input.getCommonHeader());
\r
69 return outputBuilder;
\r
73 * Validate the input.
\r
74 * Set Status if any error occurs.
\r
76 * @param input of ProvisioningInput from the REST API input
\r
78 void validate(CommonHeader commonHeader,
\r
80 ActionIdentifiers actionIdentifiers,
\r
82 status = validateVnfId(commonHeader, action, actionIdentifiers);
\r
83 if (status != null) {
\r
88 String keyName = "payload";
\r
89 if (payload == null) {
\r
90 status = buildStatusForParamName(LCMCommandStatus.MISSING_MANDATORY_PARAMETER, keyName);
\r
93 String payloadString = payload.getValue();
\r
94 status = validateMustHaveParamValue(payloadString == null ? payloadString : payloadString.trim(), "payload");
\r
95 if (status != null) {
\r
100 Map<String, String> payloadMap = JsonUtil.convertJsonStringToFlatMap(payloadString);
\r
101 validateMustHaveParamValue(payloadMap.get(keyName), keyName);
\r
102 } catch (IOException e) {
\r
103 logger.error(String.format("ProvisioningService (%s) got IOException when converting payload", rpcName), e);
\r
104 status = buildStatusForErrorMsg(LCMCommandStatus.UNEXPECTED_ERROR, e.getMessage());
\r
109 * Proceed to action for the Provisioning VNF action.
\r
111 * @param input of ProvisioningInput from the REST API input
\r
113 void proceedAction(CommonHeader commonHeader,
\r
114 ActionIdentifiers actionIdentifiers,
\r
116 RequestHandlerInput requestHandlerInput = getRequestHandlerInput(commonHeader, actionIdentifiers, payload,
\r
117 this.getClass().getName());
\r
118 if (requestHandlerInput != null) {
\r
119 executeAction(requestHandlerInput);
\r