diff options
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> |