Use ByteStream instead of FileStream 23/57123/1
authorGanesh Chandrasekaran <ganesh.c@samsung.com>
Mon, 23 Jul 2018 05:27:22 +0000 (14:27 +0900)
committerGanesh Chandrasekaran <ganesh.c@samsung.com>
Mon, 23 Jul 2018 05:27:37 +0000 (14:27 +0900)
Issue-ID: CCSDK-393

Change-Id: Id004f0bce1768e00f3e326efc204532acdb22546
Signed-off-by: Ganesh Chandrasekaran <ganesh.c@samsung.com>
24 files changed:
saltstack-adapter/pom.xml
saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
saltstack-adapter/saltstack-adapter-features/features-saltstack-adapter/pom.xml
saltstack-adapter/saltstack-adapter-features/pom.xml
saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
saltstack-adapter/saltstack-adapter-installer/pom.xml
saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_installer_zip.xml
saltstack-adapter/saltstack-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
saltstack-adapter/saltstack-adapter-provider/pom.xml
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SshConnection.java
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackResult.java
saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
saltstack-adapter/saltstack-adapter-provider/src/main/resources/org/opendaylight/blueprint/saltstack-adapter-blueprint.xml
saltstack-adapter/saltstack-adapter-provider/src/main/resources/saltstack-adapter.properties
saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
saltstack-adapter/saltstack-adapter-provider/src/test/resources/test-invalid.json
saltstack-adapter/saltstack-adapter-provider/src/test/resources/test.json

index 34688de..b216db5 100644 (file)
   ============LICENSE_END=========================================================
   -->
 
-<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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.onap.ccsdk.parent</groupId>
-    <artifactId>odlparent-lite</artifactId>
-    <version>1.1.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-  <artifactId>saltstack-adaptor</artifactId>
-  <version>0.3.0-SNAPSHOT</version>
-  <name>ccsdk-sli-adaptors :: saltstack-adapter</name>
-  <description>Abstractions to interact with Saltstack server via REST</description>
-  <packaging>pom</packaging>
-
-  <build>
-    <plugins>
-
-     <!-- Black duck plugin Not required for regular builds
-     <plugin> <groupId>com.blackducksoftware.integration</groupId> <artifactId>hub-maven-plugin</artifactId>
-           <version>1.4.0</version> <inherited>false</inherited> <configuration> <hubProjectName>${project.name}</hubProjectName>
-           <outputDirectory>${project.basedir}</outputDirectory> <deployHubBdio>false</deployHubBdio>
-           </configuration> <extensions>true</extensions>
-           <executions>
-               <execution>
-                       <id>create-bdio-file</id>
-                       <phase>package</phase>
-                       <goals>
-                               <goal>createHubOutput</goal>
-                       </goals>
-               </execution>
-           </executions>
-
-     </plugin>
-     -->
-
-    </plugins>
-  </build>
-
-  <reporting>
-    <plugins>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <additionalDependencies>
-            <additionalDependency>
-              <groupId>org.slf4j</groupId>
-              <artifactId>slf4j-api</artifactId>
-              <version>${slf4j.version}</version>
-            </additionalDependency>
-            <additionalDependency>
-              <groupId>org.antlr</groupId>
-              <artifactId>antlr4</artifactId>
-              <version>${antlr.version}</version>
-            </additionalDependency>
-            <additionalDependency>
-              <groupId>org.antlr</groupId>
-              <artifactId>antlr4-runtime</artifactId>
-              <version>4.3</version>
-            </additionalDependency>
-          </additionalDependencies>
-        </configuration>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>javadoc-no-fork</report>
-              <report>test-javadoc-no-fork</report>
-            </reports>
-          </reportSet>
-          <reportSet>
-            <id>aggregate</id>
-            <reports>
-              <report>aggregate</report>
-              <report>test-aggregate</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.3</version>
-        <reportSets>
-          <reportSet>
-            <id>aggregate</id>
-            <reports>
-              <report>aggregate</report>
-              <report>test-aggregate</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-changelog-plugin</artifactId>
-        <version>2.3</version>
-        <reportSets>
-          <reportSet>
-            <id>dual-report</id>
-            <configuration>
-              <type>range</type>
-              <range>30</range>
-            </configuration>
-            <reports>
-              <report>changelog</report>
-              <report>file-activity</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>taglist-maven-plugin</artifactId>
-        <version>2.4</version>
-      </plugin>
-    </plugins>
-
-  </reporting>
-
-  <dependencyManagement>
-    <dependencies>
-
-      <dependency>
-        <groupId>org.onap.appc</groupId>
-        <artifactId>saltstack-adapter-features</artifactId>
-        <classifier>features</classifier>
-        <type>xml</type>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.onap.appc</groupId>
-        <artifactId>saltstack-adapter-provider</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-     <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.11</version>
-        <scope>test</scope>
-    </dependency>
-
-
-    </dependencies>
-
-
-  </dependencyManagement>
-
-  <pluginRepositories>
-   <!-- Black Duck plugin dependencies -->
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+    <artifactId>saltstack-adaptor</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter</name>
+    <description>Abstractions to interact with Saltstack server via REST
+    </description>
+    <packaging>pom</packaging>
+
+    <build>
+        <plugins>
+
+            <!-- Black duck plugin Not required for regular builds
+            <plugin> <groupId>com.blackducksoftware.integration</groupId> <artifactId>hub-maven-plugin</artifactId>
+                  <version>1.4.0</version> <inherited>false</inherited> <configuration> <hubProjectName>${project.name}</hubProjectName>
+                  <outputDirectory>${project.basedir}</outputDirectory> <deployHubBdio>false</deployHubBdio>
+                  </configuration> <extensions>true</extensions>
+                  <executions>
+               <execution>
+                   <id>create-bdio-file</id>
+                   <phase>package</phase>
+                          <goals>
+                       <goal>createHubOutput</goal>
+                   </goals>
+               </execution>
+               </executions>
+
+            </plugin>
+            -->
+
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <configuration>
+                    <additionalDependencies>
+                        <additionalDependency>
+                            <groupId>org.slf4j</groupId>
+                            <artifactId>slf4j-api</artifactId>
+                            <version>${slf4j.version}</version>
+                        </additionalDependency>
+                        <additionalDependency>
+                            <groupId>org.antlr</groupId>
+                            <artifactId>antlr4</artifactId>
+                            <version>${antlr.version}</version>
+                        </additionalDependency>
+                        <additionalDependency>
+                            <groupId>org.antlr</groupId>
+                            <artifactId>antlr4-runtime</artifactId>
+                            <version>4.3</version>
+                        </additionalDependency>
+                    </additionalDependencies>
+                </configuration>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>javadoc-no-fork</report>
+                            <report>test-javadoc-no-fork</report>
+                        </reports>
+                    </reportSet>
+                    <reportSet>
+                        <id>aggregate</id>
+                        <reports>
+                            <report>aggregate</report>
+                            <report>test-aggregate</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jxr-plugin</artifactId>
+                <version>2.3</version>
+                <reportSets>
+                    <reportSet>
+                        <id>aggregate</id>
+                        <reports>
+                            <report>aggregate</report>
+                            <report>test-aggregate</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-changelog-plugin</artifactId>
+                <version>2.3</version>
+                <reportSets>
+                    <reportSet>
+                        <id>dual-report</id>
+                        <configuration>
+                            <type>range</type>
+                            <range>30</range>
+                        </configuration>
+                        <reports>
+                            <report>changelog</report>
+                            <report>file-activity</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>taglist-maven-plugin</artifactId>
+                <version>2.4</version>
+            </plugin>
+        </plugins>
+
+    </reporting>
+
+    <dependencyManagement>
+        <dependencies>
+
+            <dependency>
+                <groupId>org.onap.appc</groupId>
+                <artifactId>saltstack-adapter-features</artifactId>
+                <classifier>features</classifier>
+                <type>xml</type>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.onap.appc</groupId>
+                <artifactId>saltstack-adapter-provider</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.11</version>
+                <scope>test</scope>
+            </dependency>
+
+
+        </dependencies>
+
+
+    </dependencyManagement>
+
+    <pluginRepositories>
+        <!-- Black Duck plugin dependencies -->
         <pluginRepository>
             <id>JCenter</id>
             <name>JCenter Repository</name>
             <url>http://jcenter.bintray.com</url>
         </pluginRepository>
 
