============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>
<?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>
<?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>
<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>
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>
<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>
-->
-<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>
============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>
<!-- 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>
<!-- 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>
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>
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
* @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);
}
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);
/**
* 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);
}
/**
* 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();
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);
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);
}
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);
}
}
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);
}
}
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 {
} 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");
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);
}
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());
}
}
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());
}
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 {
}
} catch (IOException e) {
doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
- "IOException in file stream : "+ e.getMessage());
+ "IOException in file stream : " + e.getMessage());
}
return testResult;
}
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()) {
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;
*/
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);
}
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);
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);
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")) {
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) {
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;
}
}
} 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());
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
*/
private int statusCode;
private String statusMessage;
private String results;
- private String out;
+ private ByteArrayOutputStream out;
private int sshExitStatus;
public 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;
}
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 {
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;
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
============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>
#
# ============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
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 {
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());
}
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());
}
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());
}
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());
}
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());
}
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());
}
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());
}
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());
}
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());
}
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());
}
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;
}
-
@Test
public void reqExecCommand_setPropertiesElsePortNull() throws SvcLogicException,
IllegalStateException, IllegalArgumentException {
* 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.
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;
#
# ============LICENSE_END=========================================================
###
-
#
# Default properties for the APP-C Provider Adapter
#
# 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
# 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.
#
# 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)
"equipment-id": "Server1",
"server-model": "Unknown",
"server-id": "Server1",
-"test-node" : {
-"test-inner-node" : "Test-Value"
+"test-node": {
+"test-inner-node": "Test-Value"
}
}
],
"equipment-id": "Server1",
"server-model": "Unknown",
"server-id": "Server1",
- "test-node" : {
- "test-inner-node" : "Test-Value"
+ "test-node": {
+ "test-inner-node": "Test-Value"
}
}
],