diff options
author | Skip Wonnell <kw5258@att.com> | 2017-08-15 17:05:27 -0500 |
---|---|---|
committer | Patrick Brady <pb071s@att.com> | 2017-08-17 06:15:20 +0000 |
commit | 86011b92947fdb0805623a25c893cd59128ec40e (patch) | |
tree | 1c36884f760ed4e32a88df542ac9288b601dc9b3 /appc-config/appc-data-services/provider | |
parent | 96f45e8acfbacadf2761af634190a49519c0de4a (diff) |
Initial commit for appc-data-services bundle
This bundle contains the generic execute nodes that
interact with the database.
Issue-ID: APPC-58
Change-Id: Ib1447443ed259f4133cd33d554a5ac43f2c3dd1b
Signed-off-by: Skip Wonnell <kw5258@att.com>
Diffstat (limited to 'appc-config/appc-data-services/provider')
13 files changed, 1820 insertions, 0 deletions
diff --git a/appc-config/appc-data-services/provider/.gitignore b/appc-config/appc-data-services/provider/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-config/appc-data-services/provider/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-config/appc-data-services/provider/pom.xml b/appc-config/appc-data-services/provider/pom.xml new file mode 100644 index 000000000..9de2e7bfb --- /dev/null +++ b/appc-config/appc-data-services/provider/pom.xml @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-config-data-services</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + <artifactId>appc-config-data-services-provider</artifactId> + <packaging>bundle</packaging> + <name>APPC Data Services - Provider</name> + <url>http://maven.apache.org</url> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <dependencies> + <dependency> + <groupId>equinoxSDK381</groupId> + <artifactId>org.eclipse.osgi</artifactId> + <version>${equinox.osgi.version}</version> + </dependency> + <dependency> + <groupId>org.openecomp.sdnc.core</groupId> + <artifactId>sli-provider</artifactId> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.openecomp.sdnc.adaptors</groupId> + <artifactId>sql-resource-provider</artifactId> + <version>${openecomp.sdnc.sql-resource.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + + <dependency> + <groupId>com.att.eelf</groupId> + <artifactId>eelf-core</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </dependency> + + </dependencies> + <build> + <plugins> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>copy-xsl</id> + <goals> + <goal>copy-resources</goal> + </goals> + <phase>validate</phase> + <configuration> + <outputDirectory>${basedir}/target/templates/xslt/sbg</outputDirectory> + <resources> + <resource> + <directory>src/main/resources/xsl</directory> + <includes> + <include>*</include> + </includes> + <filtering>true</filtering> + </resource> + </resources> + </configuration> + </execution> + <execution> + <id>copy-properties</id> + <goals> + <goal>copy-resources</goal> + </goals> + <phase>validate</phase> + <configuration> + <outputDirectory>${basedir}/target/properties/</outputDirectory> + <resources> + <resource> + <directory>src/main/resources</directory> + <includes> + <include>*.properties</include> + </includes> + <filtering>true</filtering> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>${bundle.plugin.version}</version> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>appc-config-data-services</Bundle-SymbolicName> + <Bundle-Activator>org.openecomp.appc.config.data.services.AppcDataServiceActivator</Bundle-Activator> + <Export-Package>org.openecomp.appc.data.services</Export-Package> + <Import-Package>*</Import-Package> + <DynamicImport-Package>*</DynamicImport-Package> + </instructions> + <manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation> + </configuration> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + com.brocade.developer + </groupId> + <artifactId> + providermodule-plugin + </artifactId> + <versionRange> + [1.2.0.100-SNAPSHOT,) + </versionRange> + <goals> + <goal>process</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore /> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java new file mode 100644 index 000000000..0ccc2b752 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services; + +import java.util.LinkedList; +import java.util.List; +import java.util.Properties; + +import org.openecomp.appc.data.services.node.ConfigResourceNode; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class AppcDataServiceActivator implements BundleActivator { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(AppcDataServiceActivator.class); + private List<ServiceRegistration> registrations = new LinkedList<ServiceRegistration>(); + + @Override + public void start(BundleContext ctx) throws Exception { + + ConfigResourceNode configResourceNode = new ConfigResourceNode(); + log.info("Registering service-- " + configResourceNode.getClass().getName()); + registrations.add(ctx.registerService(configResourceNode.getClass().getName(), configResourceNode, null)); + + + + + } + + @Override + public void stop(BundleContext arg0) throws Exception { + for (ServiceRegistration registration : registrations) { + registration.unregister(); + registration = null; + } + } +} diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java new file mode 100644 index 000000000..87e0f2c9b --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services; + +public class AppcDataServiceConstant { + + + + + public static String INPUT_PARAM_RESPONSE_PREFIX = "responsePrefix"; + public static String OUTPUT_STATUS_SUCCESS = "success"; + public static String OUTPUT_STATUS_FAILURE = "failure"; + public static final String INPUT_PARAM_MESSAGE = "message"; + public static final String INPUT_PARAM_MESSAGE_TYPE = "messageType"; + public static String OUTPUT_PARAM_STATUS = "status"; + public static String OUTPUT_PARAM_ERROR_MESSAGE = "error-message"; + public static final String INPUT_PARAM_FILE_CATEGORY = "fileCategory"; + public static final String INPUT_PARAM_VM_INSTANCE = "vmInstance"; + public static final String INPUT_PARAM_ASDC_ARTIFACT_IND = "asdcArtifactInd"; + public static final Object INPUT_PARAM_VNF_ID = "vnfId"; + public static final Object INPUT_PARAM_VM_NAME = "vmName"; + + public static final String INPUT_PARAM_FILE_ID = "fileId"; + + public static String INPUT_PARAM_UPLOAD_CONFIG_ID= "uploadConfigId"; + + +} diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java new file mode 100644 index 000000000..3ec42f61a --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java @@ -0,0 +1,443 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services.db; + +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; + +import org.openecomp.sdnc.sli.SvcLogicContext; +import org.openecomp.sdnc.sli.SvcLogicException; +import org.openecomp.sdnc.sli.SvcLogicResource; +import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus; +import org.openecomp.sdnc.sli.resource.sql.SqlResource; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class DGGeneralDBService { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(DGGeneralDBService.class); + private SvcLogicResource serviceLogic; + private static DGGeneralDBService dgGeneralDBService = null; + + public static DGGeneralDBService initialise() { + if (dgGeneralDBService == null) { + dgGeneralDBService = new DGGeneralDBService(); + } + return dgGeneralDBService; + } + + private DGGeneralDBService() { + if (serviceLogic == null) { + serviceLogic = new SqlResource(); + } + } + + public QueryStatus getDeviceProtocolByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * FROM DEVICE_INTERFACE_PROTOCOL WHERE vnf_type = $vnf-type ;"; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getDeviceAuthenticationByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * FROM DEVICE_AUTHENTICATION WHERE vnf_type = $vnf-type ;"; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + + } + return status; + } + + public QueryStatus getConfigFileReferenceByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * FROM CONFIG_FILE_REFERENCE WHERE vnf_type = $vnf-type ;"; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getConfigFileReferenceByFileTypeNVnfType(SvcLogicContext ctx, String prefix, String fileType) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * FROM CONFIG_FILE_REFERENCE WHERE file_type = '" + fileType + + "' and vnf_type = $vnf-type ;"; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getTemplate(SvcLogicContext ctx, String prefix, String fileCategory) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id " + + " FROM ASDC_ARTIFACTS " + + " WHERE asdc_artifacts_id = ( SELECT MAX(a.asdc_artifacts_id) configfileid " + + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name " + + " AND file_category = '" + fileCategory + "'" + " AND action = $request-action " + + " AND vnf_type = $vnf-type " + " AND vnfc_type = $vnfc-type ) ; "; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getTemplateByVnfTypeNAction(SvcLogicContext ctx, String prefix, String fileCategory) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id " + + " FROM ASDC_ARTIFACTS " + + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid " + + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name " + + " AND file_category = '" + fileCategory + "'" + " AND action = $request-action " + + " AND vnf_type = $vnf-type ) ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getTemplateByVnfType(SvcLogicContext ctx, String prefix, String fileCategory) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id " + + " FROM ASDC_ARTIFACTS " + + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid " + + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name " + + " AND file_category = '" + fileCategory + "'" + " AND vnf_type = $vnf-type ) ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getTemplateByTemplateName(SvcLogicContext ctx, String prefix, String templateName) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id " + + " FROM ASDC_ARTIFACTS " + + " WHERE asdc_artifacts_id = (SELECT MAX(asdc_artifacts_id) configfileid " + + " FROM ASDC_ARTIFACTS " + " WHERE artifact_name = '" + templateName + "' ) ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getConfigureActionDGByVnfTypeNAction(SvcLogicContext ctx, String prefix) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * " + " FROM CONFIGURE_ACTION_DG " + + " where vnf_type = $vnf-type and action = $request-action ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getConfigureActionDGByVnfType(SvcLogicContext ctx, String prefix) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * " + " FROM CONFIGURE_ACTION_DG " + + " where vnf_type = $vnf-type and action IS NULL ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus getMaxConfigFileId(SvcLogicContext ctx, String prefix, String fileCategory) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT MAX(config_file_id) configfileid " + " FROM CONFIGFILES " + " WHERE file_category = '" + + fileCategory + "'" + " AND vnf_id = $vnf-id AND vm_name = $vm-name ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + public QueryStatus saveConfigFiles(SvcLogicContext ctx, String prefix) throws SvcLogicException { + + QueryStatus status = null; + + if (serviceLogic != null && ctx != null) { + String key = "INSERT INTO CONFIGFILES " + " SET data_source = $data-source , " + + " service_instance_id = $service-instance-id ," + " action = $request-action ," + + " vnf_type = $vnf-type ," + " vnfc_type = $vnfc-type ," + + " vnf_id = $vnf-id , " + " vnf_name = $vnf-name ," + + " vm_name = $vm-name ," + " file_category = $file-category ," + + " file_content = $file-content ; "; + + status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx); + + } + return status; + + } + + public QueryStatus savePrepareRelationship(SvcLogicContext ctx, String prefix, String fileId, String asdcInd) + throws SvcLogicException { + + QueryStatus status = null; + String key = null; + + if (serviceLogic != null && ctx != null) { + + if ("Y".equals(asdcInd)) + + key = "INSERT INTO PREPARE_FILE_RELATIONSHIP " + " SET service_instance_id = $service-instance-id , " + + " request_id = $request-id , " + " asdc_artifacts_id = " + fileId + " ;"; + else + key = "INSERT INTO PREPARE_FILE_RELATIONSHIP " + " SET service_instance_id = $service-instance-id , " + + " request_id = $request-id , " + " config_file_id = " + fileId + " ;"; + + status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx); + + log.info("DGGeneralDBService.savePrepareRelationship()" + ctx.getAttributeKeySet()); + } + return status; + + } + + public void cleanContextPropertyByPrefix(SvcLogicContext ctx, String prefix) { + if (ctx != null && ctx.getAttributeKeySet() != null && StringUtils.isNotBlank(prefix)) { + + Set<String> keySet = ctx.getAttributeKeySet(); + for (String key : keySet) { + if (StringUtils.isNotBlank(key) && key.startsWith(prefix = ".")) { + ctx.getAttributeKeySet().remove(key); + } + } + } + } + + public QueryStatus saveUploadConfig(SvcLogicContext ctx, String prefix) throws SvcLogicException { + + QueryStatus status = null; + + if (serviceLogic != null && ctx != null) { + String key = "INSERT INTO UPLOAD_CONFIG " + " SET request_id = $request-id , " + + " action = $request-action , " + " originator_id = $originator-id , " + " vnf_id = $vnf-id , " + + " vnf_name = $vnf-name , " + " vm_name = $vm-name , " + + " host_ip_address = $vnf-host-ip-address , " + " vnf_type = $vnf-type , " + + " vnfc_type = $vnfc-type , " + " config_indicator = 'Current' , " + + " content = $tmp.escaped.devicerunningconfig ; "; + + status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx); + + log.info("DGGeneralDBService.saveUploadConfig()" + ctx.getAttributeKeySet()); + + } + return status; + + } + + /*public QueryStatus getMaxUploadConfigFileId(SvcLogicContext ctx, String prefix) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT MAX(upload_config_id) uploadconfigid " + " FROM UPLOAD_CONFIG " + + " WHERE vnf_id = $vnf-id AND vm_name = $vm-name ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + log.info("DGGeneralDBService.getMaxUploadConfigFileId()" + ctx.getAttributeKeySet()); + } + return status; + }*/ + + public QueryStatus updateUploadConfig(SvcLogicContext ctx, String prefix, int maxId) throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "UPDATE UPLOAD_CONFIG " + " SET config_indicator = null " + + " WHERE upload_config_id != " + maxId + " AND config_indicator = 'Current' " + + " AND vnf_id = $vnf-id " + " AND vm_name = $vm-name ; "; + + status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx); + + log.info("DGGeneralDBService.updateUploadConfig()" + ctx.getAttributeKeySet()); + + } + return status; + + } + + + public QueryStatus getTemplateByArtifactType(SvcLogicContext ctx, String prefix, String fileCategory, String artifactType) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT artifact_content file_content , asdc_artifacts_id config_file_id " + + " FROM ASDC_ARTIFACTS " + + " WHERE asdc_artifacts_id = (SELECT MAX(a.asdc_artifacts_id) configfileid " + + " FROM ASDC_ARTIFACTS a, ASDC_REFERENCE b " + " WHERE a.artifact_name = b.artifact_name " + + " AND file_category = '" + fileCategory + "'" + " AND action = $request-action " + + " AND artifactType = '" + artifactType + "'" + " AND vnf_type = $vnf-type ) ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + + public QueryStatus getConfigFilesByVnfVmNCategory(SvcLogicContext ctx, String prefix, String fileCategory, String vnfId, String vmName) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + + String key = "SELECT file_content , config_file_id " + + " FROM CONFIGFILES " + + " WHERE config_file_id = ( SELECT MAX(config_file_id) configfileid " + " FROM CONFIGFILES " + + " WHERE file_category = '" + fileCategory + "'" + + " AND vnf_id = '" + vnfId + "'" + + " AND vm_name = '" + vmName + "' ) ; "; + + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + + public QueryStatus getDownloadConfigTemplateByVnf(SvcLogicContext ctx, String prefix) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + String key = "SELECT * FROM DOWNLOAD_CONFIG_TEMPLATE WHERE vnf_type = $vnf-type ; "; + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + + + public QueryStatus saveConfigTransactionLog(SvcLogicContext ctx, String prefix) throws SvcLogicException { + + QueryStatus status = null; + + if (serviceLogic != null && ctx != null) { + + + String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , " + + " message_type = $log-message-type , " + + " message = $log-message ;"; + + + status = serviceLogic.save("SQL", false, false, key, null, prefix, ctx); + + + + } + return status; + + } + + + public QueryStatus getVnfcReferenceByVnfcTypeNAction(SvcLogicContext ctx, String prefix) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + + String key = "SELECT * " + + " FROM VNFC_REFERENCE " + + " WHERE vnf_type = $vnf-type " + + " AND vnfc_type = $vnfc-type " + + " AND action = $request-action " + + " ORDER BY vm_instance, vnfc_instance ; "; + + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + + public QueryStatus getVnfcReferenceByVnfTypeNAction(SvcLogicContext ctx, String prefix) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + + String key = "SELECT * " + + " FROM VNFC_REFERENCE " + + " WHERE vnf_type = $vnf-type " + + " AND action = $request-action " + + " ORDER BY vm_instance, vnfc_instance ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + + + public QueryStatus getUploadConfigInfo(SvcLogicContext ctx, String prefix) + throws SvcLogicException { + QueryStatus status = null; + if (serviceLogic != null && ctx != null) { + + String key = "SELECT * , UNIX_TIMESTAMP(UPLOAD_DATE) UPLOAD_TIMESTAMP " + + " FROM UPLOAD_CONFIG " + + " WHERE upload_config_id = " + + "( SELECT MAX(upload_config_id) uploadconfigid " + " FROM UPLOAD_CONFIG " + + " WHERE vnf_id = $vnf-id AND vm_name = $vm-name ) ; "; + + status = serviceLogic.query("SQL", false, null, key, prefix, null, ctx); + } + return status; + } + public String getCapability(SvcLogicContext ctx, String vnf_type) throws SvcLogicException { + + //{"capabilities":{"vnfc":[],"vm":[],"vf-module":[],"vnf":["ConfigureTest","ConfigModify","HealthCheck"]}} + String fn = "getCapability "; + QueryStatus status = null; + SvcLogicContext localContext = new SvcLogicContext(); + localContext.setAttribute("vnf-type", vnf_type); + if (serviceLogic != null && localContext != null) { + String queryString = "select max(internal_version) as maxInternalVersion, artifact_name as artifactName from ASDC_ARTIFACTS " + + " where artifact_name in (select artifact_name from ASDC_REFERENCE where vnf_type= $vnf-type " + + " and file_category = 'capability' )" ; + + log.info(fn + "Query String : " + queryString); + status = serviceLogic.query("SQL", false, null, queryString, null, null, localContext); + + if(status.toString().equals("FAILURE")) + throw new SvcLogicException("Error - while getting capabilitiesData "); + + String queryString1 = "select artifact_content from ASDC_ARTIFACTS " + + " where artifact_name = $artifactName and internal_version = $maxInternalVersion "; + + log.debug(fn + "Query String : " + queryString1); + status = serviceLogic.query("SQL", false, null, queryString1, null, null, localContext); + if(status.toString().equals("FAILURE")) + throw new SvcLogicException("Error - while getting capabilitiesData "); + } + + return localContext.getAttribute("artifact-content"); + } + +} diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java new file mode 100644 index 000000000..1f920beb0 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services.db; + +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; + +import org.openecomp.sdnc.sli.SvcLogicContext; +import org.openecomp.sdnc.sli.SvcLogicException; +import org.openecomp.sdnc.sli.SvcLogicResource; +import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus; +import org.openecomp.sdnc.sli.resource.sql.SqlResource; + +import org.openecomp.appc.data.services.AppcDataServiceConstant; +import org.openecomp.appc.data.services.utils.EscapeUtils; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class GeneralDataService { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(GeneralDataService.class); + + public void saveTransactionLog(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException + { + SvcLogicContext logger = new SvcLogicContext(); + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + String messageType = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE); + String message = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE); + try + { + + String escapedMessage = EscapeUtils.escapeSql(message); + logger.setAttribute("request-id", ctx.getAttribute("request-id")); + logger.setAttribute("log-message-type", messageType); + logger.setAttribute("log-message", escapedMessage); + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + QueryStatus status = db.saveConfigTransactionLog( logger, responsePrefix); + + logger.setAttribute("log-message", null); + logger.setAttribute("log-message-type", null); + logger.setAttribute("request-id", null); + + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to insert into config_transaction_log"); + + + } + catch (Exception e) + { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + throw new SvcLogicException(e.getMessage()); + } + } + +} diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java new file mode 100644 index 000000000..942493905 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java @@ -0,0 +1,757 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services.node; + +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.openecomp.sdnc.sli.SvcLogicContext; +import org.openecomp.sdnc.sli.SvcLogicException; +import org.openecomp.sdnc.sli.SvcLogicJavaPlugin; + +import org.openecomp.appc.data.services.AppcDataServiceConstant; +import org.openecomp.appc.data.services.db.DGGeneralDBService; +import org.openecomp.appc.data.services.utils.EscapeUtils; + +import org.openecomp.sdnc.sli.SvcLogicResource.QueryStatus; + +public class ConfigResourceNode implements SvcLogicJavaPlugin { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(ConfigResourceNode.class); + + public void getConfigFileReference(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getConfigFiles call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + QueryStatus status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-deviceconfig", + "device_configuration"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read ConfigFileReference:device-configuration"); + + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-success", + "configuration_success"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read ConfigFileReference:configuration_success"); + + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-failure", + "configuration_error"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read ConfigFileReference:configuration_error"); + + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-log", "log"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read ConfigFileReference:configuration_log"); + + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("GetConfigFileReference Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in GetConfigFileReference " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void getCommonConfigInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getDeviceInfo call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + QueryStatus status = db.getDeviceAuthenticationByVnfType(ctx, "device-authentication"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read device_authentication"); + + status = db.getDeviceProtocolByVnfType(ctx, "tmp.deviceinterfaceprotocol"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read device_interface_protocol"); + + status = db.getConfigureActionDGByVnfTypeNAction(ctx, "tmp.configureactiondg"); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to Read configure_action_dg"); + + if (status == QueryStatus.NOT_FOUND) { + status = db.getConfigureActionDGByVnfType(ctx, "tmp.configureactiondg"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read configure_action_dg"); + } + + + + + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getCommonConfigInfo Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getCommonConfigInfo " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + // fileCategory Can be config_template, parameter_definitions, parameter_yang + public void getTemplate(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getTemplate call with params : " + inParams); + + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + String fileCategory = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY); + String templateName = ctx.getAttribute("template-name"); + QueryStatus status = null; + String responsePrefix1 = ""; + + try { + + responsePrefix1 = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + log.info("RESPONSEPREFIX : " + responsePrefix); + log.info("RESPONSEPREFIX1 : " + responsePrefix1); + + DGGeneralDBService db = DGGeneralDBService.initialise(); + + if (StringUtils.isBlank(templateName)) { + + //if ( !StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) { + + + status = db.getTemplate(ctx, responsePrefix, fileCategory); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to Read " + fileCategory ); + //} + + if (status == QueryStatus.NOT_FOUND) { + + + status = db.getTemplateByVnfTypeNAction(ctx, responsePrefix, fileCategory); + + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to Read " + fileCategory ); + + if (status == QueryStatus.NOT_FOUND) { + + status = db.getTemplateByVnfType(ctx, responsePrefix, fileCategory); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read " + fileCategory ); + } + } + } else { + + status = db.getTemplateByTemplateName(ctx, responsePrefix, templateName); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read " + fileCategory + " template"); + } + + + ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("GetTemplate Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getTemplate " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void saveConfigFiles(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received saveConfigFiles call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + QueryStatus status = db.saveConfigFiles(ctx, "tmp.configFiles"); + + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to Save " + ctx.getAttribute("file-category") + " in configfiles"); + + status = db.getMaxConfigFileId(ctx, "tmp.configfilesmax", ctx.getAttribute("file-category")); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to get " + ctx.getAttribute("file-category") + " from configfiles"); + + status = db.savePrepareRelationship(ctx, "tmp.preparerel", + ctx.getAttribute("tmp.configfilesmax.configfileid"), "N"); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to save prepare_relationship"); + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("saveConfigFiles Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in saveConfigFiles " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void updateUploadConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received updateUploadConfig call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + + ctx.setAttribute("tmp.escaped.devicerunningconfig", + EscapeUtils.escapeSql(ctx.getAttribute("device-running-config"))); + + QueryStatus status = db.saveUploadConfig(ctx, "tmp.uploadConfig"); + + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to Save configuration in upload_config"); + + /*status = db.getMaxUploadConfigFileId(ctx, "tmp.uploadconfigmax"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to get record from upload_config"); + + status = db.updateUploadConfig(ctx, "tmp.uploadConfig", + Integer.parseInt(ctx.getAttribute("tmp.uploadconfigmax.uploadconfigid"))); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to upload upload_config");*/ + + status = db.getUploadConfigInfo(ctx, "tmp.uploadConfigInfo"); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to get record from upload_config"); + + status = db.updateUploadConfig(ctx, "tmp.uploadConfig", + Integer.parseInt(ctx.getAttribute("tmp.uploadConfigInfo.UPLOAD-CONFIG-ID"))); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to upload upload_config"); + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("updateUploadConfig Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in updateUploadConfig " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void savePrepareRelationship(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received savePrepareRelationship call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + String asdcArtifactInd = inParams.get(AppcDataServiceConstant.INPUT_PARAM_ASDC_ARTIFACT_IND); + String fileId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_ID); + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + + QueryStatus status = db.savePrepareRelationship(ctx, "tmp.preparerel", fileId, asdcArtifactInd); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to save prepare_relationship"); + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("savePrepareRelationship Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in saveConfigFiles " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void saveConfigBlock(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received saveConfigBlock call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute("tmp.convertconfig.escapeData", + EscapeUtils.escapeSql(ctx.getAttribute("configuration"))); + DGGeneralDBService db = DGGeneralDBService.initialise(); + + if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) { + saveDeviceConfiguration(inParams, ctx, "Request", ctx.getAttribute("tmp.convertconfig.escapeData"), + ctx.getAttribute("configuration")); + } else { + + saveConfigurationBlock(inParams, ctx); + + ctx.setAttribute("tmp.convertconfig.escapeData", + EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData"))); + saveDeviceConfiguration(inParams, ctx, "Configurator", ctx.getAttribute("tmp.convertconfig.escapeData"), + ctx.getAttribute("tmp.merge.mergedData")); + + saveConfigurationData(inParams, ctx); + } + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("saveConfigBlock Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in saveConfigBlock " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void saveTemplateConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received saveTemplateConfig call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + + if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) { + + ctx.setAttribute("tmp.convertconfig.escapeData", + EscapeUtils.escapeSql(ctx.getAttribute("config-template.file-content"))); + saveDeviceConfiguration(inParams, ctx, "Template", ctx.getAttribute("tmp.convertconfig.escapeData"), + ctx.getAttribute("config-template.file-content")); + + } else { + saveConfigurationData(inParams, ctx); + + ctx.setAttribute("tmp.convertconfig.escapeData", + EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData"))); + saveDeviceConfiguration(inParams, ctx, "Configurator", ctx.getAttribute("tmp.convertconfig.escapeData"), + ctx.getAttribute("tmp.merge.mergedData")); + + } + + QueryStatus status = db.savePrepareRelationship(ctx, "tmp.preparerel", + ctx.getAttribute("config-template.config-file-id"), "Y"); + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to save prepare_relationship"); + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("saveTemplateConfig Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in saveTemplateConfig " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + + + public void saveStyleSheetConfig(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + + log.info("Received saveStyleSheet call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + try { + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute("tmp.convertconfig.escapeData", + EscapeUtils.escapeSql(ctx.getAttribute("tmp.merge.mergedData"))); + saveDeviceConfiguration(inParams, ctx, "StyleSheet", ctx.getAttribute("tmp.convertconfig.escapeData"), + ctx.getAttribute("tmp.merge.mergedData")); + + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("saveStyleSheet Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); + log.error("Failed in saveStyleSheet " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void getSmmChainKeyFiles(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + + log.info("Received saveStyleSheet call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + String siteLocation = ctx.getAttribute("site-location"); + + QueryStatus status = null; + + try{ + + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + + + + status = db.getTemplateByArtifactType(ctx, "smm", "smm", siteLocation); + + if ( status == QueryStatus.FAILURE ) + throw new Exception("Unable to Read smm file"); + + + status = db.getTemplateByArtifactType(ctx, "intermediate-ca-chain", "intermediate_ca_chain", siteLocation); + + if ( status == QueryStatus.FAILURE ) + throw new Exception("Unable to Read intermediate_ca_chain file"); + + + + + status = db.getTemplateByArtifactType(ctx, "server-certificate-and-key", "server_certificate_and_key", siteLocation); + + if ( status == QueryStatus.FAILURE ) + throw new Exception("Unable to Read server_certificate_and_key file"); + + + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("saveStyleSheet Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); + log.error("Failed in saveStyleSheet " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void saveDeviceConfiguration(Map<String, String> inParams, SvcLogicContext ctx, String dataSource, + String fileContent, String deviceConfig) throws SvcLogicException { + ctx.setAttribute("data-source", dataSource); + ctx.setAttribute("file-content", fileContent); + ctx.setAttribute("file-category", "device_configuration"); + ctx.setAttribute("deviceconfig-file-content", deviceConfig); + + saveConfigFiles(inParams, ctx); + } + + public void saveConfigurationBlock(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + ctx.setAttribute("data-source", "Request"); + ctx.setAttribute("file-content", ctx.getAttribute("tmp.convertconfig.escapeData")); + ctx.setAttribute("file-category", "configuration_block"); + saveConfigFiles(inParams, ctx); + } + + public void saveConfigurationData(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + ctx.setAttribute("data-source", ctx.getAttribute("originator-id")); + ctx.setAttribute("file-content", ctx.getAttribute("configuration-params")); + ctx.setAttribute("file-category", "config_data"); + saveConfigFiles(inParams, ctx); + } + + + public void getConfigFilesByVnfVmNCategory(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getConfigFilesByVnfVmNCategory call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + String fileCategory = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY); + String vnfId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VNF_ID); + String vmName = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VM_NAME); + try { + + + DGGeneralDBService db = DGGeneralDBService.initialise(); + + QueryStatus status = db.getConfigFilesByVnfVmNCategory(ctx, responsePrefix, fileCategory, vnfId, vmName); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to get " + ctx.getAttribute("fileCategory") + " from configfiles"); + + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getConfigFilesByVnfVmNCategory Successful " + ctx.getAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS)); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getConfigFilesByVnfVmNCategory " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void getDownloadConfigTemplateByVnf(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getDownloadConfigTemplateByVnfNProtocol call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + try { + DGGeneralDBService db = DGGeneralDBService.initialise(); + + QueryStatus status = db.getDownloadConfigTemplateByVnf(ctx, responsePrefix); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to get download config template."); + + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getDownloadConfigTemplateByVnf Successful " + ctx.getAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS)); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getDownloadConfigTemplateByVnf " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + public void saveConfigTransactionLog(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + String messageType = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE); + String message = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE); + + try { + + SvcLogicContext logctx = new SvcLogicContext(); + + String escapedMessage = EscapeUtils.escapeSql(message); + + + logctx.setAttribute("request-id", ctx.getAttribute("request-id")); + logctx.setAttribute("log-message-type", messageType); + logctx.setAttribute("log-message", escapedMessage); + + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + DGGeneralDBService db = DGGeneralDBService.initialise(); + QueryStatus status = db.saveConfigTransactionLog( logctx, responsePrefix); + + logctx.setAttribute("log-message", null); + + if (status == QueryStatus.FAILURE) + throw new Exception("Unable to insert into config_transaction_log"); + + + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + + + throw new SvcLogicException(e.getMessage()); + } + } + + + + public void getVnfcReference(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getVnfcReference call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + + QueryStatus status = null; + + try { + + + DGGeneralDBService db = DGGeneralDBService.initialise(); + + if ( !StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) { + status = db.getVnfcReferenceByVnfcTypeNAction(ctx, responsePrefix); + + if ( status == QueryStatus.FAILURE) + throw new Exception("Unable to Read vnfc-reference"); + } + //else if (status == QueryStatus.NOT_FOUND ) { + status = db.getVnfcReferenceByVnfTypeNAction(ctx, responsePrefix); + + if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) + throw new Exception("Unable to Read vnfc reference"); + + //} + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getVnfcReference Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getVnfcReference " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + public void getCapability(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + log.info("Received getCapability call with params : " + inParams); + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + String caplevel = inParams.get("caplevel"); + String findCapability = inParams.get("checkCapability"); + + try { + DGGeneralDBService db = DGGeneralDBService.initialise(); + String cap = db.getCapability(ctx, inParams.get("vnf-type")); + ObjectMapper mapper = new ObjectMapper(); + JsonNode caps = mapper.readTree(cap); + log.info("From DB = " + caps); + JsonNode capabilities = caps.get("capabilities"); + log.info("capabilities = " + capabilities); + if(caplevel !=null && !caplevel.isEmpty()){ + JsonNode subCapabilities = capabilities.get(caplevel); + log.info("subCapabilities = " + caplevel + " : " + subCapabilities); + if(findCapability !=null && !findCapability.isEmpty()){ + if(subCapabilities != null && subCapabilities.toString().contains(findCapability)) + ctx.setAttribute(responsePrefix + "capabilities." + caplevel + "." + findCapability, + "Supported"); + else + ctx.setAttribute(responsePrefix + "capabilities." + caplevel + "." + findCapability, + "Not-Supported"); + } + else + { + ctx.setAttribute(responsePrefix + "capabilities." + caplevel, + subCapabilities.toString()); + } + + } + else + ctx.setAttribute(responsePrefix + "capabilities", + capabilities.toString()); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getCapability Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getCapability " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + + + /*public void getUploadConfigInfo(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException { + + log.info("Received getUploadConfigInfo call with params : " + inParams); + + String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); + + String uploadConfigId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_UPLOAD_CONFIG_ID); + QueryStatus status = null; + + int id = 0; + try { + + + DGGeneralDBService db = DGGeneralDBService.initialise(); + + if ( uploadConfigId != null ) + id = Integer.parseInt(uploadConfigId); + + status = db.getUploadConfigInfo(ctx, responsePrefix,id); + + if ( status == QueryStatus.FAILURE || status == QueryStatus.NOT_FOUND) + throw new Exception("Unable to Read upload-config"); + + + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); + log.info("getUploadConfigInfo Successful "); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, + AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); + log.error("Failed in getUploadConfigInfo " + e.getMessage()); + + throw new SvcLogicException(e.getMessage()); + } + } + */ + +} diff --git a/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java new file mode 100644 index 000000000..b8daeeb6f --- /dev/null +++ b/appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java @@ -0,0 +1,39 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services.utils; + +import org.apache.commons.lang3.StringUtils; + +public class EscapeUtils { + + public EscapeUtils() { + // TODO Auto-generated constructor stub + } + + public static String escapeSql(String str) { + if (str == null) { + return null; + } + String searchList[] = new String[]{"'","\\"}; + String replacementList[] = new String[]{ "''","\\\\"}; + return StringUtils.replaceEach(str,searchList, replacementList); + } +} diff --git a/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java new file mode 100644 index 000000000..386b9f926 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java @@ -0,0 +1,29 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + + +import org.junit.Test; +//Model JUNIT Class +public class TestDGGeneralDBService { + + + + +} diff --git a/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java new file mode 100644 index 000000000..995934933 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java @@ -0,0 +1,178 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * 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========================================================= + */ + +package org.openecomp.appc.data.services.db; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.openecomp.sdnc.sli.SvcLogicContext; + +public class TestSQLSaveQuery { + + + private static final Logger LOG = LoggerFactory.getLogger(TestSQLSaveQuery.class); + + private static String CRYPT_KEY = ""; + + //@Test + public void testSQLSaveQuery() { + + try { + String message = FileUtils.readFileToString(new File("src/test/resources/query/sampledata.txt")); + System.out.println("TestSQLSaveQuery.testSQLSaveQuery()" + message); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("request-id", "1234"); + + String escapedMessage = StringEscapeUtils.escapeSql(message); + ctx.setAttribute("log_message", escapedMessage); + + //String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , message_type = 'request' , message = '" + escapedMessage + "' ;"; + String key = "INSERT INTO CONFIG_TRANSACTION_LOG " + " SET request_id = $request-id , message_type = 'request' , message = $log_message ;"; + System.out.println("Query : " + key); + String resolvedContext = resolveCtxVars(key, ctx); + + System.out.println("Resolved : " + resolvedContext); + + ctx.setAttribute("log_message", null); + + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } + + + private String resolveCtxVars(String key, + SvcLogicContext ctx) { + if (key == null) { + return (null); + } + + if (key.startsWith("'") && key.endsWith("'")) { + key = key.substring(1, key.length() - 1); + + LOG.debug("Stripped outer single quotes - key is now [" + key + "]"); + } + + String[] keyTerms = key.split("\\s+"); + + StringBuffer sqlBuffer = new StringBuffer(); + + + for (int i = 0; i < keyTerms.length; i++) { + sqlBuffer.append(resolveTerm(keyTerms[i], ctx)); + sqlBuffer.append(" "); + } + + + return (sqlBuffer.toString()); + } + + + private String resolveTerm(String term, SvcLogicContext ctx) { + if (term == null) { + return (null); + } + + LOG.debug("resolveTerm: term is " + term); + + if (term.startsWith("$") && (ctx != null)) { + // Resolve any index variables. + /* + String value = term; + String resolved = resolveCtxVariable(term.substring(1), ctx); + if(resolved != null){ + value = "'" +resolved+ "'"; + } + System.out.println("Dollar Term : " + term + " Value :"+ value); + return value; +*/ + return ("'" + resolveCtxVariable(term.substring(1), ctx) + "'"); + + } else { + return (term); + } + + } + + private String resolveCtxVariable(String ctxVarName, SvcLogicContext ctx) { + + if (ctxVarName.indexOf('[') == -1) { + // Ctx variable contains no arrays + if ("CRYPT_KEY".equals(ctxVarName)) { + + // Handle crypt key as special case. If it's set as a context variable, use it. Otherwise, use + // configured crypt key. + String cryptKey = ctx.getAttribute(ctxVarName); + if ((cryptKey != null) && (cryptKey.length() > 0)) { + return(cryptKey); + } else { + return(CRYPT_KEY); + } + + } + return (ctx.getAttribute(ctxVarName)); + } + + // Resolve any array references + StringBuffer sbuff = new StringBuffer(); + String[] ctxVarParts = ctxVarName.split("\\["); + sbuff.append(ctxVarParts[0]); + for (int i = 1; i < ctxVarParts.length; i++) { + if (ctxVarParts[i].startsWith("$")) { + int endBracketLoc = ctxVarParts[i].indexOf("]"); + if (endBracketLoc == -1) { + // Missing end bracket ... give up parsing + LOG.warn("Variable reference " + ctxVarName + + " seems to be missing a ']'"); + return (ctx.getAttribute(ctxVarName)); + } + + String idxVarName = ctxVarParts[i].substring(1, endBracketLoc); + String remainder = ctxVarParts[i].substring(endBracketLoc); + + sbuff.append("["); + sbuff.append(ctx.getAttribute(idxVarName)); + sbuff.append(remainder); + + } else { + // Index is not a variable reference + sbuff.append("["); + sbuff.append(ctxVarParts[i]); + } + } + + return (ctx.getAttribute(sbuff.toString())); + } + + +} diff --git a/appc-config/appc-data-services/provider/src/test/resources/query/message3.txt b/appc-config/appc-data-services/provider/src/test/resources/query/message3.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/resources/query/message3.txt diff --git a/appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt b/appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt diff --git a/appc-config/appc-data-services/provider/src/test/resources/svclogic.properties b/appc-config/appc-data-services/provider/src/test/resources/svclogic.properties new file mode 100644 index 000000000..02867302d --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/resources/svclogic.properties @@ -0,0 +1,33 @@ +### +# ============LICENSE_START======================================================= +# ONAP : APP-C +# ================================================================================ +# 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========================================================= +### += +org.openecomp.sdnc.sli.dbtype= +org.openecomp.sdnc.sli.jdbc.hosts= +org.openecomp.sdnc.sli.jdbc.url= +org.openecomp.sdnc.sli.jdbc.database= +org.openecomp.sdnc.sli.jdbc.user= +org.openecomp.sdnc.sli.jdbc.password= +org.openecomp.sdnc.sli.jdbc.connection.name= + +org.openecomp.sdnc.sli.jdbc.connection.timeout= +org.openecomp.sdnc.sli.jdbc.request.timeout= +org.openecomp.sdnc.sli.jdbc.limit.init= +org.openecomp.sdnc.sli.jdbc.limit.min= +org.openecomp.sdnc.sli.jdbc.limit.max= |