-  </pluginRepositories>
+    </pluginRepositories>
 
-  <modules>
-    <module>saltstack-adapter-provider</module>
-    <module>saltstack-adapter-features</module>
-    <module>saltstack-adapter-installer</module>
-  </modules>
+    <modules>
+        <module>saltstack-adapter-provider</module>
+        <module>saltstack-adapter-features</module>
+        <module>saltstack-adapter-installer</module>
+    </modules>
 </project>
index cf151ca..d90b397 100644 (file)
@@ -1,12 +1,14 @@
 <?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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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.onap.ccsdk.parent</groupId>
         <artifactId>single-feature-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
-        <relativePath />
+        <relativePath/>
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
index 1b482d0..703949c 100755 (executable)
@@ -1,12 +1,14 @@
 <?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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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.onap.ccsdk.parent</groupId>
         <artifactId>feature-repo-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
-        <relativePath />
+        <relativePath/>
     </parent>
 
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
@@ -14,7 +16,8 @@
     <version>0.3.0-SNAPSHOT</version>
     <packaging>feature</packaging>
 
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
 
     <dependencies>
         <dependency>
index 6f765c8..7f78859 100644 (file)
@@ -10,8 +10,9 @@
     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========================================================= -->
-<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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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>odlparent-lite</artifactId>
@@ -22,7 +23,8 @@
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
     <artifactId>saltstack-adapter-features</artifactId>
     <version>0.3.0-SNAPSHOT</version>
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
 
     <packaging>pom</packaging>
 
index 6eef6d2..abdcb5e 100644 (file)
   -->
 
 
-<features name="ccsdk-saltstack-adapter-${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">     
+<features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          name="ccsdk-saltstack-adapter-${project.version}"
+          xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          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.features.version}/xml/features</repository>
-    
-    <feature name='ccsdk-saltstack-adapter' description="ccsdk-saltstack-adapter" version='${project.version}'>
+    <repository>
+        mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.features.version}/xml/features
+    </repository>
+
+    <feature name='ccsdk-saltstack-adapter'
+             description="ccsdk-saltstack-adapter" version='${project.version}'>
         <feature version="${odl.mdsal.version}">odl-mdsal-broker</feature>
         <feature>sdnc-sli</feature>
