summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGanesh Chandrasekaran <ganesh.c@samsung.com>2018-07-13 09:41:32 +0900
committerGanesh Chandrasekaran <ganesh.c@samsung.com>2018-07-16 16:24:56 +0900
commit3323c0829fa0492a5c7b3544a83cc24412c9934c (patch)
tree421b5d254821a24d63869b8c6651ea74a562d1ea
parent3c36ac2ba101ec0cc596c15bfd45efcc731f442f (diff)
saltstack adaptor fixes from Sonar
Issue-ID: CCSDK-364 Change-Id: Ief9705370d84fcb99fcb718f03c31e6cbfd47363 Signed-off-by: Ganesh Chandrasekaran <ganesh.c@samsung.com>
-rw-r--r--ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java (renamed from ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/impl/TestAnsibleAdapterImpl.java)2
-rw-r--r--ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java (renamed from ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/model/TestAnsibleAdapter.java)2
-rw-r--r--ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java (renamed from ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/ExecutorHarness.java)3
-rw-r--r--ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java (renamed from ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/InterceptLogger.java)2
-rw-r--r--ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/ccsdk/default.properties (renamed from ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/default.properties)0
-rw-r--r--saltstack-adapter/README.md45
-rw-r--r--saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml2
-rw-r--r--saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml6
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java18
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java99
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java18
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java41
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestConnectionBuilder.java)13
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterImpl.java)16
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java)7
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestJsonParser.java)2
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestSaltstackAdapter.java (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestSaltstackAdapter.java)6
-rw-r--r--saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties (renamed from saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/appc/default.properties)0
18 files changed, 136 insertions, 146 deletions
diff --git a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/impl/TestAnsibleAdapterImpl.java b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java
index d96a709ce..86bed7e41 100644
--- a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/impl/TestAnsibleAdapterImpl.java
+++ b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/impl/TestAnsibleAdapterImpl.java
@@ -22,7 +22,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.ansible.impl;
+package org.onap.ccsdk.adapter.ansible.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
diff --git a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/model/TestAnsibleAdapter.java b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java
index aebc1c0d2..6fc90d012 100644
--- a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/adapter/ansible/model/TestAnsibleAdapter.java
+++ b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/adapter/ansible/model/TestAnsibleAdapter.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.ansible.model;
+package org.onap.ccsdk.adapter.ansible.model;
import static org.junit.Assert.assertNotNull;
diff --git a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/ExecutorHarness.java b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java
index 13b5fdfb3..3555d7dfe 100644
--- a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/ExecutorHarness.java
+++ b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/ExecutorHarness.java
@@ -23,7 +23,7 @@
*/
-package org.onap.appc.test;
+package org.onap.ccsdk.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -32,7 +32,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.onap.appc.test.InterceptLogger;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
diff --git a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/InterceptLogger.java b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java
index b101ecee4..92235cb39 100644
--- a/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/appc/test/InterceptLogger.java
+++ b/ansible-adapter/ansible-adapter-bundle/src/test/java/org/onap/ccsdk/test/InterceptLogger.java
@@ -23,7 +23,7 @@
*/
-package org.onap.appc.test;
+package org.onap.ccsdk.test;
import java.text.MessageFormat;
import java.util.ArrayList;
diff --git a/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/default.properties b/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/ccsdk/default.properties
index 2f8fb4585..2f8fb4585 100644
--- a/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/appc/default.properties
+++ b/ansible-adapter/ansible-adapter-bundle/src/test/resources/org/onap/ccsdk/default.properties
diff --git a/saltstack-adapter/README.md b/saltstack-adapter/README.md
index 8e989a874..5eaf1cc2b 100644
--- a/saltstack-adapter/README.md
+++ b/saltstack-adapter/README.md
@@ -50,7 +50,8 @@ Create an Adaptor to communicate with the SaltStack server:
"User"; -> Saltstack server's SSH Password.
Note: SSH_CERT based Auth is not supported in this method.
-***Using Saltstack Adaptor Commands and params to pass in:*** reqExecCommand:
+***Using Saltstack Adaptor Commands and params to pass in: reqExecCommand API:***
+
Method to execute a single command on SaltState server and execute a SLS file located on the server. The command entered should request the output in JSON format, this can be done by appending json-out outputter as specified in https://docs.saltstack.com/en/latest/ref/output/all/salt.output.json_out.html#module-salt.output.json_out and https://docs.saltstack.com/en/2017.7/ref/cli/salt-call.html
The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
If Id is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId.
@@ -72,8 +73,8 @@ here for instance, in 1.1) the user should check if $reqId.<minion-name> is set
2) Execute a SLS file located on the server : Example command will look like:
Knowing the saltstack server has vim.sls file located at "/srv/salt" directory then user can execute the following commands:
-1.1) Command to run the vim.sls file on saltstack server: "salt '*' state.apply vim --out=json --static"
-1.2) Command to run the nettools.sls file on saltstack server: "salt '*' state.apply nettools --out=json --static"
+1.1) Command to run the vim.sls file on saltstack server: cmd = "salt '*' state.apply vim --out=json --static"
+1.2) Command to run the nettools.sls file on saltstack server: cmd = "salt '*' state.apply nettools --out=json --static"
Important thing to note: If the reqExecCommand is used to execute sls file then along with following,
"HostName"; -> Saltstack server's host name IP address.
"Port"; -> Saltstack server's port to make SSH connection to.
@@ -82,14 +83,42 @@ Important thing to note: If the reqExecCommand is used to execute sls file then
the param should contain,
"slsExec"; -> this variable should be set to true.
-In this case, params that will hold the command execution result for DG access are
+In this case, params that will hold the command execution result for DG access in Key:
Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful)
Message at: org.onap.appc.adapter.saltstack.message
Both user inputted/auto generated req Id at: org.onap.appc.adapter.saltstack.Id
The result code here will be the execution of configuration SLS file on the server.
-NOTE: It would be better to use reqExecSLS, where you will only have to specify SLS file name on server.
-***Using Saltstack Adaptor Commands and params to pass in:*** reqExecSLS:
-Method to execute a single sls on SaltState server and execute a SLS file located on the server. The command entered should request the output in JSON format, this can be done by appending json-out outputter as specified in https://docs.saltstack.com/en/latest/ref/output/all/salt.output.json_out.html#module-salt.output.json_out and https://docs.saltstack.com/en/2017.7/ref/cli/salt-call.html
+NOTE: It would be better to use reqExecSLS, where you will only have to specify SLS file name on server to execute it.
+
+
+***Using Saltstack Adaptor Commands and params to pass in: reqExecSLS API:***
+
+Method to execute a single sls on SaltState server (Where the SLS file already located on the server). The command entered will only be the SLS file name and the output will be in JSON format automatically.
The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
-If Id is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId.
+If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId.
1) Execute a single command on SaltState server : Example command will look like:
+ In the context set the "slsName" to "test.sls"
+ In the context set the "applyTo" to "minion1" //to the minions or VNFCs you want to apply the SLS file to.
+ "applyTo" can be empty or set to "*" is the SLS has to be applied to all the minions or VNFCs.
+In this case, params that will hold the command execution result for DG access in Key:
+Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful)
+Message at: org.onap.appc.adapter.saltstack.message
+Both user inputted/auto generated req Id at: org.onap.appc.adapter.saltstack.Id
+The result code here will be the execution of configuration SLS file on the server.
+
+***Using Saltstack Adaptor Commands and params to pass in: reqExecSLSFile API:***
+
+Method to execute a single sls on SaltState server (Where the SLS file in the adaptor). The command entered will only be the SLS file location on the APPC/ODL container and the output from server will be in JSON format automatically.
+The response from Saltstack comes in json format and it is automatically put to context for DGs access, with a certain request-ID as prefix.
+If request Id (Id) is not passed as part of input param, then a random Id will be generated and put to properties in "org.onap.appc.adapter.saltstack.Id" field. All the output message from the execution will be appended with reqId.
+1) Execute a single command on SaltState server : Example command will look like:
+ In the context set the "slsFile" to "/path/to/test.sls" //mention the path of the SLS file in ODL container.
+ In the context set the "applyTo" to "minion1" //to the minions or VNFCs you want to apply the SLS file to.
+ "applyTo" can be empty or set to "*" is the SLS has to be applied to all the minions or VNFCs.
+In this case, params that will hold the command execution result for DG access in Key:
+Result code at: org.onap.appc.adapter.saltstack.result.code (On success: This will be 200, this means the command was executed successfully and also configuration change made using the SLS file was also successful)
+Message at: org.onap.appc.adapter.saltstack.message
+Both user inputted/auto generated req Id at: org.onap.appc.adapter.saltstack.Id
+The result code here will be the execution of configuration SLS file on the server.
+
+
diff --git a/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml b/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
index 01b330e53..cf151ca59 100644
--- a/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
+++ b/saltstack-adapter/saltstack-adapter-features/ccsdk-saltstack-adapter/pom.xml
@@ -47,4 +47,4 @@
</dependency>
</dependencies>
-->
-</project> \ No newline at end of file
+</project>
diff --git a/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml b/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
index 47db978b0..5359d8088 100644
--- a/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
+++ b/saltstack-adapter/saltstack-adapter-features/src/main/resources/features.xml
@@ -24,17 +24,17 @@
-->
-<features name="appc-saltstack-adapter-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+<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">
<repository>mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.features.version}/xml/features</repository>
- <feature name='appc-saltstack-adapter' description="appc-saltstack-adapter" version='${project.version}'>
+ <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.appc/appc-saltstack-adapter-provider/${project.version}</bundle>
+ <bundle>mvn:org.onap.ccsdk.sli.adaptors/saltstack-adapter-provider/${project.version}</bundle>
</feature>
</features>
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
index 65ab598dd..cc4ce95c1 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/ConnectionBuilder.java
@@ -84,7 +84,7 @@ public class ConnectionBuilder {
* @param cmd Commands to execute
* @return command execution status
*/
- public SaltstackResult connectNExecute(String cmd) {
+ public SaltstackResult connectNExecute(String cmd) throws IOException {
return connectNExecute(cmd, -1, -1);
}
@@ -98,9 +98,12 @@ public class ConnectionBuilder {
* @param retryCount number of count retry to make a SSH connection.
* @return command execution status
*/
- public SaltstackResult connectNExecute(String cmd, int retryCount, int retryDelay) {
+ public SaltstackResult connectNExecute(String cmd, int retryCount, int retryDelay)
+ throws IOException{
SaltstackResult result = new SaltstackResult();
+ OutputStream out = null;
+ OutputStream errs = null;
try {
if (retryCount != -1) {
result = sshConnection.connectWithRetry(retryCount, retryDelay);
@@ -112,12 +115,10 @@ public class ConnectionBuilder {
}
String outFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
String errFilePath = "/tmp/" + RandomStringUtils.random(5, true, true);
- OutputStream out = new FileOutputStream(outFilePath);
- OutputStream errs = new FileOutputStream(errFilePath);
+ out = new FileOutputStream(outFilePath);
+ errs = new FileOutputStream(errFilePath);
result = sshConnection.execCommand(cmd, out, errs);
sshConnection.disconnect();
- out.close();
- errs.close();
if (result.getSshExitStatus() != 0) {
return sortExitStatus(result.getSshExitStatus(), errFilePath, cmd);
}
@@ -130,6 +131,11 @@ public class ConnectionBuilder {
logger.error("Caught Exception", io);
result.setStatusCode(SaltstackResultCodes.UNKNOWN_EXCEPTION.getValue());
result.setStatusMessage(io.getMessage());
+ } finally {
+ if( out != null )
+ out.close();
+ if( errs != null )
+ errs.close();
}
return result;
}
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
index 84e5d4f19..0b6a5bb22 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/impl/SaltstackAdapterImpl.java
@@ -81,7 +81,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
private static final String SS_SERVER_HOSTNAME = "org.onap.appc.adapter.saltstack.host";
private static final String SS_SERVER_PORT = "org.onap.appc.adapter.saltstack.port";
private static final String SS_SERVER_USERNAME = "org.onap.appc.adapter.saltstack.userName";
- private static final String SS_SERVER_PASSWORD = "org.onap.appc.adapter.saltstack.userPasswd";
+ private static final String SS_SERVER_PASSWD = "org.onap.appc.adapter.saltstack.userPasswd";
private static final String SS_SERVER_SSH_KEY = "org.onap.appc.adapter.saltstack.sshKey";
/**
* The logger to be used
@@ -186,7 +186,7 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
String sshHost = props.getProperty(SS_SERVER_HOSTNAME);
String sshPort = props.getProperty(SS_SERVER_PORT);
String sshUserName = props.getProperty(SS_SERVER_USERNAME);
- String sshPassword = props.getProperty(SS_SERVER_PASSWORD);
+ String sshPassword = props.getProperty(SS_SERVER_PASSWD);
sshClient = new ConnectionBuilder(sshHost, sshPort, sshUserName, sshPassword);
} else if ("SSH_CERT".equalsIgnoreCase(clientType)) {
// set path to keystore file
@@ -200,13 +200,10 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
String sshKey = props.getProperty(SS_SERVER_SSH_KEY);
String sshHost = props.getProperty(SS_SERVER_HOSTNAME);
String sshUserName = props.getProperty(SS_SERVER_USERNAME);
- String sshPassword = props.getProperty(SS_SERVER_PASSWORD);
+ String sshPassword = props.getProperty(SS_SERVER_PASSWD);
String sshPort = props.getProperty(SS_SERVER_PORT);
logger.info("Creating ssh client with ssh KEY from " + sshKey);
sshClient = new ConnectionBuilder(sshHost, sshPort, sshUserName, sshPassword, sshKey);
- } else if ("NONE".equalsIgnoreCase(clientType)) {
- logger.info("No saltstack-adapter.properties defined so reading from DG props");
- sshClient = null;
} else {
logger.info("No saltstack-adapter.properties defined so reading from DG props");
sshClient = null;
@@ -317,12 +314,17 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
boolean slsExec;
SaltstackResult testResult;
setSSHClient(params);
- reqID = messageProcessor.reqId(params);
- String commandToExecute = messageProcessor.reqCmd(params);
- slsExec = messageProcessor.reqIsSLSExec(params);
- testResult = execCommand(params, commandToExecute);
- testResult = messageProcessor.parseResponse(ctx, reqID, testResult, slsExec);
- checkResponseStatus(testResult, ctx, reqID, slsExec);
+ try {
+ reqID = messageProcessor.reqId(params);
+ String commandToExecute = messageProcessor.reqCmd(params);
+ slsExec = messageProcessor.reqIsSLSExec(params);
+ testResult = execCommand(ctx, params, commandToExecute);
+ testResult = messageProcessor.parseResponse(ctx, reqID, testResult, slsExec);
+ checkResponseStatus(testResult, ctx, reqID, slsExec);
+ } catch (IOException e) {
+ doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
+ "IOException in file stream : "+ e.getMessage());
+ }
}
/**
@@ -338,13 +340,18 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
String reqID;
SaltstackResult testResult;
setSSHClient(params);
- reqID = messageProcessor.reqId(params);
- String slsName = messageProcessor.reqSlsName(params);
- String applyTo = messageProcessor.reqApplyToDevices(params);
- String commandToExecute = putToCommands(slsName, applyTo);
- testResult = execCommand(params, commandToExecute);
- testResult = messageProcessor.parseResponse(ctx, reqID, testResult, true);
- checkResponseStatus(testResult, ctx, reqID, true);
+ try {
+ reqID = messageProcessor.reqId(params);
+ String slsName = messageProcessor.reqSlsName(params);
+ String applyTo = messageProcessor.reqApplyToDevices(params);
+ String commandToExecute = putToCommands(slsName, applyTo);
+ testResult = execCommand(ctx, params, commandToExecute);
+ testResult = messageProcessor.parseResponse(ctx, reqID, testResult, true);
+ checkResponseStatus(testResult, ctx, reqID, true);
+ } catch (IOException e) {
+ doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
+ "IOException in file stream : "+ e.getMessage());
+ }
}
/**
@@ -360,13 +367,18 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
String reqID;
SaltstackResult testResult;
setSSHClient(params);
- reqID = messageProcessor.reqId(params);
- String slsFile = messageProcessor.reqSlsFile(params);
- String applyTo = messageProcessor.reqApplyToDevices(params);
- String commandToExecute = putToCommands(ctx, slsFile, applyTo);
- testResult = execCommand(params, commandToExecute);
- testResult = messageProcessor.parseResponse(ctx, reqID, testResult, true);
- checkResponseStatus(testResult, ctx, reqID, true);
+ try {
+ reqID = messageProcessor.reqId(params);
+ String slsFile = messageProcessor.reqSlsFile(params);
+ String applyTo = messageProcessor.reqApplyToDevices(params);
+ String commandToExecute = putToCommands(ctx, slsFile, applyTo);
+ testResult = execCommand(ctx, params, commandToExecute);
+ testResult = messageProcessor.parseResponse(ctx, reqID, testResult, true);
+ checkResponseStatus(testResult, ctx, reqID, true);
+ } catch (IOException e) {
+ doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
+ "IOException in file stream : "+ e.getMessage());
+ }
}
/**
@@ -382,22 +394,29 @@ public class SaltstackAdapterImpl implements SaltstackAdapter {
}
- public SaltstackResult execCommand(Map<String, String> params, String commandToExecute) {
- SaltstackResult testResult;
- if (params.get(CONNECTION_RETRY_DELAY) != null && params.get(CONNECTION_RETRY_COUNT) != null) {
- int retryDelay = Integer.parseInt(params.get(CONNECTION_RETRY_DELAY));
- int retryCount = Integer.parseInt(params.get(CONNECTION_RETRY_COUNT));
- if (!testMode) {
- testResult = sshClient.connectNExecute(commandToExecute, retryCount, retryDelay);
- } else {
- testResult = testServer.MockReqExec(params);
- }
- } else {
- if (!testMode) {
- testResult = sshClient.connectNExecute(commandToExecute);
+ public SaltstackResult execCommand(SvcLogicContext ctx, Map<String, String> params, String commandToExecute)
+ throws SvcLogicException{
+
+ SaltstackResult testResult = new SaltstackResult();
+ try {
+ if (params.get(CONNECTION_RETRY_DELAY) != null && params.get(CONNECTION_RETRY_COUNT) != null) {
+ int retryDelay = Integer.parseInt(params.get(CONNECTION_RETRY_DELAY));
+ int retryCount = Integer.parseInt(params.get(CONNECTION_RETRY_COUNT));
+ if (!testMode) {
+ testResult = sshClient.connectNExecute(commandToExecute, retryCount, retryDelay);
+ } else {
+ testResult = testServer.mockReqExec(params);
+ }
} else {
- testResult = testServer.MockReqExec(params);
+ if (!testMode) {
+ testResult = sshClient.connectNExecute(commandToExecute);
+ } else {
+ testResult = testServer.mockReqExec(params);
+ }
}
+ } catch (IOException e) {
+ doFailure(ctx, SaltstackResultCodes.IO_EXCEPTION.getValue(),
+ "IOException in file stream : "+ e.getMessage());
}
return testResult;
}
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
index f282a3381..0a6e4eb89 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackMessageParser.java
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.HashSet;
@@ -289,15 +290,16 @@ public class SaltstackMessageParser {
* and returns an SaltstackResult object.
*/
public SaltstackResult parseResponse(SvcLogicContext ctx, String pfx,
- SaltstackResult saltstackResult, boolean slsExec) {
+ 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;
}
try {
File file = new File(saltstackResult.getOutputFileName());
- InputStream in = new FileInputStream(file);
+ in = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
in.read(data);
String str = new String(data, "UTF-8");
@@ -324,6 +326,9 @@ public class SaltstackMessageParser {
} catch (Exception e) {
return new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "error parsing response file "
+ saltstackResult.getOutputFileName() + " : " + e.getMessage());
+ } finally {
+ if( in != null )
+ in.close();
}
if (slsExec) {
if (!retCodeFound)
@@ -337,10 +342,12 @@ public class SaltstackMessageParser {
return saltstackResult;
}
- public SaltstackResult putToProperties(SvcLogicContext ctx, String pfx, SaltstackResult saltstackResult) {
+ public SaltstackResult putToProperties(SvcLogicContext ctx, String pfx,
+ SaltstackResult saltstackResult) throws IOException{
+ InputStream in = null;
try {
File file = new File(saltstackResult.getOutputFileName());
- InputStream in = new FileInputStream(file);
+ in = new FileInputStream(file);
Properties prop = new Properties();
prop.load(in);
ctx.setAttribute(pfx + "completeResult", prop.toString());
@@ -355,6 +362,9 @@ public class SaltstackMessageParser {
} catch (Exception e) {
saltstackResult = new SaltstackResult(SaltstackResultCodes.INVALID_RESPONSE_FILE.getValue(), "Error parsing response file = "
+ saltstackResult.getOutputFileName() + ". Error = " + e.getMessage());
+ } finally {
+ if( in != null )
+ in.close();
}
saltstackResult.setStatusCode(SaltstackResultCodes.FINAL_SUCCESS.getValue());
return saltstackResult;
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
index ecb36fb83..adbf9bd9a 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/main/java/org/onap/ccsdk/sli/adaptors/saltstack/model/SaltstackServerEmulator.java
@@ -55,7 +55,7 @@ public class SaltstackServerEmulator {
* Returns an saltstack object result. The response code is always the ssh code 200 (i.e connection successful)
* payload is json string as would be sent back by Saltstack Server
**/
- public SaltstackResult MockReqExec(Map<String, String> params) {
+ public SaltstackResult mockReqExec(Map<String, String> params) {
SaltstackResult result = new SaltstackResult();
try {
@@ -75,45 +75,6 @@ public class SaltstackServerEmulator {
return result;
}
- /**
- * Method to emulate response from an Saltstack
- * Server when presented with a GET request
- * Returns an saltstack object result. The response code is always the ssh code 200 (i.e connection successful)
- * payload is json string as would be sent back by Saltstack Server
- **/
- public SaltstackResult Execute(String agentUrl) {
-
- Pattern pattern = Pattern.compile(".*?\\?Id=(.*?)&Type.*");
- Matcher matcher = pattern.matcher(agentUrl);
- String id = StringUtils.EMPTY;
- String vmAddress = "192.168.1.10";
-
- if (matcher.find()) {
- id = matcher.group(1);
- }
-
- SaltstackResult getResult = new SaltstackResult();
-
- JSONObject response = new JSONObject();
- response.put(STATUS_CODE, 200);
- response.put(STATUS_MESSAGE, "FINISHED");
-
- JSONObject results = new JSONObject();
-
- JSONObject vmResults = new JSONObject();
- vmResults.put(STATUS_CODE, 200);
- vmResults.put(STATUS_MESSAGE, "SUCCESS");
- vmResults.put("Id", id);
- results.put(vmAddress, vmResults);
-
- response.put("Results", results);
-
- getResult.setStatusCode(200);
- getResult.setStatusMessage(response.toString());
-
- return getResult;
- }
-
private SaltstackResult rejectRequest(SaltstackResult result, String Message) {
result.setStatusCode(SaltstackResultCodes.REJECTED.getValue());
result.setStatusMessage("Rejected");
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestConnectionBuilder.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
index d9a384141..933f3fcf7 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestConnectionBuilder.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestConnectionBuilder.java
@@ -22,7 +22,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.impl;
+package org.onap.ccsdk.adapter.impl;
import org.junit.After;
import org.junit.Before;
@@ -41,21 +41,12 @@ import static org.junit.Assert.fail;
public class TestConnectionBuilder {
- private final String PENDING = "100";
- private final String SUCCESS = "400";
- private String message = "{\"Results\":{\"192.168.1.10\":{\"Id\":\"101\",\"StatusCode\":200,\"StatusMessage\":\"SUCCESS\"}},\"StatusCode\":200,\"StatusMessage\":\"FINISHED\"}";
-
private ConnectionBuilder connBuilder;
- private String TestId;
- private boolean testMode = true;
private Map<String, String> params;
- private SvcLogicContext svcContext;
@Before
public void setup() throws IllegalArgumentException {
- testMode = true;
- svcContext = new SvcLogicContext();
String HostName = "test";
String Port = "10";
String User = "test";
@@ -70,10 +61,8 @@ public class TestConnectionBuilder {
@After
public void tearDown() {
- testMode = false;
connBuilder = null;
params = null;
- svcContext = null;
}
@Test
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
index d60059e40..0622a4716 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterImpl.java
@@ -22,7 +22,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.impl;
+package org.onap.ccsdk.adapter.impl;
import org.junit.After;
import org.junit.Before;
@@ -40,10 +40,6 @@ import static org.junit.Assert.fail;
public class TestSaltstackAdapterImpl {
- private final String PENDING = "100";
- private final String SUCCESS = "400";
- private String message = "{\"Results\":{\"192.168.1.10\":{\"Id\":\"101\",\"StatusCode\":200,\"StatusMessage\":\"SUCCESS\"}},\"StatusCode\":200,\"StatusMessage\":\"FINISHED\"}";
-
private SaltstackAdapterImpl adapter;
private String TestId;
private boolean testMode = true;
@@ -457,7 +453,6 @@ public class TestSaltstackAdapterImpl {
params.put("Id", "test1");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -476,7 +471,6 @@ public class TestSaltstackAdapterImpl {
params.put("Id", "test1");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -495,7 +489,6 @@ public class TestSaltstackAdapterImpl {
params.put("Id", "test1");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -559,7 +552,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "minion1");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -579,7 +571,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "minion1");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -621,7 +612,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "*");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -641,7 +631,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "*");
adapter.reqExecSLSFile(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -703,7 +692,6 @@ public class TestSaltstackAdapterImpl {
params.put("Id", "test1");
adapter.reqExecSLS(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -747,7 +735,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "minion1");
adapter.reqExecSLS(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
@@ -790,7 +777,6 @@ public class TestSaltstackAdapterImpl {
params.put("applyTo", "*");
adapter.reqExecSLS(params, svcContext);
- String status = svcContext.getAttribute("org.onap.appc.adapter.saltstack.result.code");
TestId = svcContext.getAttribute("org.onap.appc.adapter.saltstack.Id");
assertEquals(TestId, "test1");
}
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
index 927591830..094e78c79 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/impl/TestSaltstackAdapterPropertiesProviderImpl.java
@@ -22,7 +22,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.impl;
+package org.onap.ccsdk.adapter.impl;
import org.junit.After;
import org.junit.Before;
@@ -37,13 +37,9 @@ import java.util.Properties;
import static org.junit.Assert.assertEquals;
public class TestSaltstackAdapterPropertiesProviderImpl {
- private final String PENDING = "100";
- private final String SUCCESS = "400";
- private String message = "{\"Results\":{\"192.168.1.10\":{\"Id\":\"101\",\"StatusCode\":200,\"StatusMessage\":\"SUCCESS\"}},\"StatusCode\":200,\"StatusMessage\":\"FINISHED\"}";
private SaltstackAdapterImpl adapter;
private Properties params;
- private SvcLogicContext svcContext;
@Before
@@ -55,7 +51,6 @@ public class TestSaltstackAdapterPropertiesProviderImpl {
public void tearDown() {
adapter = null;
params = null;
- svcContext = null;
}
@Test(expected = SvcLogicException.class)
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestJsonParser.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
index ae13da6c8..74e7ed0c4 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestJsonParser.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestJsonParser.java
@@ -19,7 +19,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.model;
+package org.onap.ccsdk.adapter.model;
import org.codehaus.jettison.json.JSONException;
import org.junit.Test;
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestSaltstackAdapter.java b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestSaltstackAdapter.java
index 37b6502ca..0caaf3320 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/appc/adapter/model/TestSaltstackAdapter.java
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/java/org/onap/ccsdk/adapter/model/TestSaltstackAdapter.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
-package org.onap.appc.adapter.model;
+package org.onap.ccsdk.adapter.model;
import org.junit.Test;
import org.onap.ccsdk.sli.adaptors.saltstack.model.SaltstackMessageParser;
@@ -39,7 +39,6 @@ public class TestSaltstackAdapter {
private Class[] parameterTypes;
private SaltstackMessageParser saltstackMessageParser;
private Method m;
- private String name;
@Test
public void callPrivateConstructorsMethodsForCodeCoverage() throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
@@ -48,21 +47,18 @@ public class TestSaltstackAdapter {
Class<?>[] classesOne = {SaltstackMessageParser.class};
for(Class<?> clazz : classesOne) {
Constructor<?> constructor = clazz.getDeclaredConstructor();
- name = constructor.getName();
constructor.setAccessible(true);
assertNotNull(constructor.newInstance());
}
Class<?>[] classesTwo = {SaltstackServerEmulator.class};
for(Class<?> clazz : classesTwo) {
Constructor<?> constructor = clazz.getDeclaredConstructor();
- name = constructor.getName();
constructor.setAccessible(true);
assertNotNull(constructor.newInstance());
}
Class<?>[] classesThree = {SaltstackResult.class};
for(Class<?> clazz : classesThree) {
Constructor<?> constructor = clazz.getDeclaredConstructor();
- name = constructor.getName();
constructor.setAccessible(true);
assertNotNull(constructor.newInstance());
}
diff --git a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/appc/default.properties b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties
index 2f8fb4585..2f8fb4585 100644
--- a/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/appc/default.properties
+++ b/saltstack-adapter/saltstack-adapter-provider/src/test/resources/org/onap/ccsdk/default.properties