From 86011b92947fdb0805623a25c893cd59128ec40e Mon Sep 17 00:00:00 2001 From: Skip Wonnell Date: Tue, 15 Aug 2017 17:05:27 -0500 Subject: 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 --- appc-config/appc-data-services/.gitignore | 1 + appc-config/appc-data-services/features/.gitignore | 1 + appc-config/appc-data-services/features/pom.xml | 112 +++ .../features/src/main/resources/features.xml | 47 ++ appc-config/appc-data-services/installer/pom.xml | 148 ++++ .../src/assembly/assemble_installer_zip.xml | 59 ++ .../src/assembly/assemble_mvnrepo_zip.xml | 47 ++ .../src/main/resources/scripts/install-feature.sh | 40 ++ appc-config/appc-data-services/pom.xml | 48 ++ appc-config/appc-data-services/provider/.gitignore | 1 + appc-config/appc-data-services/provider/pom.xml | 155 +++++ .../data/services/AppcDataServiceActivator.java | 59 ++ .../data/services/AppcDataServiceConstant.java | 46 ++ .../appc/data/services/db/DGGeneralDBService.java | 443 ++++++++++++ .../appc/data/services/db/GeneralDataService.java | 80 +++ .../data/services/node/ConfigResourceNode.java | 757 +++++++++++++++++++++ .../appc/data/services/utils/EscapeUtils.java | 39 ++ .../data/services/db/TestDGGeneralDBService.java | 29 + .../appc/data/services/db/TestSQLSaveQuery.java | 178 +++++ .../provider/src/test/resources/query/message3.txt | 0 .../src/test/resources/query/sampledata.txt | 0 .../src/test/resources/svclogic.properties | 33 + appc-config/pom.xml | 1 + 23 files changed, 2324 insertions(+) create mode 100644 appc-config/appc-data-services/.gitignore create mode 100644 appc-config/appc-data-services/features/.gitignore create mode 100644 appc-config/appc-data-services/features/pom.xml create mode 100644 appc-config/appc-data-services/features/src/main/resources/features.xml create mode 100644 appc-config/appc-data-services/installer/pom.xml create mode 100644 appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml create mode 100644 appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml create mode 100644 appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh create mode 100644 appc-config/appc-data-services/pom.xml create mode 100644 appc-config/appc-data-services/provider/.gitignore create mode 100644 appc-config/appc-data-services/provider/pom.xml create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceActivator.java create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/AppcDataServiceConstant.java create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/DGGeneralDBService.java create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/db/GeneralDataService.java create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/node/ConfigResourceNode.java create mode 100644 appc-config/appc-data-services/provider/src/main/java/org/openecomp/appc/data/services/utils/EscapeUtils.java create mode 100644 appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestDGGeneralDBService.java create mode 100644 appc-config/appc-data-services/provider/src/test/java/org/openecomp/appc/data/services/db/TestSQLSaveQuery.java create mode 100644 appc-config/appc-data-services/provider/src/test/resources/query/message3.txt create mode 100644 appc-config/appc-data-services/provider/src/test/resources/query/sampledata.txt create mode 100644 appc-config/appc-data-services/provider/src/test/resources/svclogic.properties (limited to 'appc-config') diff --git a/appc-config/appc-data-services/.gitignore b/appc-config/appc-data-services/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-config/appc-data-services/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-config/appc-data-services/features/.gitignore b/appc-config/appc-data-services/features/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-config/appc-data-services/features/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-config/appc-data-services/features/pom.xml b/appc-config/appc-data-services/features/pom.xml new file mode 100644 index 000000000..ca74c67e9 --- /dev/null +++ b/appc-config/appc-data-services/features/pom.xml @@ -0,0 +1,112 @@ + + + 4.0.0 + + appc-config-data-services + org.openecomp.appc + 1.1.0-SNAPSHOT + + appc-config-data-services-features + APPC Data Services Plugin - Features + + jar + + + + org.openecomp.appc + appc-config-data-services-provider + ${project.version} + + + + commons-lang + commons-lang + 2.6 + compile + + + + org.opendaylight.mdsal + features-mdsal + ${odl.mdsal.version} + features + xml + + runtime + + + + + + org.opendaylight.controller + opendaylight-karaf-empty + ${odl.karaf.empty.distro.version} + zip + + + + + + org.opendaylight.odlparent + features-test + ${odl.commons.opendaylight.version} + test + + + + + + + + true + src/main/resources + + + + + org.apache.maven.plugins + maven-resources-plugin + + + filter + + resources + + generate-resources + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + + attach-artifact + + package + + + + ${project.build.directory}/classes/${features.file} + xml + features + + + + + + + + + diff --git a/appc-config/appc-data-services/features/src/main/resources/features.xml b/appc-config/appc-data-services/features/src/main/resources/features.xml new file mode 100644 index 000000000..296a509be --- /dev/null +++ b/appc-config/appc-data-services/features/src/main/resources/features.xml @@ -0,0 +1,47 @@ + + + + + + + mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.version}/xml/features + + + + odl-mdsal-broker + + sdnc-dblib + sdnc-sli + sdnc-sql-resource + + mvn:commons-lang/commons-lang/2.6 + + mvn:commons-collections/commons-collections/3.2.1 + + wrap:mvn:com.att.eelf/eelf-core/${eelf.version} + mvn:ch.qos.logback/logback-core/${logback.version} + mvn:ch.qos.logback/logback-classic/${logback.version} + mvn:org.openecomp.appc/appc-data-services-provider/${project.version} + + diff --git a/appc-config/appc-data-services/installer/pom.xml b/appc-config/appc-data-services/installer/pom.xml new file mode 100644 index 000000000..eaed61abb --- /dev/null +++ b/appc-config/appc-data-services/installer/pom.xml @@ -0,0 +1,148 @@ + + + + 4.0.0 + + org.openecomp.appc + appc-config-data-services + 1.1.0-SNAPSHOT + + + appc-config-data-services-installer + Config Component Data Services - Installer + pom + + appc-config-data-services + appc-config-data-services + mvn:org.openecomp.appc/appc-config-data-services-features/${project.version}/xml/features + false + + + + org.openecomp.appc + appc-config-data-services-features + features + xml + + + * + * + + + + + org.openecomp.appc + appc-config-data-services-provider + 1.1.0-SNAPSHOT + + + + + + maven-assembly-plugin + + + maven-repo-zip + + single + + package + + false + false + stage/${application.name}-${project.version} + + src/assembly/assemble_mvnrepo_zip.xml + + + + + installer-zip + + single + + package + + false + true + ${application.name}-${project.version} + + src/assembly/assemble_installer_zip.xml + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + + copy-dependencies + + prepare-package + + false + ${project.build.directory}/assembly/system + false + true + true + true + false + false + org.opendaylight + provided + + + + + + maven-resources-plugin + + + copy-version + + copy-resources + + + validate + + ${basedir}/target/stage + + + src/main/resources/scripts + + install-feature.sh + + true + + + + + + + + + diff --git a/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml b/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml new file mode 100644 index 000000000..8769cdb36 --- /dev/null +++ b/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml @@ -0,0 +1,59 @@ + + + + + + data-services + + zip + + + + false + + + + target/stage/ + ${application.name} + 755 + + *.sh + + + + target/stage/ + ${application.name} + 644 + + *.sh + + + + + + + diff --git a/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml b/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml new file mode 100644 index 000000000..afc6ce3d7 --- /dev/null +++ b/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml @@ -0,0 +1,47 @@ + + + + + + data-services + + zip + + + + false + + + + target/assembly/ + . + + + + + + diff --git a/appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh b/appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh new file mode 100644 index 000000000..d3d2ea6e7 --- /dev/null +++ b/appc-config/appc-data-services/installer/src/main/resources/scripts/install-feature.sh @@ -0,0 +1,40 @@ +### +# ============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========================================================= +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +### + +#!/bin/bash + +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client} +ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"} +INSTALLERDIR=$(dirname $0) + +REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip + +if [ -f ${REPOZIP} ] +then + unzip -n -d ${ODL_HOME} ${REPOZIP} +else + echo "ERROR : repo zip ($REPOZIP) not found" + exit 1 +fi + +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot} diff --git a/appc-config/appc-data-services/pom.xml b/appc-config/appc-data-services/pom.xml new file mode 100644 index 000000000..bca3ad05d --- /dev/null +++ b/appc-config/appc-data-services/pom.xml @@ -0,0 +1,48 @@ + + + + org.openecomp.appc + appc-config + 1.1.0-SNAPSHOT + + + 4.0.0 + pom + appc-config-data-services + + APPC Data Services for Node + Common Utilities for DG + + + UTF-8 + + + + + + org.openecomp.appc + appc-config-data-services-features + features + xml + ${project.version} + + + + org.openecomp.appc + appc-config-data-services-provider + ${project.version} + + + + + + + + + provider + features + installer + + + 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 @@ + + + 4.0.0 + + org.openecomp.appc + appc-config-data-services + 1.1.0-SNAPSHOT + + appc-config-data-services-provider + bundle + APPC Data Services - Provider + http://maven.apache.org + + UTF-8 + + + + equinoxSDK381 + org.eclipse.osgi + ${equinox.osgi.version} + + + org.openecomp.sdnc.core + sli-provider + compile + + + org.openecomp.sdnc.adaptors + sql-resource-provider + ${openecomp.sdnc.sql-resource.version} + compile + + + + commons-io + commons-io + + + + com.att.eelf + eelf-core + + + + junit + junit + test + + + com.fasterxml.jackson.core + jackson-databind + + + + + + + maven-resources-plugin + + + copy-xsl + + copy-resources + + validate + + ${basedir}/target/templates/xslt/sbg + + + src/main/resources/xsl + + * + + true + + + + + + copy-properties + + copy-resources + + validate + + ${basedir}/target/properties/ + + + src/main/resources + + *.properties + + true + + + + + + + + org.apache.felix + maven-bundle-plugin + ${bundle.plugin.version} + true + + + appc-config-data-services + org.openecomp.appc.config.data.services.AppcDataServiceActivator + org.openecomp.appc.data.services + * + * + + ${project.basedir}/src/main/resources/META-INF + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + com.brocade.developer + + + providermodule-plugin + + + [1.2.0.100-SNAPSHOT,) + + + process + + + + + + + + + + + + + + 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 registrations = new LinkedList(); + + @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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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= diff --git a/appc-config/pom.xml b/appc-config/pom.xml index 14c844d3c..3aa0513ff 100644 --- a/appc-config/pom.xml +++ b/appc-config/pom.xml @@ -90,6 +90,7 @@ appc-config-params appc-encryption-tool + appc-data-services -- cgit 1.2.3-korg