-         <bundle dependency="true">mvn:org.onap.appc/appc-common/${project.version}</bundle>
-        <bundle>mvn:org.onap.ccsdk.sli.adaptors/saltstack-adapter-provider/${project.version}</bundle>
+        <bundle dependency="true">
+            mvn:org.onap.appc/appc-common/${project.version}
+        </bundle>
+        <bundle>
+            mvn:org.onap.ccsdk.sli.adaptors/saltstack-adapter-provider/${project.version}
+        </bundle>
     </feature>
 
 </features>
index b600aed..db72000 100644 (file)
@@ -22,7 +22,9 @@
 
   ============LICENSE_END=========================================================
   -->
-<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">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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.onap.ccsdk.parent</groupId>
     <groupId>org.onap.ccsdk.sli.adaptors</groupId>
     <artifactId>saltstack-adapter-installer</artifactId>
     <version>0.3.0-SNAPSHOT</version>
-    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
     <packaging>pom</packaging>
     <properties>
         <application.name>ccsdk-saltstack-adapter</application.name>
         <features.boot>${application.name}</features.boot>
-        <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features</features.repositories>
+        <features.repositories>
+            mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features
+        </features.repositories>
         <include.transitive.dependencies>false</include.transitive.dependencies>
     </properties>
     <dependencies>
                         </goals>
                         <phase>package</phase>
                         <configuration>
-                               <appendAssemblyId>true</appendAssemblyId>
+                            <appendAssemblyId>true</appendAssemblyId>
                             <attach>false</attach>
-                            <finalName>stage/${application.name}-${project.version}</finalName>
+                            <finalName>
+                                stage/${application.name}-${project.version}
+                            </finalName>
                             <descriptors>
-                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+                                <descriptor>
+                                    src/assembly/assemble_mvnrepo_zip.xml
+                                </descriptor>
                             </descriptors>
                         </configuration>
                     </execution>
                         </goals>
                         <phase>package</phase>
                         <configuration>
-                               <appendAssemblyId>false</appendAssemblyId>
+                            <appendAssemblyId>false</appendAssemblyId>
                             <attach>true</attach>
-                            <finalName>${application.name}-${project.version}</finalName>
+                            <finalName>${application.name}-${project.version}
+                            </finalName>
                             <descriptors>
-                                <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
+                                <descriptor>
+                                    src/assembly/assemble_installer_zip.xml
+                                </descriptor>
                             </descriptors>
                         </configuration>
                     </execution>
                         <phase>prepare-package</phase>
                         <configuration>
                             <transitive>false</transitive>
-                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+                            <outputDirectory>
+                                ${project.build.directory}/assembly/system
+                            </outputDirectory>
                             <overWriteReleases>false</overWriteReleases>
                             <overWriteSnapshots>true</overWriteSnapshots>
                             <overWriteIfNewer>true</overWriteIfNewer>
                         <!-- here the phase you need -->
                         <phase>validate</phase>
                         <configuration>
-                            <outputDirectory>${basedir}/target/stage</outputDirectory>
+                            <outputDirectory>${basedir}/target/stage
+                            </outputDirectory>
                             <resources>
                                 <resource>
-                                    <directory>src/main/resources/scripts</directory>
+                                    <directory>src/main/resources/scripts
+                                    </directory>
                                     <includes>
                                         <include>install-feature.sh</include>
                                     </includes>
index 7d212cb..d307e4f 100644 (file)
 <!-- 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>adapter</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>
-
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+        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>adapter</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>
index 93df660..1b1bf0b 100644 (file)
 <!-- 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>repo</id>
-       <formats>
-               <format>zip</format>
-       </formats>
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+        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>repo</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>
+    <!--  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>
+    <fileSets>
+        <fileSet>
+            <directory>target/assembly/</directory>
+            <outputDirectory>.</outputDirectory>
+            <excludes>
+            </excludes>
+        </fileSet>
+    </fileSets>
 
 </assembly>
index c93558e..81e9ba9 100644 (file)
        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========================================================= -->
