2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 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
18 * ============LICENSE_END=========================================================
\r
21 package org.openecomp.mso.client.adapter.requests.db;
\r
23 import java.sql.Timestamp;
\r
25 import org.hibernate.HibernateException;
\r
26 import org.hibernate.Query;
\r
27 import org.hibernate.Session;
\r
28 import org.openecomp.mso.client.adapter.requests.db.entities.MsoRequestsDbException;
\r
29 import org.openecomp.mso.client.adapter.requests.db.entities.RequestStatusType;
\r
30 import org.openecomp.mso.client.adapter.requests.db.entities.UpdateInfraRequest;
\r
31 import org.openecomp.mso.db.AbstractSessionFactoryManager;
\r
32 import org.openecomp.mso.logger.MessageEnum;
\r
33 import org.openecomp.mso.logger.MsoLogger;
\r
34 import org.openecomp.mso.requestsdb.InfraActiveRequests;
\r
35 import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
\r
36 import org.openecomp.mso.requestsdb.SiteStatus;
\r
37 import org.openecomp.mso.utils.UUIDChecker;
\r
39 public class MsoRequestsDbAdapterClient implements MsoRequestsDbAdapter {
\r
41 protected AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
\r
43 private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
\r
46 public void updateInfraRequest(UpdateInfraRequest request) throws MsoRequestsDbException {
\r
47 Session session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
\r
49 long startTime = System.currentTimeMillis();
\r
50 if (request.getRequestId() != null && request.getLastModifiedBy() != null) {
\r
51 MsoLogger.setLogContext(request.getRequestId(), null);
\r
53 session.beginTransaction();
\r
54 StringBuilder queryString = new StringBuilder("update InfraActiveRequests set ");
\r
55 String statusMessage = null;
\r
56 String responseBody = null;
\r
57 RequestStatusType requestStatus = null;
\r
58 String progress = null;
\r
59 String vnfOutputs = null;
\r
60 String serviceInstanceId = null;
\r
61 String networkId = null;
\r
62 String vnfId = null;
\r
63 String vfModuleId = null;
\r
64 String volumeGroupId = null;
\r
65 String serviceInstanceName = null;
\r
66 String vfModuleName = null;
\r
67 String configurationId = null;
\r
68 String configurationName = null;
\r
69 if (request.getStatusMessage() != null) {
\r
70 queryString.append("statusMessage = :statusMessage, ");
\r
71 statusMessage = request.getStatusMessage();
\r
73 if (request.getResponseBody() != null) {
\r
74 queryString.append("responseBody = :responseBody, ");
\r
75 responseBody = request.getResponseBody();
\r
77 if (request.getRequestStatus() != null) {
\r
78 queryString.append("requestStatus = :requestStatus, ");
\r
79 requestStatus = request.getRequestStatus();
\r
81 if (request.getProgress() != null) {
\r
82 queryString.append("progress = :progress, ");
\r
83 progress = request.getProgress();
\r
85 if (request.getVnfOutputs() != null) {
\r
86 queryString.append("vnfOutputs = :vnfOutputs, ");
\r
87 vnfOutputs = request.getVnfOutputs();
\r
89 if (request.getServiceInstanceId() != null) {
\r
90 queryString.append("serviceInstanceId = :serviceInstanceId, ");
\r
91 serviceInstanceId = request.getServiceInstanceId();
\r
93 if (request.getNetworkId() != null) {
\r
94 queryString.append("networkId = :networkId, ");
\r
95 networkId = request.getNetworkId();
\r
97 if (request.getVnfId() != null) {
\r
98 queryString.append("vnfId = :vnfId, ");
\r
99 vnfId = request.getVnfId();
\r
101 if (request.getVfModuleId() != null) {
\r
102 queryString.append("vfModuleId = :vfModuleId, ");
\r
103 vfModuleId = request.getVfModuleId();
\r
105 if (request.getVolumeGroupId() != null) {
\r
106 queryString.append("volumeGroupId = :volumeGroupId, ");
\r
107 volumeGroupId = request.getVolumeGroupId();
\r
109 if (request.getServiceInstanceName() != null) {
\r
110 queryString.append("serviceInstanceName = :serviceInstanceName, ");
\r
111 serviceInstanceName = request.getServiceInstanceName();
\r
113 if (request.getVfModuleName() != null) {
\r
114 queryString.append("vfModuleName = :vfModuleName, ");
\r
115 vfModuleName = request.getVfModuleName();
\r
117 if (request.getConfigurationId() != null) {
\r
118 queryString.append("configurationId = :configurationId, ");
\r
119 configurationId = request.getConfigurationId();
\r
121 if (request.getConfigurationName() != null) {
\r
122 queryString.append("configurationName = :configurationName, ");
\r
123 configurationName = request.getConfigurationName();
\r
125 if (request.getRequestStatus() == RequestStatusType.COMPLETE
\r
126 || request.getRequestStatus() == RequestStatusType.FAILED) {
\r
127 queryString.append("endTime = :endTime, ");
\r
129 queryString.append("modifyTime = :modifyTime, ");
\r
131 queryString.append("lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId");
\r
133 LOGGER.debug("Executing update: " + queryString.toString());
\r
135 Query query = session.createQuery(queryString.toString());
\r
136 query.setParameter("requestId", request.getRequestId());
\r
137 if (statusMessage != null) {
\r
138 query.setParameter("statusMessage", statusMessage);
\r
139 LOGGER.debug("StatusMessage in updateInfraRequest is set to: " + statusMessage);
\r
141 if (responseBody != null) {
\r
142 query.setParameter("responseBody", responseBody);
\r
143 LOGGER.debug("ResponseBody in updateInfraRequest is set to: " + responseBody);
\r
145 if (requestStatus != null) {
\r
146 query.setParameter("requestStatus", requestStatus.toString());
\r
147 LOGGER.debug("RequestStatus in updateInfraRequest is set to: " + requestStatus.toString());
\r
150 if (progress != null) {
\r
151 query.setParameter("progress", Long.parseLong(progress));
\r
152 LOGGER.debug("Progress in updateInfraRequest is set to: " + progress);
\r
154 if (vnfOutputs != null) {
\r
155 query.setParameter("vnfOutputs", vnfOutputs);
\r
156 LOGGER.debug("VnfOutputs in updateInfraRequest is set to: " + vnfOutputs);
\r
158 if (serviceInstanceId != null) {
\r
159 query.setParameter("serviceInstanceId", serviceInstanceId);
\r
160 LOGGER.debug("ServiceInstanceId in updateInfraRequest is set to: " + serviceInstanceId);
\r
162 if (networkId != null) {
\r
163 query.setParameter("networkId", networkId);
\r
164 LOGGER.debug("NetworkId in updateInfraRequest is set to: " + networkId);
\r
166 if (vnfId != null) {
\r
167 query.setParameter("vnfId", vnfId);
\r
168 LOGGER.debug("VnfId in updateInfraRequest is set to: " + vnfId);
\r
170 if (vfModuleId != null) {
\r
171 query.setParameter("vfModuleId", vfModuleId);
\r
172 LOGGER.debug("vfModuleId in updateInfraRequest is set to: " + vfModuleId);
\r
174 if (volumeGroupId != null) {
\r
175 query.setParameter("volumeGroupId", volumeGroupId);
\r
176 LOGGER.debug("VolumeGroupId in updateInfraRequest is set to: " + volumeGroupId);
\r
178 if (serviceInstanceName != null) {
\r
179 query.setParameter("serviceInstanceName", serviceInstanceName);
\r
180 LOGGER.debug("ServiceInstanceName in updateInfraRequest is set to: " + serviceInstanceName);
\r
182 if (configurationId != null) {
\r
183 query.setParameter("configurationId", configurationId);
\r
184 LOGGER.debug("configurationId in updateInfraRequest is set to: " + configurationId);
\r
186 if (configurationName != null) {
\r
187 query.setParameter("configurationName", configurationName);
\r
188 LOGGER.debug("configurationName in updateInfraRequest is set to: " + configurationName);
\r
190 if (vfModuleName != null) {
\r
191 query.setParameter("vfModuleName", vfModuleName);
\r
192 LOGGER.debug("vfModuleName in updateInfraRequest is set to: " + vfModuleName);
\r
194 Timestamp nowTimeStamp = new Timestamp(System.currentTimeMillis());
\r
195 if (request.getRequestStatus() == RequestStatusType.COMPLETE
\r
196 || request.getRequestStatus() == RequestStatusType.FAILED) {
\r
197 query.setParameter("endTime", nowTimeStamp);
\r
198 LOGGER.debug("EndTime in updateInfraRequest is set to: " + nowTimeStamp);
\r
200 query.setParameter("modifyTime", nowTimeStamp);
\r
201 LOGGER.debug("ModifyTime in updateInfraRequest is set to: " + nowTimeStamp);
\r
203 query.setParameter("lastModifiedBy", request.getLastModifiedBy());
\r
204 LOGGER.debug("LastModifiedBy in updateInfraRequest is set to: " + request.getLastModifiedBy());
\r
205 result = query.executeUpdate();
\r
206 checkIfExists(result, request.getRequestId(), startTime);
\r
207 session.getTransaction().commit();
\r
208 } catch (HibernateException e) {
\r
209 String error = "Unable to update MSO Requests DB: " + e.getMessage();
\r
210 LOGGER.error(MessageEnum.RA_CANT_UPDATE_REQUEST, "infra request parameters", request.getRequestId(), "",
\r
211 "", MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
\r
212 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
\r
214 throw new MsoRequestsDbException(error, e);
\r
216 if (session != null && session.isOpen()) {
\r
220 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
\r
222 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.BadRequest,
\r
223 "Required fields: requestId and lastModifiedBy");
\r
227 private void checkIfExists(int result, String requestId, long startTime) throws MsoRequestsDbException {
\r
229 String error = "Request ID does not exist in MSO Requests DB: " + requestId;
\r
230 LOGGER.error(MessageEnum.RA_DB_REQUEST_NOT_EXIST, requestId, "", "", MsoLogger.ErrorCode.DataError, error);
\r
231 throw new MsoRequestsDbException(error);
\r
236 public InfraActiveRequests getInfraRequest(String requestId) throws MsoRequestsDbException {
\r
237 long startTime = System.currentTimeMillis();
\r
238 MsoLogger.setLogContext(requestId, null);
\r
239 Session session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
\r
241 LOGGER.debug("Call to MSO Infra RequestsDb adapter get method with request Id: " + requestId);
\r
243 InfraActiveRequests request = null;
\r
245 session.beginTransaction();
\r
246 Query query = session.createQuery(
\r
247 "FROM InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
\r
248 query.setParameter("requestId", requestId);
\r
249 request = (InfraActiveRequests) query.uniqueResult();
\r
250 } catch (HibernateException e) {
\r
251 String error = "Unable to retrieve MSO Infra Requests DB for Request ID " + requestId;
\r
252 LOGGER.error(MessageEnum.RA_DB_REQUEST_NOT_EXIST, "Get Infra request", requestId, "", "",
\r
253 MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
\r
254 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, error);
\r
255 throw new MsoRequestsDbException(error, e);
\r
257 if (session != null && session.isOpen()) {
\r
261 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
\r
266 * Get SiteStatus by SiteName.
\r
269 * The unique name of the site
\r
270 * @return Status of that site
\r
272 public boolean getSiteStatus(String siteName) {
\r
273 UUIDChecker.generateUUID(LOGGER);
\r
274 Session session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
\r
276 long startTime = System.currentTimeMillis();
\r
277 SiteStatus siteStatus = null;
\r
278 LOGGER.debug("Request database - get Site Status with Site name:" + siteName);
\r
280 String hql = "FROM SiteStatus WHERE siteName = :site_name";
\r
281 Query query = session.createQuery(hql);
\r
282 query.setParameter("site_name", siteName);
\r
284 siteStatus = (SiteStatus) query.uniqueResult();
\r
286 if (session != null && session.isOpen()) {
\r
290 if (siteStatus == null) {
\r
291 // if not exist in DB, it means the site is not disabled, thus
\r
293 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
\r
296 LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
\r
297 return siteStatus.getStatus();
\r