2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.provider.lcm.service;
27 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action;
28 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradePreCheckInput;
29 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradePreCheckOutputBuilder;
30 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeSoftwareInput;
31 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeSoftwareOutputBuilder;
32 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradePostCheckInput;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradePostCheckOutputBuilder;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeBackupInput;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeBackupOutputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeBackoutInput;
37 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.UpgradeBackoutOutputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Payload;
39 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.action.identifiers.ActionIdentifiers;
40 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
41 import org.onap.appc.executor.objects.LCMCommandStatus;
42 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
43 import org.onap.appc.util.JsonUtil;
45 import java.io.IOException;
49 * Provide LCM command service for attach/detach a cinder to a VM
51 public class UpgradeService extends AbstractBaseService {
56 public UpgradeService(String upgrade) {
59 rpcName = getRpcName(Action.UpgradePreCheck);
60 expectedAction = Action.UpgradePreCheck;
63 rpcName = getRpcName(Action.UpgradePostCheck);
64 expectedAction = Action.UpgradePostCheck;
67 rpcName = getRpcName(Action.UpgradeSoftware);
68 expectedAction = Action.UpgradeSoftware;
71 rpcName = getRpcName(Action.UpgradeBackup);
72 expectedAction = Action.UpgradeBackup;
74 case "upgradeBackout":
75 rpcName = getRpcName(Action.UpgradeBackout);
76 expectedAction = Action.UpgradeBackout;
79 logger.debug("UpgradeService starts ", upgrade);
82 public UpgradePreCheckOutputBuilder upgradePreCheck(UpgradePreCheckInput input) {
83 CommonHeader commonHeader = input.getCommonHeader();
84 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
85 Payload payload = input.getPayload();
87 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
89 proceedAction(commonHeader, actionIdentifiers, payload);
92 UpgradePreCheckOutputBuilder outputBuilder = new UpgradePreCheckOutputBuilder();
93 outputBuilder.setStatus(status);
94 outputBuilder.setCommonHeader(input.getCommonHeader());
99 public UpgradeSoftwareOutputBuilder upgradeSoftware(UpgradeSoftwareInput input) {
100 CommonHeader commonHeader = input.getCommonHeader();
101 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
102 Payload payload = input.getPayload();
104 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
105 if (status == null) {
106 proceedAction(commonHeader, actionIdentifiers, payload);
109 UpgradeSoftwareOutputBuilder outputBuilder = new UpgradeSoftwareOutputBuilder();
110 outputBuilder.setStatus(status);
111 outputBuilder.setCommonHeader(input.getCommonHeader());
112 return outputBuilder;
114 public UpgradePostCheckOutputBuilder upgradePostCheck(UpgradePostCheckInput input) {
115 CommonHeader commonHeader = input.getCommonHeader();
116 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
117 Payload payload = input.getPayload();
119 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
120 if (status == null) {
121 proceedAction(commonHeader, actionIdentifiers, payload);
124 UpgradePostCheckOutputBuilder outputBuilder = new UpgradePostCheckOutputBuilder();
125 outputBuilder.setStatus(status);
126 outputBuilder.setCommonHeader(input.getCommonHeader());
127 return outputBuilder;
130 public UpgradeBackupOutputBuilder upgradeBackup(UpgradeBackupInput input) {
131 CommonHeader commonHeader = input.getCommonHeader();
132 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
133 Payload payload = input.getPayload();
135 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
136 if (status == null) {
137 proceedAction(commonHeader, actionIdentifiers, payload);
140 UpgradeBackupOutputBuilder outputBuilder = new UpgradeBackupOutputBuilder();
141 outputBuilder.setStatus(status);
142 outputBuilder.setCommonHeader(input.getCommonHeader());
143 return outputBuilder;
145 public UpgradeBackoutOutputBuilder upgradeBackout(UpgradeBackoutInput input) {
146 CommonHeader commonHeader = input.getCommonHeader();
147 ActionIdentifiers actionIdentifiers = input.getActionIdentifiers();
148 Payload payload = input.getPayload();
150 validate(commonHeader, input.getAction(), actionIdentifiers, payload);
151 if (status == null) {
152 proceedAction(commonHeader, actionIdentifiers, payload);
155 UpgradeBackoutOutputBuilder outputBuilder = new UpgradeBackoutOutputBuilder();
156 outputBuilder.setStatus(status);
157 outputBuilder.setCommonHeader(input.getCommonHeader());
158 return outputBuilder;
160 void validate(CommonHeader commonHeader,
162 ActionIdentifiers actionIdentifiers,
164 status = validateVnfId(commonHeader, action, actionIdentifiers);
165 if (status != null) {
170 String keyName = "payload";
171 if (payload == null) {
172 status = buildStatusForParamName(LCMCommandStatus.MISSING_MANDATORY_PARAMETER, keyName);
175 String payloadString = payload.getValue();
176 status = validateMustHaveParamValue(
177 payloadString == null ? payloadString : payloadString.trim(), "payload");
178 if (status != null) {
183 Map<String, String> payloadMap = JsonUtil.convertJsonStringToFlatMap(payloadString);
184 validateMustHaveParamValue(payloadMap.get(keyName), keyName);
185 } catch (IOException e) {
186 logger.error(String.format("UpgradeService (%s) got IOException when converting payload", rpcName), e);
187 status = buildStatusForErrorMsg(LCMCommandStatus.UNEXPECTED_ERROR, e.getMessage());
191 void proceedAction(CommonHeader commonHeader,
192 ActionIdentifiers actionIdentifiers,
194 RequestHandlerInput requestHandlerInput =
195 getRequestHandlerInput(commonHeader, actionIdentifiers, payload, this.getClass().getName());
196 if (requestHandlerInput != null) {
197 executeAction(requestHandlerInput);