aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2017-02-16 09:31:20 -0800
committerSébastien Determe <sd378r@intl.att.com>2017-02-17 11:57:10 +0000
commitd84744112fc95ec8b2cc204c77829fec8726006d (patch)
tree594e65f84a9fbcec40bd4ae0fa6153e20a572d64
parentbb1680054ed64b7b788cf6b4fd438aad91f930b3 (diff)
Rework Database access classes
The Catalog Db and Requests DB have been reworked to be extendable by project using MSO opensource. Useless hibernate cfg.xml file have been removed too. Change-Id: I15579bde3913c9faf8eded6f92d6b5239cca512c Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
-rw-r--r--mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java50
-rw-r--r--mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml59
-rw-r--r--mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java74
-rw-r--r--mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml75
4 files changed, 84 insertions, 174 deletions
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java b/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java
index 8961b26a80..9abd871b5f 100644
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java
@@ -39,35 +39,35 @@ import org.hibernate.persister.entity.AbstractEntityPersister;
import org.openecomp.mso.logger.MsoLogger;
-public final class RequestsDatabase {
-
- private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
-
- private static final String SOURCE = "source";
- private static final String START_TIME = "startTime";
- private static final String REQUEST_TYPE = "requestType";
- private static final String SERVICE_INSTANCE_ID = "serviceInstanceId";
- private static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
- private static final String VNF_INSTANCE_NAME = "vnfName";
- private static final String VNF_INSTANCE_ID = "vnfId";
- private static final String VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
- private static final String VOLUME_GROUP_INSTANCE_ID = "volumeGroupId";
- private static final String VFMODULE_INSTANCE_NAME = "vfModuleName";
- private static final String VFMODULE_INSTANCE_ID = "vfModuleId";
- private static final String NETWORK_INSTANCE_NAME = "networkName";
- private static final String NETWORK_INSTANCE_ID = "networkId";
- private static final String GLOBAL_SUBSCRIBER_ID = "globalSubscriberId";
- private static final String SERVICE_NAME_VERSION_ID = "serviceNameVersionId";
- private static final String SERVICE_ID = "serviceId";
- private static final String SERVICE_VERSION = "serviceVersion";
- private static final String SERVICE_TYPE = "serviceType";
- private static final String REQUEST_ID = "requestId";
- private static MockRequestsDatabase mockDB = null;
+public class RequestsDatabase {
+
+ protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
+
+ protected static final String SOURCE = "source";
+ protected static final String START_TIME = "startTime";
+ protected static final String REQUEST_TYPE = "requestType";
+ protected static final String SERVICE_INSTANCE_ID = "serviceInstanceId";
+ protected static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
+ protected static final String VNF_INSTANCE_NAME = "vnfName";
+ protected static final String VNF_INSTANCE_ID = "vnfId";
+ protected static final String VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
+ protected static final String VOLUME_GROUP_INSTANCE_ID = "volumeGroupId";
+ protected static final String VFMODULE_INSTANCE_NAME = "vfModuleName";
+ protected static final String VFMODULE_INSTANCE_ID = "vfModuleId";
+ protected static final String NETWORK_INSTANCE_NAME = "networkName";
+ protected static final String NETWORK_INSTANCE_ID = "networkId";
+ protected static final String GLOBAL_SUBSCRIBER_ID = "globalSubscriberId";
+ protected static final String SERVICE_NAME_VERSION_ID = "serviceNameVersionId";
+ protected static final String SERVICE_ID = "serviceId";
+ protected static final String SERVICE_VERSION = "serviceVersion";
+
+ protected static final String REQUEST_ID = "requestId";
+ protected static MockRequestsDatabase mockDB = null;
/**
* Avoids creating an instance of this utility class.
*/
- private RequestsDatabase () {
+ protected RequestsDatabase () {
}
public static boolean healthCheck () {
diff --git a/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml b/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml
deleted file mode 100644
index 14bd7b5e69..0000000000
--- a/mso-api-handlers/mso-requests-db/src/main/resources/hibernate-requests-ajsc.cfg.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ECOMP MSO
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-<hibernate-configuration>
- <session-factory>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <property name="hibernate.show_sql">false</property>
- <property name="hibernate.format_sql">true</property>
-
- <mapping resource="InfraActiveRequests.hbm.xml"></mapping>
- <mapping resource="SiteStatus.hbm.xml"></mapping>
- </session-factory>
- <!-- <session-factory name="MSORequestsFactory">
- <property name="connection.url">${REQUESTS_CONNECTION_URL}</property>
- <property name="connection.username">${REQUESTS_USERNAME}</property>
- <property name="connection.password">${REQUESTS_PASSWORD}</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <property name="hibernate.default_schema">mso_requests</property>
- <property name="connection.driver_class">org.mariadb.jdbc.Driver</property>
- <property name="hibernate.current_session_context_class">thread</property>
- <property name="hibernate.show_sql">false</property>
- <property name="hibernate.format_sql">true</property>
-
-
- <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
- <property name="hibernate.c3p0.min_size">${REQUESTS_MIN_POOL_SIZE}</property>
- <property name="hibernate.c3p0.max_size">${REQUESTS_MAX_POOL_SIZE}</property>
- <property name="hibernate.c3p0.timeout">${REQUESTS_TIMEOUT}</property>
- <property name="hibernate.c3p0.max_statements">50</property>
- <property name="hibernate.c3p0.idle_test_period">1000</property>
- <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property>
-
-
-
- <mapping resource="InfraActiveRequests.hbm.xml"></mapping>
-
- </session-factory> -->
-</hibernate-configuration>
diff --git a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
index 35158a46b4..70b9618265 100644
--- a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
+++ b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
@@ -48,21 +48,22 @@ import org.openecomp.mso.logger.MsoLogger;
*/
public class CatalogDatabase implements Closeable {
- private static final String NETWORK_TYPE = "networkType";
- private static final String ACTION = "action";
- private static final String VNF_TYPE = "vnfType";
- private static final String SERVICE_TYPE = "serviceType";
- private static final String VNF_COMPONENT_TYPE = "vnfComponentType";
- private static final String MODEL_NAME = "modelName";
- private static final String TYPE = "type";
- private static final String VF_MODULE_ID = "vfModuleId";
- private static boolean initialized = false;
- private static SessionFactory sessionFactory;
- private static ServiceRegistry serviceRegistry;
-
- private static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
-
- private Session session = null;
+ protected static final String NETWORK_TYPE = "networkType";
+ protected static final String ACTION = "action";
+ protected static final String VNF_TYPE = "vnfType";
+ protected static final String SERVICE_TYPE = "serviceType";
+ protected static final String VNF_COMPONENT_TYPE = "vnfComponentType";
+ protected static final String MODEL_NAME = "modelName";
+ protected static final String TYPE = "type";
+ protected static final String VF_MODULE_ID = "vfModuleId";
+ protected static boolean initialized = false;
+ protected static SessionFactory sessionFactory;
+ protected static ServiceRegistry serviceRegistry;
+ protected static final String SERVICE_NAME_VERSION_ID= "serviceNameVersionId";
+
+ protected static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
+
+ protected Session session = null;
public CatalogDatabase () {
}
@@ -388,6 +389,49 @@ public class CatalogDatabase implements Closeable {
}
/**
+ * Return a Service recipe that matches a given SERVICE_NAME_VERSION_ID
+ * (MODEL_VERSION_ID) and ACTION
+ *
+ * @param modelVersionId
+ * @param action
+ * @return ServiceRecipe object or null if none found
+ */
+ public ServiceRecipe getServiceRecipe(String modelVersionId,
+ String action) {
+
+ long startTime = System.currentTimeMillis();
+ LOGGER.debug("Catalog database - get Service recipe with modeVersionId=" + modelVersionId
+ + " and action=" + action);
+
+ try {
+ String hql;
+
+ hql = "SELECT new ServiceRecipe(SR.id, SR.serviceId, SR.action, SR.description, " +
+ "SR.orchestrationUri, SR.serviceParamXSD, case when SR.recipeTimeout is null then 0 else SR.recipeTimeout end, " +
+ "case when SR.serviceTimeoutInterim is null then 0 else SR.serviceTimeoutInterim end, SR.created) " +
+ "FROM Service as S RIGHT OUTER JOIN S.recipes SR " +
+ "WHERE SR.serviceId = S.id AND S.serviceNameVersionId = :serviceNameVersionId AND SR.action = :action";
+ Query query = getSession().createQuery(hql);
+ query.setParameter(SERVICE_NAME_VERSION_ID, modelVersionId);
+ query.setParameter(ACTION, action);
+
+ @SuppressWarnings("unchecked")
+ List<ServiceRecipe> recipeResultList = query.list();
+ if (recipeResultList.isEmpty()) {
+ LOGGER.debug("Catalog database - recipeResultList is null");
+ return null;
+ }
+ Collections.sort(recipeResultList, new MavenLikeVersioningComparator());
+ Collections.reverse(recipeResultList);
+ LOGGER.debug("Catalog database - recipeResultList contains " + recipeResultList.get(0).toString());
+
+ return recipeResultList.get(0);
+ } finally {
+ LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getServiceRecipe", null);
+ }
+ }
+
+ /**
* Return a newest version of Service recipe that matches a given SERVICE_ID and ACTION
*
* @param serviceId
diff --git a/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml b/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml
deleted file mode 100644
index 7f28a36346..0000000000
--- a/mso-catalog-db/src/main/resources/hibernate-catalog-ajsc.cfg.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ECOMP MSO
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-
-<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
- <session-factory>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <property name="hibernate.show_sql">false</property>
- <property name="hibernate.format_sql">true</property>
-
- <mapping resource="VnfResource.hbm.xml"/>
- <mapping resource="VnfRecipe.hbm.xml"/>
- <mapping resource="HeatTemplate.hbm.xml"/>
- <mapping resource="Service.hbm.xml"/>
- <mapping resource="NetworkResource.hbm.xml"/>
- <mapping resource="NetworkRecipe.hbm.xml"/>
- <mapping resource="HeatEnvironment.hbm.xml"/>
- <mapping resource="HeatNestedTemplate.hbm.xml"/>
- <mapping resource="VnfComponent.hbm.xml"/>
- <mapping resource="VnfComponentsRecipe.hbm.xml"/>
- <mapping resource="VfModule.hbm.xml"/>
- <mapping resource="VfModuleToHeatFiles.hbm.xml"/>
- <!-- <property name="connection.url">${CATALOG_CONNECTION_URL}</property>
- <property name="connection.username">${CATALOG_USERNAME}</property>
- <property name="connection.password">${CATALOG_PASSWORD}</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <property name="hibernate.default_schema">mso_catalog</property>
- <property name="connection.driver_class">org.mariadb.jdbc.Driver</property>
- <property name="hibernate.current_session_context_class">thread</property>
- <property name="hibernate.show_sql">false</property>
- <property name="hibernate.format_sql">true</property>
-
-
- <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
- <property name="hibernate.c3p0.min_size">${CATALOG_MIN_POOL_SIZE}</property>
- <property name="hibernate.c3p0.max_size">${CATALOG_MAX_POOL_SIZE}</property>
- <property name="hibernate.c3p0.timeout">${CATALOG_TIMEOUT}</property>
- <property name="hibernate.c3p0.max_statements">50</property>
- <property name="hibernate.c3p0.idle_test_period">1000</property>
- <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property>
-
-
- <mapping resource="VnfResource.hbm.xml"/>
- <mapping resource="VnfRecipe.hbm.xml"/>
- <mapping resource="HeatTemplate.hbm.xml"/>
- <mapping resource="CloudSite.hbm.xml"/>
- <mapping resource="Service.hbm.xml"/>
- <mapping resource="NetworkResource.hbm.xml"/>
- <mapping resource="NetworkRecipe.hbm.xml"/>
- <mapping resource="HeatEnvironment.hbm.xml"/>
- <mapping resource="HeatNestedTemplate.hbm.xml"/>
- <mapping resource="VnfComponent.hbm.xml"/>
- <mapping resource="VnfComponentsRecipe.hbm.xml"/> -->
- </session-factory>
-</hibernate-configuration>