-<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.onap.ccsdk.parent</groupId>
-               <artifactId>binding-parent</artifactId>
-               <version>1.1.0-SNAPSHOT</version>
-               <relativePath />
-       </parent>
-
-       <groupId>org.onap.ccsdk.sli.adaptors</groupId>
-       <artifactId>saltstack-adapter-provider</artifactId>
-       <version>0.3.0-SNAPSHOT</version>
-       <packaging>bundle</packaging>
-       <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}</name>
-
-       <dependencies>
-               <dependency>
-                       <groupId>com.att.eelf</groupId>
-                       <artifactId>eelf-core</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>commons-codec</groupId>
-                       <artifactId>commons-codec</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>commons-logging</groupId>
-                       <artifactId>commons-logging</artifactId>
-                       <version>1.2</version>
-               </dependency>
-
-               <!-- Needed to run SSH -->
-               <dependency>
-                       <groupId>org.apache.sshd</groupId>
-                       <artifactId>sshd-core</artifactId>
-                       <version>0.12.0</version>
-                       <scope>provided</scope>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.onap.appc</groupId>
-                       <artifactId>appc-common</artifactId>
-                       <version>1.4.0-SNAPSHOT</version>
-               </dependency>
-
-               <!-- Needed to run test cases -->
-               <dependency>
-                       <groupId>org.glassfish.jersey.core</groupId>
-                       <artifactId>jersey-common</artifactId>
-                       <version>2.9.1</version>
-                       <scope>test</scope>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.codehaus.jackson</groupId>
-                       <artifactId>jackson-jaxrs</artifactId>
-                       <version>1.9.13</version>
-                       <scope>test</scope>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.apache.commons</groupId>
-                       <artifactId>commons-io</artifactId>
-                       <version>1.3.2</version>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.codehaus.jettison</groupId>
-                       <artifactId>jettison</artifactId>
-                       <scope>provided</scope>
-               </dependency>
-
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.mockito</groupId>
-                       <artifactId>mockito-core</artifactId>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.onap.ccsdk.sli.core</groupId>
-                       <artifactId>sli-common</artifactId>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.onap.ccsdk.sli.core</groupId>
-                       <artifactId>sli-provider</artifactId>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.core</artifactId>
-                       <scope>provided</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>slf4j-api</artifactId>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>jcl-over-slf4j</artifactId>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-               </dependency>
-
-
-               <dependency>
-                       <groupId>com.google.guava</groupId>
-                       <artifactId>guava</artifactId>
-               </dependency>
-
-
-       </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <Export-Service>org.onap.appc.adapter.ssh.SshAdapter</Export-Service>
-                                               <Private-Package>org.onap.appc.adapter.ssh.impl.*</Private-Package>
-                                               <Import-Package>!org.apache.log,!org.apache.commons.logging,!groovy.lang,!javax.jms,!org.codehaus.commons.compiler,!org.codehaus.groovy.*,!org.codehaus.janino,!com.ibm.icu.*,!com.sun.faces.*,!org.jasypt.*,*</Import-Package>
-                                               <Embed-Dependency>!dblib-provider,jasypt,eelf-core,logback-core,logback-classic;scope=compile|runtime;inline=false</Embed-Dependency>
-                                               <Embed-Transitive>true</Embed-Transitive>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         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.onap.ccsdk.parent</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.ccsdk.sli.adaptors</groupId>
+    <artifactId>saltstack-adapter-provider</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>ccsdk-sli-adaptors :: saltstack-adapter :: ${project.artifactId}
+    </name>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.att.eelf</groupId>
+            <artifactId>eelf-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.2</version>
+        </dependency>
+
+        <!-- Needed to run SSH -->
+        <dependency>
+            <groupId>org.apache.sshd</groupId>
+            <artifactId>sshd-core</artifactId>
+            <version>0.12.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.appc</groupId>
+            <artifactId>appc-common</artifactId>
+            <version>1.3.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.appc</groupId>
+            <artifactId>appc-ssh-adapter-api</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Needed to run test cases -->
+        <dependency>
+            <groupId>org.glassfish.jersey.core</groupId>
+            <artifactId>jersey-common</artifactId>
+            <version>2.9.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-jaxrs</artifactId>
+            <version>1.9.13</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-common</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-provider</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+
+    </dependencies>
+
 </project>
index f6b3b70..6e5feb4 100644 (file)
@@ -26,18 +26,11 @@ package org.onap.ccsdk.sli.adaptors.saltstack.impl;
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.RandomStringUtils;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResult;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResultCodes;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
 
 /**
  * Returns a custom SSH client
@@ -98,11 +91,11 @@ public class ConnectionBuilder {
      * @return command execution status
      */
     public SaltstackResult connectNExecute(String cmd, int retryCount, int retryDelay, long execTimeout)
