2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.mso.requestsdb;
23 import java.sql.Timestamp;
24 import java.util.ArrayList;
25 import java.util.List;
27 import org.hibernate.Query;
28 import org.hibernate.Session;
29 import org.openecomp.mso.db.AbstractSessionFactoryManager;
30 import org.openecomp.mso.logger.MessageEnum;
31 import org.openecomp.mso.logger.MsoLogger;
33 public class OperationalEnvServiceModelStatusDb {
35 protected final AbstractSessionFactoryManager sessionFactoryRequestDB;
37 protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
40 protected static final String REQUEST_ID = "requestId";
41 protected static final String OPERATIONAL_ENV_ID = "operationalEnvId";
42 protected static final String SERVICE_MODEL_VERSION_ID = "serviceModelVersionId";
43 protected static final String SERVICE_MOD_VER_DISTR_STATUS = "serviceModelVersionDistrStatus";
44 protected static final String RECOVERY_ACTION = "recoveryAction";
45 protected static final int RETRY_COUNT_LEFT = 0;
46 protected static final String CREATE_TIME = "startTime";
47 protected static final String MODIFY_TIME = "modifyTime";
50 public static OperationalEnvServiceModelStatusDb getInstance() {
51 return new OperationalEnvServiceModelStatusDb(new RequestsDbSessionFactoryManager ());
54 protected OperationalEnvServiceModelStatusDb (AbstractSessionFactoryManager sessionFactoryRequest) {
55 sessionFactoryRequestDB = sessionFactoryRequest;
60 * Retrieve OperationalEnvServiceModelStatus from given OperationalEnvironmentId and serviceModelVersionId
61 * @param operationalEnvId
62 * @param serviceModelVersionId
65 public OperationalEnvServiceModelStatus getOperationalEnvServiceModelStatus(String operationalEnvId, String serviceModelVersionId) {
66 long startTime = System.currentTimeMillis ();
67 msoLogger.debug ("Retrieve OperationalEnvironmentServiceModel with operationalEnvironmentId: " + operationalEnvId + ", serviceModelVersionId: " + serviceModelVersionId);
69 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
70 OperationalEnvServiceModelStatus request = null;
72 session.beginTransaction ();
73 Query query = session.createQuery ("FROM OperationalEnvServiceModelStatus WHERE operationalEnvId = :operationalEnvId AND serviceModelVersionId = :serviceModelVersionId");
74 query.setParameter ("operationalEnvId", operationalEnvId);
75 query.setParameter ("serviceModelVersionId", serviceModelVersionId);
76 request = (OperationalEnvServiceModelStatus) query.uniqueResult ();
78 if (session != null && session.isOpen ()) {
81 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
82 "Successfully", "OperationalEnvServiceModelStatus", "getOperationalEnvServiceModelStatus", null);
89 * Retrieve OperationalEnvServiceModelStatus from given OperationalEnvironmentId and serviceModelVersionId
90 * @param operationalEnvId
91 * @param serviceModelVersionId
94 @SuppressWarnings("unchecked")
95 public List<OperationalEnvServiceModelStatus> getOperationalEnvIdStatus(String operationalEnvId, String requestId) {
96 long startTime = System.currentTimeMillis ();
97 msoLogger.debug ("Retrieve OperationalEnvironmentServiceModel with operationalEnvironmentId: " + operationalEnvId + ", requestId: " + requestId);
99 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
100 List<OperationalEnvServiceModelStatus> requests = new ArrayList<OperationalEnvServiceModelStatus>();
103 session.beginTransaction ();
104 Query query = session.createQuery ("FROM OperationalEnvServiceModelStatus WHERE operationalEnvId = :operationalEnvId AND requestId = :requestId");
105 query.setParameter ("operationalEnvId", operationalEnvId);
106 query.setParameter ("requestId", requestId);
107 requests = query.list();
109 if (session != null && session.isOpen ()) {
112 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
113 "Successfully", "OperationalEnvServiceModelStatus", "getOperationalEnvIdStatus", null);
120 * Update OperationalEnvServiceModelStatus serviceModelVersionDistrStatus with asdcStatus and retryCount for given operationalEnvId, serviceModelVersionId
121 * @param operationalEnvId
122 * @param serviceModelVersionId
126 public int updateOperationalEnvRetryCountStatus(String operationalEnvId, String serviceModelVersionId, String asdcStatus, int retryCount) {
127 long startTime = System.currentTimeMillis ();
128 msoLogger.debug ("Update OperationalEnvServiceModelStatus retryCount: " + retryCount + " and serviceModelVersionDistrStatus :" + asdcStatus);
130 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
133 session.beginTransaction ();
134 Query query = session.createQuery ("update OperationalEnvServiceModelStatus set serviceModelVersionDistrStatus = :serviceModelVersionDistrStatus, retryCount = :retryCount, modifyTime = :modifyTime where "
135 + "operationalEnvId = :operationalEnvId and serviceModelVersionId = :serviceModelVersionId ");
136 query.setParameter ("retryCount", retryCount);
137 query.setParameter (SERVICE_MOD_VER_DISTR_STATUS, asdcStatus);
138 query.setParameter ("operationalEnvId", operationalEnvId);
139 query.setParameter ("serviceModelVersionId", serviceModelVersionId);
140 Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
141 query.setParameter ("modifyTime", modifyTimeStamp);
142 result = query.executeUpdate ();
143 session.getTransaction ().commit ();
145 if (session != null && session.isOpen ()) {
148 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelDB", "updateOperationalEnvRetryCountStatus", null);
154 * Update OperationalEnvServiceModelStatus serviceModelVersionDistrStatus with asdcStatus and retryCount for given operationalEnvId, serviceModelVersionId, requestId
155 * @param operationalEnvId
156 * @param serviceModelVersionId
161 public int updateOperationalEnvRetryCountStatusPerReqId(String operationalEnvId, String serviceModelVersionId, String asdcStatus, int retryCount, String requestId) {
162 long startTime = System.currentTimeMillis ();
163 msoLogger.debug ("Update OperationalEnvServiceModelStatus retryCount: " + retryCount + " and serviceModelVersionDistrStatus :" + asdcStatus);
165 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
168 session.beginTransaction ();
169 Query query = session.createQuery ("update OperationalEnvServiceModelStatus set serviceModelVersionDistrStatus = :asdcStatus, retryCount = :retryCount, modifyTime = :modifyTime where "
170 + "operationalEnvId = :operationalEnvId and serviceModelVersionId = :serviceModelVersionId and requestId = :requestId ");
171 query.setParameter ("retryCount", retryCount);
172 query.setParameter (SERVICE_MOD_VER_DISTR_STATUS, asdcStatus);
173 query.setParameter ("operationalEnvId", operationalEnvId);
174 query.setParameter ("serviceModelVersionId", serviceModelVersionId);
175 query.setParameter ("requestId", requestId);
176 Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
177 query.setParameter ("modifyTime", modifyTimeStamp);
178 result = query.executeUpdate ();
179 session.getTransaction ().commit ();
181 if (session != null && session.isOpen ()) {
184 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelDB", "updateOperationalEnvRetryCountStatusPerReqId", null);
191 * Insert into OperationalEnvServiceModelStatus with operationalEnvId, serviceModelVersionId, distributionIdStatus, recoveryAction, retryCount
192 * @param operationalEnvId
193 * @param serviceModelVersionId
194 * @param distributionIdStatus
195 * @param distributionId
196 * @param recoveryAction
199 public void insertOperationalEnvServiceModelStatus(String requestId, String operationalEnvId, String serviceModelVersionId,
200 String distributionIdStatus, String recoveryAction, int retryCount, String workloadContext) {
201 long startTime = System.currentTimeMillis ();
202 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
203 msoLogger.debug ("Insert into OperationalEnvServiceModelStatus " );
205 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
206 OperationalEnvServiceModelStatus oesm = new OperationalEnvServiceModelStatus ();
209 session.beginTransaction ();
211 oesm.setRequestId (requestId);
212 oesm.setOperationalEnvId (operationalEnvId);
213 oesm.setServiceModelVersionId (serviceModelVersionId);
214 oesm.setServiceModelVersionDistrStatus (distributionIdStatus);
215 oesm.setRecoveryAction (recoveryAction);
216 oesm.setRetryCount (retryCount);
217 oesm.setWorkloadContext(workloadContext);
218 oesm.setCreateTime (startTimeStamp);
219 Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
220 oesm.setModifyTime (modifyTimeStamp);
222 msoLogger.debug ("About to insert a record into OperationalEnvServiceModelStatus");
225 session.getTransaction ().commit ();
226 } catch (Exception e) {
227 msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in insertOperationalEnvServiceModelStatus", e);
228 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "OperationalEnvServiceModelStatusDB", "saveRequest", null);
229 if (session != null) {
232 // throw an Exception in the event of a DB insert failure so that the calling routine can exit
235 if (session != null && session.isOpen ()) {
238 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelStatusDB", "insertOperationalEnvServiceModelStatus", null);