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>
diff --git a/appc-config/appc-data-services/.gitignore b/appc-config/appc-data-services/.gitignore
new file mode 100644
index 0000000..b83d222
--- /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 0000000..b83d222
--- /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 0000000..ca74c67
--- /dev/null
+++ b/appc-config/appc-data-services/features/pom.xml
@@ -0,0 +1,112 @@
+<?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>
+ <artifactId>appc-config-data-services</artifactId>
+ <groupId>org.openecomp.appc</groupId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>appc-config-data-services-features</artifactId>
+ <name>APPC Data Services Plugin - Features</name>
+
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config-data-services-provider</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>features-mdsal</artifactId>
+ <version>${odl.mdsal.version}</version>
+ <classifier>features</classifier>
+ <type>xml</type>
+
+ <scope>runtime</scope>
+ </dependency>
+
+
+ <!-- dependency for opendaylight-karaf-empty for use by testing -->
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>opendaylight-karaf-empty</artifactId>
+ <version>${odl.karaf.empty.distro.version}</version>
+ <type>zip</type>
+ </dependency>
+
+
+ <dependency>
+ <!-- Required for launching the feature tests -->
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>features-test</artifactId>
+ <version>${odl.commons.opendaylight.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>true</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter</id>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- launches the feature test, which validates that your karaf feature
+ can be installed inside of a karaf container. It doesn't validate that your
+ functionality works correctly, just that you have all of the dependent bundles
+ defined correctly. <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.16</version> <configuration> <systemPropertyVariables> <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId>
+ <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
+ <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version>
+ </systemPropertyVariables> <dependenciesToScan> <dependency>org.opendaylight.yangtools:features-test</dependency>
+ </dependenciesToScan> </configuration> </plugin> -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/classes/${features.file}</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
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 0000000..296a509
--- /dev/null
+++ b/appc-config/appc-data-services/features/src/main/resources/features.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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=========================================================
+ -->
+
+
+<features name="appc-config-data-services-${project.version}"
+ xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+
+ <repository>mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.version}/xml/features</repository>
+
+ <feature name='appc-config-data-services' description="Application Controller Config Data Service"
+ version='${project.version}'>
+ <!-- Most applications will have a dependency on the ODL MD-SAL Broker -->
+ <feature version="${broker-mdsal.version}">odl-mdsal-broker</feature>
+
+ <feature version="${sdnc.dblib.version}">sdnc-dblib</feature>
+ <feature version="${sdnc.sli.version}">sdnc-sli</feature>
+ <feature version="${openecomp.sdnc.sql-resource.version}">sdnc-sql-resource</feature>
+
+ <bundle>mvn:commons-lang/commons-lang/2.6</bundle>
+
+ <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle>
+
+ <bundle>wrap:mvn:com.att.eelf/eelf-core/${eelf.version}</bundle>
+ <bundle>mvn:ch.qos.logback/logback-core/${logback.version}</bundle>
+ <bundle>mvn:ch.qos.logback/logback-classic/${logback.version}</bundle>
+ <bundle>mvn:org.openecomp.appc/appc-data-services-provider/${project.version}</bundle>
+ </feature>
+</features>
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 0000000..eaed61a
--- /dev/null
+++ b/appc-config/appc-data-services/installer/pom.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START=======================================================
+ APPC
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ Copyright (C) 2017 Amdocs
+ ================================================================================
+ 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.
+ -->
+<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-installer</artifactId>
+ <name>Config Component Data Services - Installer</name>
+ <packaging>pom</packaging>
+ <properties>
+ <application.name>appc-config-data-services</application.name>
+ <features.boot>appc-config-data-services</features.boot>
+ <features.repositories>mvn:org.openecomp.appc/appc-config-data-services-features/${project.version}/xml/features</features.repositories>
+ <include.transitive.dependencies>false</include.transitive.dependencies>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config-data-services-features</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config-data-services-provider</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>maven-repo-zip</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <attach>false</attach>
+ <finalName>stage/${application.name}-${project.version}</finalName>
+ <descriptors>
+ <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installer-zip</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <attach>true</attach>
+ <finalName>${application.name}-${project.version}</finalName>
+ <descriptors>
+ <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <phase>prepare-package</phase>
+ <configuration>
+ <transitive>false</transitive>
+ <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <useRepositoryLayout>true</useRepositoryLayout>
+ <addParentPoms>false</addParentPoms>
+ <copyPom>false</copyPom>
+ <excludeGroupIds>org.opendaylight</excludeGroupIds>
+ <scope>provided</scope>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-version</id>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <!-- here the phase you need -->
+ <phase>validate</phase>
+ <configuration>
+ <outputDirectory>${basedir}/target/stage</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources/scripts</directory>
+ <includes>
+ <include>install-feature.sh</include>
+ </includes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
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 0000000..8769cdb
--- /dev/null
+++ b/appc-config/appc-data-services/installer/src/assembly/assemble_installer_zip.xml
@@ -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=========================================================
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>data-services</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <!-- we want "system" and related files right at the root level
+ as this file is suppose to be unzip on top of a karaf
+ distro. -->
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <fileSets>
+ <fileSet>
+ <directory>target/stage/</directory>
+ <outputDirectory>${application.name}</outputDirectory>
+ <fileMode>755</fileMode>
+ <includes>
+ <include>*.sh</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/stage/</directory>
+ <outputDirectory>${application.name}</outputDirectory>
+ <fileMode>644</fileMode>
+ <excludes>
+ <exclude>*.sh</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
+
+
+
+</assembly>
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 0000000..afc6ce3
--- /dev/null
+++ b/appc-config/appc-data-services/installer/src/assembly/assemble_mvnrepo_zip.xml
@@ -0,0 +1,47 @@
+<!--
+ ============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.
+ -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>data-services</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <!-- we want "system" and related files right at the root level
+ as this file is suppose to be unzip on top of a karaf
+ distro. -->
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <fileSets>
+ <fileSet>
+ <directory>target/assembly/</directory>
+ <outputDirectory>.</outputDirectory>
+ <excludes>
+ </excludes>
+ </fileSet>
+ </fileSets>
+
+</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 0000000..d3d2ea6
--- /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 0000000..bca3ad0
--- /dev/null
+++ b/appc-config/appc-data-services/pom.xml
@@ -0,0 +1,48 @@
+<?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/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>pom</packaging>
+ <artifactId>appc-config-data-services</artifactId>
+
+ <name>APPC Data Services for Node</name>
+ <description>Common Utilities for DG</description>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config-data-services-features</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-config-data-services-provider</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+
+ </dependencyManagement>
+
+
+ <modules>
+ <module>provider</module>
+ <module>features</module>
+ <module>installer</module>
+ </modules>
+
+</project>
diff --git a/appc-config/appc-data-services/provider/.gitignore b/appc-config/appc-data-services/provider/.gitignore
new file mode 100644
index 0000000..b83d222
--- /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 0000000..9de2e7b
--- /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 0000000..0ccc2b7
--- /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 0000000..87e0f2c
--- /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 0000000..3ec42f6
--- /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 0000000..1f920be
--- /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 0000000..9424939
--- /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 0000000..b8daeeb
--- /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 0000000..386b9f9
--- /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 0000000..9959349
--- /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 0000000..e69de29
--- /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 0000000..e69de29
--- /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 0000000..0286730
--- /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 14c844d..3aa0513 100644
--- a/appc-config/pom.xml
+++ b/appc-config/pom.xml
@@ -90,6 +90,7 @@
<modules>
<module>appc-config-params</module>
<module>appc-encryption-tool</module>
+ <module>appc-data-services</module>
</modules>
</project>
diff --git a/pom.xml b/pom.xml
index c1209f4..38f37c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -519,7 +519,7 @@
</dependency>
</dependencies>
</plugin>
- <!-- license plugin -->
+ <!-- license plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>