-                            throws IOException{
+            throws IOException {
 
         SaltstackResult result = new SaltstackResult();
-        OutputStream out = null;
-        OutputStream errs = null;
+        ByteArrayOutputStream out = null;
+        ByteArrayOutputStream errs = null;
         if (execTimeout >= 0) {
             sshConnection.setExecTimeout(execTimeout);
         }
@@ -116,69 +109,59 @@ public class ConnectionBuilder {
             if (result.getStatusCode() != SaltstackResultCodes.SUCCESS.getValue()) {
                 return result;
             }
-            String outFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
-            String errFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
-            out = new FileOutputStream(outFilePath);
-            errs = new FileOutputStream(errFilePath);
+            out = new ByteArrayOutputStream();
+            errs = new ByteArrayOutputStream();
             result = sshConnection.execCommand(cmd, out, errs, result);
             sshConnection.disconnect();
             if (result.getSshExitStatus() != 0) {
-                return sortExitStatus(result.getSshExitStatus(), errFilePath, cmd);
+                return sortExitStatus(result.getSshExitStatus(), errs.toString(), cmd);
             }
             if (result.getStatusCode() != SaltstackResultCodes.SUCCESS.getValue()) {
                 return result;
             }
             result.setStatusMessage("Success");
-            result.setOutputFileName(outFilePath);
+            result.setOutputMessage(out);
         } catch (Exception io) {
             logger.error("Caught Exception", io);
             result.setStatusCode(SaltstackResultCodes.UNKNOWN_EXCEPTION.getValue());
             result.setStatusMessage(io.getMessage());
         } finally {
-            if( out != null )
+            if (out != null) {
                 out.close();
-            if( errs != null )
+            }
+            if (errs != null) {
                 errs.close();
+            }
         }
         return result;
     }
 
-    public SaltstackResult sortExitStatus(int exitStatus, String errFilePath, String cmd) {
+    public SaltstackResult sortExitStatus(int exitStatus, String errMess, String cmd) {
         SaltstackResult result = new SaltstackResult();
-        String err = "";
-        StringWriter writer = new StringWriter();
-        try {
-            IOUtils.copy(new FileInputStream(new File(errFilePath)), writer, "UTF-8");
-            err = writer.toString();
-        } catch (FileNotFoundException e){
-            logger.info("Error stream file doesn't exist");
-        } catch (IOException e){
-            logger.info("Error stream file doesn't exist");
-        }
         if (exitStatus == 255 || exitStatus == 1) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Malformed configuration. " + err;
+                    "Malformed configuration. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.INVALID_COMMAND.getValue());
             result.setStatusMessage(errMessage);
         } else if (exitStatus == 5 || exitStatus == 65) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Host not allowed to connect. " + err;
+                    "Host not allowed to connect. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.USER_UNAUTHORIZED.getValue());
             result.setStatusMessage(errMessage);
         } else if (exitStatus == 67 || exitStatus == 73) {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
                     + "]. Exit Code " + exitStatus + " and Error message : " +
-                    "Key exchange failed. " + err;
+                    "Key exchange failed. " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.CERTIFICATE_ERROR.getValue());
             result.setStatusMessage(errMessage);
         } else {
             String errMessage = "Error executing command [" + cmd + "] over SSH [" + sshConnection.toString()
-                    + "]. Exit Code " + exitStatus + " and Error message : " + err;
+                    + "]. Exit Code " + exitStatus + " and Error message : " + errMess;
             logger.error(errMessage);
             result.setStatusCode(SaltstackResultCodes.UNKNOWN_EXCEPTION.getValue());
             result.setStatusMessage(errMessage);
index 5e0cc77..a48b67a 100644 (file)
@@ -108,11 +108,11 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
     /**
      * This default constructor is used as a work around because the activator wasn't getting called
      */
-    public SaltstackAdapterImpl() throws SvcLogicException{
+    public SaltstackAdapterImpl() throws SvcLogicException {
         initialize(new SaltstackAdapterPropertiesProviderImpl());
     }
 
-    public SaltstackAdapterImpl(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException{
+    public SaltstackAdapterImpl(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
         initialize(propProvider);
     }
 
@@ -152,7 +152,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
     /**
      * initialize the Saltstack adapter based on default and over-ride configuration data
      */
-    private void initialize(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException{
+    private void initialize(SaltstackAdapterPropertiesProvider propProvider) throws SvcLogicException {
 
 
         Properties props = propProvider.getProperties();
@@ -176,7 +176,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
                 logger.info("Creating ssh client connection");
                 // set path to keystore file
                 String sshHost = props.getProperty(SS_SERVER_HOSTNAME);
-                String sshPort = reqServerPort(props) ;
+                String sshPort = reqServerPort(props);
                 String sshUserName = props.getProperty(SS_SERVER_USERNAME);
                 String sshPassword = props.getProperty(SS_SERVER_PASSWD);
                 sshClient = new ConnectionBuilder(sshHost, sshPort, sshUserName, sshPassword);
@@ -212,8 +212,9 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
 
     private String reqServerPort(Properties props) {
         // use default port if null
-        if (props.getProperty(SS_SERVER_PORT) == null)
+        if (props.getProperty(SS_SERVER_PORT) == null) {
             return "22";
+        }
         return props.getProperty(SS_SERVER_PORT);
     }
 
@@ -235,11 +236,11 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
     private String parseEnvParam(JSONObject envParams) {
         StringBuilder envParamBuilder = new StringBuilder();
         if (envParams != null) {
-            for(Object key : envParams.keySet()) {
-                if(envParamBuilder.length() > 0) {
+            for (Object key : envParams.keySet()) {
+                if (envParamBuilder.length() > 0) {
                     envParamBuilder.append(", ");
                 }
-                envParamBuilder.append(key+"="+envParams.get((String) key));
+                envParamBuilder.append(key + "=" + envParams.get((String) key));
                 logger.info("EnvParameters : " + envParamBuilder);
             }
         }
@@ -249,7 +250,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
     private String parseFileParam(JSONObject fileParams) {
         StringBuilder fileParamBuilder = new StringBuilder();
         if (fileParams != null) {
-            for(Object key : fileParams.keySet()) {
+            for (Object key : fileParams.keySet()) {
                 fileParamBuilder.append("echo -e \"" + fileParams.get((String) key) + "\" > /srv/salt/" + key).append("; ");
                 logger.info("FileParameters : " + fileParamBuilder);
             }
@@ -258,7 +259,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
     }
 
     private String putToCommands(SvcLogicContext ctx, String slsFileName,
-                                    String applyTo, JSONObject envParams, JSONObject fileParams) throws SvcLogicException {
+                                 String applyTo, JSONObject envParams, JSONObject fileParams) throws SvcLogicException {
 
         StringBuilder constructedCommand = new StringBuilder();
         try {
@@ -283,10 +284,10 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
 
         } catch (FileNotFoundException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input SLS file " +
-                    "not found in path : " + slsFileName+". "+ e.getMessage());
+                    "not found in path : " + slsFileName + ". " + e.getMessage());
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input SLS file " +
-                    "error in path : " + slsFileName +". "+ e.getMessage());
+                    "error in path : " + slsFileName + ". " + e.getMessage());
         } catch (StringIndexOutOfBoundsException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(), "Input file " +
                     "is not of type .sls");
@@ -294,10 +295,14 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
         return constructedCommand.toString();
     }
 
-    private String stripExtension (String str) {
-        if (str == null) return null;
+    private String stripExtension(String str) {
+        if (str == null) {
+            return null;
+        }
         int pos = str.lastIndexOf(".");
-        if (pos == -1) return str;
+        if (pos == -1) {
+            return str;
+        }
         return str.substring(0, pos);
     }
 
@@ -348,7 +353,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
             checkResponseStatus(testResult, ctx, reqID, slsExec);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
     }
 
@@ -379,7 +384,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
             checkResponseStatus(testResult, ctx, reqID, true);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         } catch (JSONException e) {
             doFailure(ctx, SaltstackResultCodes.INVALID_COMMAND.getValue(), e.getMessage());
         }
@@ -412,13 +417,13 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
             checkResponseStatus(testResult, ctx, reqID, true);
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
     }
 
     public SaltstackResult execCommand(SvcLogicContext ctx, Map<String, String> params, String commandToExecute,
                                        long execTimeout)
-                                    throws SvcLogicException{
+            throws SvcLogicException {
 
         SaltstackResult testResult = new SaltstackResult();
         try {
@@ -439,7 +444,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
             }
         } catch (IOException e) {
             doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
-                      "IOException in file stream : "+ e.getMessage());
+                      "IOException in file stream : " + e.getMessage());
         }
         return testResult;
     }
index 62724c3..71ca5cf 100644 (file)
@@ -163,19 +163,19 @@ class SshConnection {
 
     public void setExecTimeout(long timeout) {
         //convert seconds to milliseconds
-        this.timeout = timeout*1000;
+        this.timeout = timeout * 1000;
     }
 
-    public SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err, SaltstackResult result ) {
+    public SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err, SaltstackResult result) {
         return execCommand(cmd, out, err, false, result);
     }
 
-    public SaltstackResult execCommandWithPty(String cmd, OutputStream out, SaltstackResult result ) {
+    public SaltstackResult execCommandWithPty(String cmd, OutputStream out, SaltstackResult result) {
         return execCommand(cmd, out, out, true, result);
     }
 
     private SaltstackResult execCommand(String cmd, OutputStream out, OutputStream err,
-                                        boolean usePty, SaltstackResult result ) {
+                                        boolean usePty, SaltstackResult result) {
 
         try {
             if (logger.isDebugEnabled()) {
index 8548efc..2d810ae 100644 (file)
@@ -31,16 +31,14 @@ package org.onap.ccsdk.sli.adaptors.saltstack.model;
 
 import com.google.common.base.Strings;
 import org.json.JSONException;
-import org.json.JSONArray;
 import org.json.JSONObject;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
@@ -79,8 +77,9 @@ public class SaltstackMessageParser {
      */
     public String reqPortResult(Map<String, String> params) throws SvcLogicException {
         // use default port if null
-        if (params.get(SS_AGENT_PORT_KEY) == null)
+        if (params.get(SS_AGENT_PORT_KEY) == null) {
             return "22";
+        }
         return params.get(SS_AGENT_PORT_KEY);
     }
 
@@ -200,7 +199,7 @@ public class SaltstackMessageParser {
     public JSONObject reqEnvParameters(Map<String, String> params) throws JSONException {
 
         JSONObject jsonPayload = new JSONObject();
-        final String[] optionalTestParam = { SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY };
+        final String[] optionalTestParam = {SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY};
         parseParam(params, optionalTestParam, jsonPayload);
 
         return (JSONObject) jsonPayload.remove(SaltstackMessageParser.ENV_PARAMETERS_OPT_KEY);
@@ -214,7 +213,7 @@ public class SaltstackMessageParser {
     public JSONObject reqFileParameters(Map<String, String> params) throws JSONException {
 
         JSONObject jsonPayload = new JSONObject();
-        final String[] optionalTestParam = { SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY };
+        final String[] optionalTestParam = {SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY};
         parseParam(params, optionalTestParam, jsonPayload);
 
         return (JSONObject) jsonPayload.remove(SaltstackMessageParser.FILE_PARAMETERS_OPT_KEY);
@@ -308,19 +307,13 @@ public class SaltstackMessageParser {
     public SaltstackResult parseResponse(SvcLogicContext ctx, String pfx,
                                          SaltstackResult saltstackResult, boolean slsExec) throws IOException {
         int code = saltstackResult.getStatusCode();
-        InputStream in = null;
         boolean executionStatus = true, retCodeFound = false;
         if (code != SaltstackResultCodes.SUCCESS.getValue()) {
             return saltstackResult;
         }
+        ByteArrayOutputStream str = saltstackResult.getOutputMessage();
         try {
-            File file = new File(saltstackResult.getOutputFileName());
-            in = new FileInputStream(file);
-            byte[] data = new byte[(int) file.length()];
-            in.read(data);
-            String str = new String(data, "UTF-8");
-            in.close();
-            Map<String, String> mm = JsonParser.convertToProperties(str);
+            Map<String, String> mm = JsonParser.convertToProperties(str.toString());
             if (mm != null) {
                 for (Map.Entry<String, String> entry : mm.entrySet()) {
                     if (entry.getKey().contains("retcode")) {
@@ -333,18 +326,19 @@ public class SaltstackMessageParser {
                     LOGGER.info("+++ " + pfx + "." + entry.getKey() + ": [" + entry.getValue() + "]");
                 }
             }
-        } catch (FileNotFoundException e) {
-            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file "
-                    + saltstackResult.getOutputFileName() + " : " + e.getMessage());
         } catch (org.codehaus.jettison.json.JSONException e) {
+            if (slsExec) {
+                return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE.getValue(), "error parsing response file"
+                        + " : Output has to be in JSON format");
+            }
             LOGGER.info("Output not in JSON format");
             return putToProperties(ctx, pfx, saltstackResult);
         } catch (Exception e) {
-            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file "
-                    + saltstackResult.getOutputFileName() + " : " + e.getMessage());
+            return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file"
+                    + " : " + e.getMessage());
         } finally {
-            if (in != null) {
-                in.close();
+            if (str != null) {
+                str.close();
             }
         }
         if (slsExec) {
@@ -363,12 +357,14 @@ public class SaltstackMessageParser {
 
     public SaltstackResult putToProperties(SvcLogicContext ctx, String pfx,
                                            SaltstackResult saltstackResult) throws IOException {
-        InputStream in = null;
+
+        ByteArrayOutputStream buffer = saltstackResult.getOutputMessage();
+        InputStream inputStream = null;
         try {
-            File file = new File(saltstackResult.getOutputFileName());
-            in = new FileInputStream(file);
+            byte[] bytes = buffer.toByteArray();
             Properties prop = new Properties();
-            prop.load(in);
+            inputStream = new ByteArrayInputStream(bytes);
+            prop.load(inputStream);
             ctx.setAttribute(pfx + "completeResult", prop.toString());
             for (Object key : prop.keySet()) {
                 String name = (String) key;
@@ -379,11 +375,12 @@ public class SaltstackMessageParser {
                 }
             }
         } catch (Exception e) {
-            saltstackResult = new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "Error parsing response file = "
-                    + saltstackResult.getOutputFileName() + ". Error = " + e.getMessage());
+            saltstackResult = new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "Error parsing response file." +
+                    " Error = " + e.getMessage());
         } finally {
-            if (in != null) {
-                in.close();
+            if (buffer != null && inputStream != null) {
+                buffer.close();
+                inputStream.close();
             }
         }
         saltstackResult.setStatusCode(SaltstackResultCodes.FINAL_SUCCESS.getValue());
index b29dd8e..727cfe3 100644 (file)
@@ -24,6 +24,8 @@
 
 package org.onap.ccsdk.sli.adaptors.saltstack.model;
 
+import java.io.ByteArrayOutputStream;
+
 /**
  * Simple class to store code and message returned by POST/GET to an Saltstack Server
  */
@@ -34,7 +36,7 @@ public class SaltstackResult {
     private int statusCode;
     private String statusMessage;
     private String results;
-    private String out;
+    private ByteArrayOutputStream out;
     private int sshExitStatus;
 
     public SaltstackResult() {
@@ -58,11 +60,11 @@ public class SaltstackResult {
         this.results = results;
     }
 
-    public String getOutputFileName() {
+    public ByteArrayOutputStream getOutputMessage() {
         return out;
     }
 
-    public void setOutputFileName(String out) {
+    public void setOutputMessage(ByteArrayOutputStream out) {
         this.out = out;
     }
 
index 55beb22..bac2cfe 100644 (file)
@@ -34,12 +34,13 @@ package org.onap.ccsdk.sli.adaptors.saltstack.model;
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-import org.apache.commons.lang.StringUtils;
-import org.json.JSONObject;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 public class SaltstackServerEmulator {
 
@@ -60,13 +61,10 @@ public class SaltstackServerEmulator {
                 result = rejectRequest(result, "Mocked: Fail");
             } else {
                 String fileName = params.get(SALTSTATE_FILE_NAME);
-                if (fileName == null)
-                    result = acceptRequest(result, "");
-                else
-                    result = acceptRequest(result, fileName);
+                result = acceptRequest(result, fileName);
             }
         } catch (Exception e) {
-            logger.error("JSONException caught", e);
+            logger.error("Exception caught", e);
             rejectRequest(result, e.getMessage());
         }
         return result;
@@ -78,10 +76,14 @@ public class SaltstackServerEmulator {
         return result;
     }
 
-    private SaltstackResult acceptRequest(SaltstackResult result, String fileName) {
+    private SaltstackResult acceptRequest(SaltstackResult result, String fileName) throws IOException {
         result.setStatusCode(SaltstackResultCodes.SUCCESS.getValue());
         result.setStatusMessage("Success");
-        result.setOutputFileName(fileName);
+        Path path = Paths.get(fileName);
+        byte[] data = Files.readAllBytes(path);
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream(data.length);
+        byteOut.write(data, 0, data.length);
+        result.setOutputMessage(byteOut);
         return result;
     }
 }
\ No newline at end of file
index 446ab3e..e360f81 100755 (executable)
   ============LICENSE_END=========================================================
   -->
 
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+<blueprint xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+           xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            odl:use-default-for-reference-types="true">
 
-    <bean id="propProvider" class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterPropertiesProviderImpl" />
+    <bean id="propProvider"
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterPropertiesProviderImpl"/>
 
-    <bean id="saltstackAdapterInstance" class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl">
+    <bean id="saltstackAdapterInstance"
+          class="org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl">
         <argument ref="propProvider"/>
     </bean>
 
     <service ref="saltstackAdapterInstance">
         <interfaces>
-            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter</value>
+            <value>org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapter
+            </value>
         </interfaces>
     </service>
 
index 0b07752..1755f7a 100644 (file)
@@ -21,7 +21,6 @@
 #
 # ============LICENSE_END=========================================================
 ###
-
 #
 # Default properties for the APP-C TestService Adapter
 #
 # to supply configuration options
 org.onap.appc.bootstrap.file=appc.properties
 org.onap.appc.bootstrap.path=${user.home},/opt/opendaylight/current/properties
-
 appc.application.name=APPC
-
 #
 # Define the message resource bundle name to be loaded
 org.onap.appc.resources=org.onap/appc/i18n/MessageResources
 #
 # The name of the adapter.
 org.onap.appc.provider.adaptor.name=org.onap.appc.appc_saltstack_adapter
-
-
 # Default truststore path and password
 org.onap.appc.adapter.saltstack.trustStore=/opt/opendaylight/tls-client/mykeystore.js
 org.onap.appc.adapter.saltstack.trustStore.trustPasswd=changeit
index 266147a..8cd7af2 100644 (file)
@@ -29,14 +29,11 @@ import org.junit.Before;
 import org.junit.Test;
 import org.onap.ccsdk.sli.adaptors.saltstack.impl.ConnectionBuilder;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackResult;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
 
 public class TestConnectionBuilder {
index a0d3604..50530ec 100644 (file)
@@ -801,7 +801,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if local ssh is not enabled
             System.out.print(e.getMessage());
         }
@@ -829,7 +829,7 @@ public class TestSaltstackAdapterImpl {
             assertEquals(TestId, "test1");
             TestId = svcContext.getAttribute("test1.minion1");
             assertEquals(TestId, "true");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -855,7 +855,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -881,7 +881,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -908,7 +908,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -936,7 +936,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -964,7 +964,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -992,7 +992,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -1018,7 +1018,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
@@ -1046,7 +1046,7 @@ public class TestSaltstackAdapterImpl {
             TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
             assertEquals("200", status);
             assertEquals(TestId, "test1");
-        } catch (Exception e){
+        } catch (Exception e) {
             //if saltstack ssh IP is not enabled
             System.out.print(e.getMessage());
         }
index 29d0880..57590ba 100644 (file)
@@ -29,7 +29,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.onap.ccsdk.sli.adaptors.saltstack.SaltstackAdapterPropertiesProvider;
 import org.onap.ccsdk.sli.adaptors.saltstack.impl.SaltstackAdapterImpl;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 
 import java.util.Properties;
@@ -258,7 +257,6 @@ public class TestSaltstackAdapterPropertiesProviderImpl {
     }
 
 
-
     @Test
     public void reqExecCommand_setPropertiesElsePortNull() throws SvcLogicException,
             IllegalStateException, IllegalArgumentException {
index d082285..71798fb 100644 (file)
@@ -8,9 +8,9 @@
  * 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.
@@ -23,8 +23,8 @@ package org.onap.ccsdk.adapter.model;
 
 import org.codehaus.jettison.json.JSONException;
 import org.junit.Test;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.adaptors.saltstack.model.JsonParser;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 3e7e2bc..e5650e8 100644 (file)
@@ -21,7 +21,6 @@
 #
 # ============LICENSE_END=========================================================
 ###
-
 #
 # Default properties for the APP-C Provider Adapter
 #
@@ -31,9 +30,7 @@
 # to supply configuration options 
 org.onap.appc.bootstrap.file=appc.properties
 org.onap.appc.bootstrap.path=/opt/onap/appc/data/properties,${user.home},.
-
 appc.application.name=APPC
-
 #
 # Define the message resource bundle name to be loaded 
 org.onap.appc.resources=org/onap/appc/i18n/MessageResources
@@ -53,15 +50,13 @@ org.onap.appc.security.logger=org.onap.appc.security
 # means that the upper bound on the pool is unbounded. 
 org.onap.appc.provider.min.pool=1
 org.onap.appc.provider.max.pool=0
-
 #
 # The following properties are used to configure the retry logic for connection to the 
 # IaaS provider(s).  The retry delay property is the amount of time, in seconds, the
 # application waits between retry attempts.  The retry limit is the number of retries
 # that are allowed before the request is failed.
-org.onap.appc.provider.retry.delay = 30
-org.onap.appc.provider.retry.limit = 10
-
+org.onap.appc.provider.retry.delay=30
+org.onap.appc.provider.retry.limit=10
 #
 # The trusted hosts list for SSL access when a certificate is not provided.
 #
@@ -85,21 +80,17 @@ org.onap.appc.openstack.poll.interval=20
 # the values for a different provider.  Any number of providers can be defined in this 
 # way. 
 #
-
 # Don't change these 2 right now since they are hard coded in the DG
 #provider1.type=appc
 #provider1.name=appc
-
 #These you can change
 #provider1.identity=appc
 #provider1.tenant1.name=appc
 #provider1.tenant1.userid=appc
 #provider1.tenant1.password=appc
-
 # After a change to the provider make sure to recheck these values with an api call to provider1.identity/tokens
 test.expected-regions=1
 test.expected-endpoints=1
-
 #Your OpenStack IP
 #test.ip=192.168.1.2
 # Your OpenStack Platform's Keystone Port (default is 5000)
index 53158ca..d16bfcc 100644 (file)
@@ -6,8 +6,8 @@
 "equipment-id": "Server1",
 "server-model": "Unknown",
 "server-id": "Server1",
-"test-node" : {
-"test-inner-node" : "Test-Value"
+"test-node": {
+"test-inner-node": "Test-Value"
 }
 }
 ],
index cd76486..81131d6 100644 (file)
@@ -7,8 +7,8 @@
       "equipment-id": "Server1",
       "server-model": "Unknown",
       "server-id": "Server1",
-      "test-node" : {
-        "test-inner-node" : "Test-Value"
+      "test-node": {
+        "test-inner-node": "Test-Value"
       }
     }
   ],