2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (C) 2018 IBM.
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.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.adapters.requestsdb;
25 import java.sql.Timestamp;
26 import javax.jws.WebService;
27 import javax.transaction.Transactional;
28 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
29 import org.onap.so.db.request.beans.InfraActiveRequests;
30 import org.onap.so.db.request.beans.OperationStatus;
31 import org.onap.so.db.request.beans.ResourceOperationStatus;
32 import org.onap.so.db.request.beans.ResourceOperationStatusId;
33 import org.onap.so.db.request.beans.SiteStatus;
34 import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
35 import org.onap.so.db.request.data.repository.OperationStatusRepository;
36 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
37 import org.onap.so.db.request.data.repository.SiteStatusRepository;
38 import org.onap.so.logger.MsoLogger;
39 import org.onap.so.requestsdb.RequestsDbConstant;
40 import org.onap.so.utils.UUIDChecker;
41 import org.springframework.beans.factory.annotation.Autowired;
42 import org.springframework.context.annotation.Primary;
43 import org.springframework.stereotype.Component;
45 @WebService(serviceName = "RequestsDbAdapter", endpointInterface = "org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter", targetNamespace = "http://org.onap.so/requestsdb")
48 public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
50 private static MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA, MsoRequestsDbAdapterImpl.class);
53 private InfraActiveRequestsRepository infraActive;
56 private SiteStatusRepository siteRepo;
59 private OperationStatusRepository operationStatusRepository;
62 private ResourceOperationStatusRepository resourceOperationStatusRepository;
66 public void updateInfraRequest(String requestId, String lastModifiedBy, String statusMessage, String responseBody,
67 RequestStatusType requestStatus, String progress, String vnfOutputs, String serviceInstanceId,
68 String networkId, String vnfId, String vfModuleId, String volumeGroupId, String serviceInstanceName,
69 String configurationId, String configurationName, String vfModuleName) throws MsoRequestsDbException {
71 InfraActiveRequests request = infraActive.findOneByRequestIdOrClientRequestId(requestId, requestId);
72 if (request == null) {
73 String error = "Entity not found. Unable to retrieve MSO Infra Requests DB for Request ID " + requestId;
74 throw new MsoRequestsDbException(error);
76 if (statusMessage != null) {
77 request.setStatusMessage(statusMessage);
79 if (responseBody != null) {
80 request.setResponseBody(responseBody);
82 if (requestStatus != null) {
83 request.setRequestStatus(requestStatus.toString());
85 if (progress != null) {
86 setProgress(progress, request);
88 if (vnfOutputs != null) {
89 request.setVnfOutputs(vnfOutputs);
91 if (serviceInstanceId != null) {
92 request.setServiceInstanceId(serviceInstanceId);
94 if (networkId != null) {
95 request.setNetworkId(networkId);
98 request.setVnfId(vnfId);
100 if (vfModuleId != null) {
101 request.setVfModuleId(vfModuleId);
103 if (volumeGroupId != null) {
104 request.setVolumeGroupId(volumeGroupId);
106 if (serviceInstanceName != null) {
107 request.setServiceInstanceName(serviceInstanceName);
109 if (vfModuleName != null) {
110 request.setVfModuleName(vfModuleName);
112 if (configurationId != null) {
113 request.setConfigurationId(configurationId);
115 if (configurationName != null) {
116 request.setConfigurationName(configurationName);
118 if (requestStatus == RequestStatusType.COMPLETE || requestStatus == RequestStatusType.FAILED) {
119 Timestamp nowTimeStamp = new Timestamp(System.currentTimeMillis());
120 request.setEndTime(nowTimeStamp);
122 request.setLastModifiedBy(lastModifiedBy);
123 infraActive.save(request);
124 } catch (Exception e) {
125 String error = "Error retrieving MSO Infra Requests DB for Request ID " + requestId;
126 logger.error(error, e);
127 throw new MsoRequestsDbException(error, MsoLogger.ErrorCode.BusinessProcesssError, e);
131 private void setProgress(String progress, InfraActiveRequests request) {
133 request.setProgress(Long.parseLong(progress));
134 } catch (NumberFormatException e) {
135 logger.warnSimple("UpdateInfraRequest", "Invalid value sent for progress");
141 public InfraActiveRequests getInfraRequest(String requestId) throws MsoRequestsDbException {
142 logger.debug("Call to MSO Infra RequestsDb adapter get method with request Id: " + requestId);
143 InfraActiveRequests request = null;
145 request = infraActive.findOneByRequestIdOrClientRequestId(requestId, requestId);
146 if (request == null) {
147 String error = "Entity not found. Unable to retrieve MSO Infra Requests DB for Request ID " + requestId;
148 throw new MsoRequestsDbException(error);
150 } catch (Exception e) {
151 String error = "Error retrieving MSO Infra Requests DB for Request ID " + requestId;
152 logger.error(error,e);
153 throw new MsoRequestsDbException(error,MsoLogger.ErrorCode.BusinessProcesssError , e);
159 * Get SiteStatus by SiteName.
162 * The unique name of the site
163 * @return Status of that site
167 public boolean getSiteStatus(String siteName) {
168 UUIDChecker.generateUUID(logger);
169 SiteStatus siteStatus;
170 logger.debug("Request database - get Site Status with Site name:" + siteName);
171 siteStatus = siteRepo.findOneBySiteName(siteName);
172 if (siteStatus == null) {
173 // if not exist in DB, it means the site is not disabled, thus
177 return siteStatus.getStatus();
182 * update operation status <br>
186 * @param operationType
189 * @param operationContent
192 * @throws MsoRequestsDbException
193 * @since ONAP Amsterdam Release
197 public void updateServiceOperationStatus(String serviceId, String operationId, String operationType, String userId,
198 String result, String operationContent, String progress, String reason) throws MsoRequestsDbException {
199 OperationStatus operStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
200 if (operStatus == null) {
201 String error = "Entity not found. Unable to retrieve OperationStatus Object ServiceId: " + serviceId + " operationId: "
204 // throw new MsoRequestsDbException(error,MsoLogger.ErrorCode.BusinessProcesssError);
205 operStatus = new OperationStatus();
206 operStatus.setOperationId(operationId);
207 operStatus.setServiceId(serviceId);
210 operStatus.setUserId(userId);
211 operStatus.setOperation(operationType);
212 operStatus.setReason(reason);
213 operStatus.setProgress(progress);
214 operStatus.setResult(result);
215 operStatus.setOperationContent(operationContent);
216 operStatus.setResult(result);
217 operationStatusRepository.save(operStatus);
221 * Init operation status <br>
225 * @param operationType
228 * @param operationContent
231 * @throws MsoRequestsDbException
232 * @since ONAP Casablanca Release
236 public void initServiceOperationStatus(String serviceId, String operationId, String operationType, String userId,
237 String result, String operationContent, String progress, String reason) throws MsoRequestsDbException {
238 OperationStatus operStatus = new OperationStatus();
240 operStatus.setOperationId(operationId);
241 operStatus.setServiceId(serviceId);
242 operStatus.setUserId(userId);
243 operStatus.setOperation(operationType);
244 operStatus.setReason(reason);
245 operStatus.setProgress(progress);
246 operStatus.setResult(result);
247 operStatus.setOperationContent(operationContent);
248 operStatus.setResult(result);
249 operationStatusRepository.save(operStatus);
253 * init the operation status of all the resources <br>
259 * @param operationType
261 * @param resourceTemplateUUIDs
262 * the resources, the UUID is split by ":"
263 * @throws MsoRequestsDbException
264 * @since ONAP Amsterdam Release
268 public void initResourceOperationStatus(String serviceId, String operationId, String operationType,
269 String resourceTemplateUUIDs) throws MsoRequestsDbException {
270 String[] resourceLst = resourceTemplateUUIDs.split(":");
271 for (String resource : resourceLst) {
272 if ("".equals(resource)) {
275 ResourceOperationStatus resourceStatus = new ResourceOperationStatus();
276 resourceStatus.setOperationId(operationId);
277 resourceStatus.setServiceId(serviceId);
278 resourceStatus.setResourceTemplateUUID(resource);
279 resourceStatus.setOperType(operationType);
280 resourceStatus.setStatus(RequestsDbConstant.Status.PROCESSING);
281 resourceStatus.setStatusDescription("Waiting for start");
282 resourceOperationStatusRepository.save(resourceStatus);
288 * get resource operation status <br>
292 * @param resourceTemplateUUID
294 * @throws MsoRequestsDbException
295 * @since ONAP Amsterdam Release
298 public ResourceOperationStatus getResourceOperationStatus(String serviceId, String operationId,
299 String resourceTemplateUUID) throws MsoRequestsDbException {
301 return resourceOperationStatusRepository
302 .findOne(new ResourceOperationStatusId(serviceId, operationId, resourceTemplateUUID));
306 * update resource operation status <br>
310 * @param resourceTemplateUUID
311 * @param operationType
312 * @param resourceInstanceID
317 * @param statusDescription
318 * @throws MsoRequestsDbException
319 * @since ONAP Amsterdam Release
322 public void updateResourceOperationStatus(String serviceId, String operationId, String resourceTemplateUUID,
323 String operationType, String resourceInstanceID, String jobId, String status, String progress,
324 String errorCode, String statusDescription) throws MsoRequestsDbException {
325 ResourceOperationStatus resStatus = new ResourceOperationStatus();
326 resStatus.setServiceId(serviceId);
327 resStatus.setOperationId(operationId);
328 resStatus.setResourceTemplateUUID(resourceTemplateUUID);
329 resStatus.setOperType(operationType);
330 resStatus.setResourceInstanceID(resourceInstanceID);
331 resStatus.setJobId(jobId);
332 resStatus.setStatus(status);
333 resStatus.setProgress(progress);
334 resStatus.setErrorCode(errorCode);
335 resStatus.setStatusDescription(statusDescription);
336 resourceOperationStatusRepository.save(resStatus);