From 8c9631e438b9491424df0f43d43445f098436834 Mon Sep 17 00:00:00 2001
From: Skip Wonnell
Date: Tue, 29 Aug 2017 14:16:20 -0500
Subject: ChefAdapter code clean-up
Issue-ID: APPC-90
Change-Id: I582d6b0c81d5a89938fff6038dfcc221ccaf19c1
Signed-off-by: Skip Wonnell
---
.../appc-chef-adapter-bundle/pom.xml | 404 ++++---
.../openecomp/appc/adapter/chef/ChefActivator.java | 8 +-
.../openecomp/appc/adapter/chef/ChefAdapter.java | 38 +-
.../appc/adapter/chef/chefapi/ApiMethod.java | 245 ++--
.../appc/adapter/chef/chefapi/Delete.java | 8 +-
.../openecomp/appc/adapter/chef/chefapi/Get.java | 9 +-
.../openecomp/appc/adapter/chef/chefapi/Post.java | 26 +-
.../openecomp/appc/adapter/chef/chefapi/Put.java | 26 +-
.../adapter/chef/chefclient/ChefApiClient.java | 109 +-
.../appc/adapter/chef/chefclient/Utils.java | 122 +-
.../appc/adapter/chef/impl/ChefAdapterImpl.java | 1204 ++++++++------------
.../appc/adapter/chef/impl/RequestContext.java | 10 +-
.../adapter/chef/impl/TestChefAdapterImpl.java | 13 +-
.../appc-chef-adapter-features/pom.xml | 227 ++--
.../src/main/resources/features.xml | 2 +-
.../appc-chef-adapter-installer/pom.xml | 38 +-
.../src/assembly/assemble_installer_zip.xml | 58 +-
.../src/assembly/assemble_mvnrepo_zip.xml | 38 +-
.../src/main/resources/scripts/install-feature.sh | 30 +-
appc-adapters/appc-chef-adapter/pom.xml | 257 +++--
20 files changed, 1359 insertions(+), 1513 deletions(-)
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml
index 0cb1c1d96..0fb55af49 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml
@@ -1,168 +1,240 @@
-
- 4.0.0
-
- org.openecomp.appc
- appc-chef-adapter
- 1.1.0-SNAPSHOT
-
-
- appc-chef-adapter-bundle
- bundle
- chef Adapter - bundle
-
-
-
- org.json
- json
- 20160810
-
-
- org.json
- json
- 20160810
-
-
- commons-codec
- commons-codec
-
-
-
- commons-logging
- commons-logging
- 1.2
-
-
-
- org.apache.httpcomponents
- httpcore
- 4.4.4
-
-
-
- org.bouncycastle
- bcpkix-jdk15on
- 1.55
-
-
- org.bouncycastle
- bcprov-jdk15on
- 1.55
-
-
- org.openecomp.appc
- appc-common
- ${project.version}
-
-
- javax
- javaee-api
- 7.0
-
-
-
- com.att.cdp
- cdp-pal-common
- compile
-
-
-
-
- org.codehaus.jackson
- jackson-jaxrs
- 1.9.12
-
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.1
-
-
-
- junit
- junit
- test
-
-
-
- org.openecomp.sdnc.core
- sli-common
- compile
-
-
-
- org.openecomp.sdnc.core
- dblib-provider
-
-
-
-
-
- org.openecomp.sdnc.core
- sli-provider
- compile
-
-
-
- org.openecomp.sdnc.core
- dblib-provider
-
-
-
-
-
- equinoxSDK381
- org.eclipse.osgi
-
-
-
- org.slf4j
- slf4j-api
-
-
-
- org.slf4j
- jcl-over-slf4j
-
-
-
-
- com.vmware
- vijava
- 5.1
- compile
-
-
-
- xerces
- xerces
- 2.4.0
- provided
-
-
-
-
-
-
-
- org.apache.felix
- maven-bundle-plugin
- true
-
-
- appc-chef-adapter
- org.openecomp.appc.adapter.chef.ChefActivator
- org.openecomp.appc.adapter.chef
- org.openecomp.sdnc.sli.*,org.osgi.framework.*,org.slf4j.*,com.vmware.*,org.apache.xerces.*,javax.net.*,javax.net.ssl.*,org.xml.sax.*,javax.naming.*,javax.security.auth.*
- *;scope=compile|runtime;artifactId=!sli-common|!appc-common|org.eclipse.osgi|slf4j-api|jcl-over-slf4j|xml-apis
- true
-
-
- ${project.basedir}/src/main/resources/META-INF
-
-
-
-
+
+
+ 4.0.0
+
+ org.openecomp.appc
+ appc-chef-adapter
+ 1.1.0-SNAPSHOT
+
+
+ appc-chef-adapter-bundle
+ bundle
+ APPC Chef Adapter - Bundle
+
+
+ ${project.parent.parent.parent.basedir}
+
+
+
+
+ org.json
+ json
+ 20160810
+
+
+ commons-codec
+ commons-codec
+
+
+ commons-logging
+ commons-logging
+ 1.2
+
+
+ org.apache.httpcomponents
+ httpcore
+ 4.4.4
+
+
+
+ org.bouncycastle
+ bcpkix-jdk15on
+ 1.55
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.55
+
+
+ org.openecomp.appc
+ appc-common
+ ${project.version}
+
+
+ javax
+ javaee-api
+ 7.0
+
+
+
+ com.att.cdp
+ cdp-pal-common
+ compile
+
+
+
+ com.att.cdp
+ cdp-pal-openstack
+ compile
+
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+
+
+
+
+ com.sun.jersey
+ jersey-client
+
+
+
+ com.sun.jersey
+ jersey-json
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+
+
+
+ javax.xml
+ jaxp-api
+ 1.4.2
+
+
+
+
+ org.glassfish.jersey.core
+ jersey-common
+ 2.9.1
+
+
+
+ org.codehaus.jackson
+ jackson-jaxrs
+ 1.9.12
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.1
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.openecomp.sdnc.core
+ sli-common
+ compile
+
+
+
+ org.openecomp.sdnc.core
+ dblib-provider
+
+
+
+
+
+ org.openecomp.sdnc.core
+ sli-provider
+ compile
+
+
+
+ org.openecomp.sdnc.core
+ dblib-provider
+
+
+
+
+
+ equinoxSDK381
+ org.eclipse.osgi
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+
+ mysql
+ mysql-connector-java
+ 5.1.31
+ jar
+ compile
+
+
+
+ com.vmware
+ vijava
+ 5.1
+ compile
+
+
+
+ xerces
+ xerces
+ 2.4.0
+ provided
+
+
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ appc-chef-adapter
+ org.openecomp.appc.adapter.chef.ChefActivator
+ org.openecomp.appc.adapter.chef
+
+ org.openecomp.sdnc.sli.*,org.osgi.framework.*,org.slf4j.*,com.vmware.*,org.apache.xerces.*,javax.net.*,javax.net.ssl.*,org.xml.sax.*,javax.xml.bind.*,javax.naming.*
+
+
+ *;scope=compile|runtime;artifactId=!sli-common|!appc-common|org.eclipse.osgi|slf4j-api|jcl-over-slf4j|mysql-connector-java|xml-apis
+
+ true
+
+
+ ${project.basedir}/src/main/resources/META-INF
+
+
+
+
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefActivator.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefActivator.java
index 5485a70bd..fb1ae6788 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefActivator.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefActivator.java
@@ -68,7 +68,7 @@ public class ChefActivator implements BundleActivator {
/**
* The logger to be used
*/
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(ChefActivator.class);
+ private final EELFLogger logger = EELFManager.getInstance().getLogger(ChefActivator.class);
/**
* The configuration object used to configure this bundle
@@ -81,7 +81,7 @@ public class ChefActivator implements BundleActivator {
*
* This method must complete and return to its caller in a timely manner.
*
- *
+ *
* @param context
* The execution context of the bundle being started.
* @throws java.lang.Exception
@@ -97,7 +97,7 @@ public class ChefActivator implements BundleActivator {
configuration = ConfigurationFactory.getConfiguration();
String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME);
logger.info(Msg.COMPONENT_INITIALIZING, appName, "chef adapter");
- adapter = new ChefAdapterImpl(configuration.getProperties());
+ adapter = new ChefAdapterImpl();
if (registration == null) {
logger.info(Msg.REGISTERING_SERVICE, appName, adapter.getAdapterName(),
ChefAdapter.class.getSimpleName());
@@ -115,7 +115,7 @@ public class ChefActivator implements BundleActivator {
*
* This method must complete and return to its caller in a timely manner.
*
- *
+ *
* @param context
* The execution context of the bundle being stopped.
* @throws java.lang.Exception
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefAdapter.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefAdapter.java
index adf7e9ae1..3af963731 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefAdapter.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefAdapter.java
@@ -42,7 +42,7 @@ import org.openecomp.sdnc.sli.SvcLogicJavaPlugin;
*/
public interface ChefAdapter extends SvcLogicJavaPlugin {
- /**
+ /**
* The type of provider to be accessed to locate and operate on a virtual machine instance. This is used to load the
* correct provider support through the CDP IaaS abstraction layer and can be OpenStackProvider, BareMetalProvider,
* or any other supported provider type.
@@ -82,7 +82,7 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
* URL of the server)
*
*
- *
+ *
* @param properties
* A map of name-value pairs that supply the parameters needed by this method. The properties needed are
* defined above.
@@ -112,7 +112,7 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
* URL of the server)
*
*
- *
+ *
* @param properties
* A map of name-value pairs that supply the parameters needed by this method. The properties needed are
* defined above.
@@ -142,7 +142,7 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
* URL of the server)
*
*
- *
+ *
* @param properties
* A map of name-value pairs that supply the parameters needed by this method. The properties needed are
* defined above.
@@ -172,7 +172,7 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
* URL of the server)
*
*
- *
+ *
* @param properties
* A map of name-value pairs that supply the parameters needed by this method. The properties needed are
* defined above.
@@ -188,7 +188,7 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
/**
* Returns the symbolic name of the adapter
- *
+ *
* @return The adapter name
*/
String getAdapterName();
@@ -196,33 +196,25 @@ public interface ChefAdapter extends SvcLogicJavaPlugin {
// Server evacuateServer(Map params, SvcLogicContext ctx) throws APPCException;
//Server migrateServer(Map params, SvcLogicContext ctx) throws APPCException;
-
+
void trigger(Map params, SvcLogicContext ctx) ;
-
+
void chefGet(Map params, SvcLogicContext ctx) ;
-
+
void chefPut(Map params, SvcLogicContext ctx) ;
-
+
void chefPost(Map params, SvcLogicContext ctx) ;
-
+
void chefDelete(Map params, SvcLogicContext ctx) ;
-
+
void nodeObejctBuilder(Map params, SvcLogicContext ctx) ;
-
+
void checkPushJob(Map params, SvcLogicContext ctx) ;
void pushJob(Map params, SvcLogicContext ctx) ;
-
+
void retrieveData (Map params, SvcLogicContext ctx) ;
-
+
void combineStrings (Map params, SvcLogicContext ctx) ;
-
- void VnfcEnvironment (Map params, SvcLogicContext ctx) ;
-
- void VnfcNodeobjects (Map params, SvcLogicContext ctx) ;
-
- void VnfcPushJob (Map params, SvcLogicContext ctx) ;
-
- void fetchResults (Map params, SvcLogicContext ctx) ;
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/ApiMethod.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/ApiMethod.java
index dd7c86219..19e381ec5 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/ApiMethod.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/ApiMethod.java
@@ -45,128 +45,125 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
public class ApiMethod {
- private HttpClient client = null;
- protected HttpRequestBase method = null;
- protected HttpResponse response = null;
- protected String reqBody = "";
- protected String userId = "";
- protected String pemPath = "";
- protected String chefPath = "";
- protected String organizations = "";
- protected int resCode=0;
- protected String responseBody="";
- private String methodName = "GET";
- public String test = "";
- private int returnCode;
- final String KEY_STORE_PATH = "/etc/chef/trusted_certs/mykeystore.jks";
- final String KEY_STORE_PASSWORD = "adminadmin";
- static
-{
- System.setProperty("javax.net.ssl.trustStore", "/opt/app/bvc/chef/chefServerSSL.jks");
- System.setProperty("javax.net.ssl.trustStorePassword", "adminadmin");
- }
- public ApiMethod(String methodName) {
-
- client=HttpClients.createDefault();
- this.methodName = methodName;
- }
-
- public ApiMethod execute() {
- String hashedPath = Utils.sha1AndBase64("/organizations/"+organizations+chefPath);
- String hashedBody = Utils.sha1AndBase64(reqBody);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
- String timeStamp = sdf.format(new Date());
- timeStamp = timeStamp.replace(" ", "T");
- timeStamp = timeStamp + "Z";
-
- StringBuilder sb = new StringBuilder();
- sb.append("Method:").append(methodName).append("\n");
- sb.append("Hashed Path:").append(hashedPath).append("\n");
- sb.append("X-Ops-Content-Hash:").append(hashedBody).append("\n");
- sb.append("X-Ops-Timestamp:").append(timeStamp).append("\n");
- sb.append("X-Ops-UserId:").append(userId);
- test = test + "sb " + sb + "\n";
-
- String auth_String = Utils.signWithRSA(sb.toString(), pemPath);
- String[] auth_headers = Utils.splitAs60(auth_String);
-
- method.addHeader("Content-type", "application/json");
- method.addHeader("X-Ops-Timestamp", timeStamp);
- method.addHeader("X-Ops-Userid", userId);
- method.addHeader("X-Chef-Version", "12.4.1");
- method.addHeader("Accept", "application/json");
- method.addHeader("X-Ops-Content-Hash", hashedBody);
- method.addHeader("X-Ops-Sign", "version=1.0");
-
- for (int i = 0; i < auth_headers.length; i++) {
- method.addHeader("X-Ops-Authorization-" + (i + 1), auth_headers[i]);
- }
-
- try{
- response = client.execute(method);
- resCode = response.getStatusLine().getStatusCode();
- HttpEntity entity1 = response.getEntity();
- responseBody = EntityUtils.toString(entity1);}
- catch(Exception ex){
- resCode=500;
- responseBody=ex.getMessage();
- }
- return this;
- }
-
- public void setHeaders(Header[] headers) {
- for (Header header : headers) {
- this.method.addHeader(header);
- }
- }
-
- public String getResponseBodyAsString() {
- return responseBody;
- }
-
- public int getReturnCode() {
- return resCode;
- }
-
- public String getReqBody() {
- return reqBody;
- }
-
- public void setReqBody(String body) {
- this.reqBody = body;
- }
-
- public String getUserId() {
- return userId;
- }
-
- public void setUserId(String userId) {
- this.userId = userId;
- }
-
- public String getPemPath() {
- return pemPath;
- }
-
- public void setPemPath(String pemPath) {
- this.pemPath = pemPath;
- }
-
- public String getChefPath() {
- return chefPath;
- }
-
- public void setChefPath(String chefPath) {
- this.chefPath = chefPath;
- }
-
- public String getOrganizations() {
- return organizations;
- }
-
- public void setOrganizations(String organizations) {
- this.organizations = organizations;
- }
+ private HttpClient client = null;
+ protected HttpRequestBase method = null;
+ protected HttpResponse response = null;
+ protected String reqBody = "";
+ protected String userId = "";
+ protected String pemPath = "";
+ protected String chefPath = "";
+ protected String organizations = "";
+ protected int resCode=0;
+ protected String responseBody="";
+ private String methodName = "GET";
+ public String test = "";
+ private int returnCode;
+
+ public ApiMethod(String methodName) {
+ client=HttpClients.createDefault();
+ this.methodName = methodName;
+ }
+
+ public ApiMethod execute() {
+ String hashedPath = Utils.sha1AndBase64("/organizations/"+organizations+chefPath);
+ String hashedBody = Utils.sha1AndBase64(reqBody);
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ String timeStamp = sdf.format(new Date());
+ timeStamp = timeStamp.replace(" ", "T");
+ timeStamp = timeStamp + "Z";
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("Method:").append(methodName).append("\n");
+ sb.append("Hashed Path:").append(hashedPath).append("\n");
+ sb.append("X-Ops-Content-Hash:").append(hashedBody).append("\n");
+ sb.append("X-Ops-Timestamp:").append(timeStamp).append("\n");
+ sb.append("X-Ops-UserId:").append(userId);
+ test = test + "sb " + sb + "\n";
+
+ String auth_String = Utils.signWithRSA(sb.toString(), pemPath);
+ String[] auth_headers = Utils.splitAs60(auth_String);
+
+ method.addHeader("Content-type", "application/json");
+ method.addHeader("X-Ops-Timestamp", timeStamp);
+ method.addHeader("X-Ops-Userid", userId);
+ method.addHeader("X-Chef-Version", "12.4.1");
+ method.addHeader("Accept", "application/json");
+ method.addHeader("X-Ops-Content-Hash", hashedBody);
+ method.addHeader("X-Ops-Sign", "version=1.0");
+
+ for (int i = 0; i < auth_headers.length; i++) {
+ method.addHeader("X-Ops-Authorization-" + (i + 1), auth_headers[i]);
+ }
+ /*
+ * test=test+this.method.getMethod()+"\n"; Header[]
+ * RHS=this.method.getHeaders(); for (int i = 0; i < RHS.length; i++) {
+ * test=test+RHS[i]+"\n"; } test=test+this.reqBody+"\n";
+ */
+ try{
+ response = client.execute(method);
+ resCode = response.getStatusLine().getStatusCode();
+ HttpEntity entity1 = response.getEntity();
+ responseBody = EntityUtils.toString(entity1);}
+ catch(Exception ex){
+ resCode=500;
+ responseBody=ex.getMessage();
+ }
+ return this;
+ }
+
+ public void setHeaders(Header[] headers) {
+ for (Header header : headers) {
+ this.method.addHeader(header);
+ }
+ }
+
+ public String getResponseBodyAsString() {
+ return responseBody;
+ }
+
+ public int getReturnCode() {
+ return resCode;
+ }
+
+ public String getReqBody() {
+ return reqBody;
+ }
+
+ public void setReqBody(String body) {
+ this.reqBody = body;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getPemPath() {
+ return pemPath;
+ }
+
+ public void setPemPath(String pemPath) {
+ this.pemPath = pemPath;
+ }
+
+ public String getChefPath() {
+ return chefPath;
+ }
+
+ public void setChefPath(String chefPath) {
+ this.chefPath = chefPath;
+ }
+
+ public String getOrganizations() {
+ return organizations;
+ }
+
+ public void setOrganizations(String organizations) {
+ this.organizations = organizations;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Delete.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Delete.java
index 779311400..85206af36 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Delete.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Delete.java
@@ -28,9 +28,9 @@ import org.apache.http.client.methods.HttpDelete;
public class Delete extends ApiMethod{
- public Delete(HttpDelete method) {
- super("DELETE");
- this.method = method;
- }
+ public Delete(HttpDelete method) {
+ super("DELETE");
+ this.method = method;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Get.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Get.java
index 6cf36606a..948bff6af 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Get.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Get.java
@@ -28,9 +28,8 @@ import org.apache.http.client.methods.HttpGet;
public class Get extends ApiMethod{
- public Get(HttpGet method) {
- super("GET");
- this.method = method;
- }
-
+ public Get(HttpGet method) {
+ super("GET");
+ this.method = method;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Post.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Post.java
index 417f84eed..5e00b09a4 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Post.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Post.java
@@ -29,18 +29,18 @@ import org.apache.http.entity.StringEntity;
public class Post extends ApiMethod{
- public Post(HttpRequestBase method) {
- super("POST");
- this.method = method;
- }
-
- public ApiMethod body(String body){
- this.reqBody = body;
- StringEntity params =new StringEntity (body,"UTF-8");
- params.setContentType("application/json");
- HttpPost post = (HttpPost) method;
- post.setEntity(params);
- return this;
- }
+ public Post(HttpRequestBase method) {
+ super("POST");
+ this.method = method;
+ }
+
+ public ApiMethod body(String body){
+ this.reqBody = body;
+ StringEntity params =new StringEntity (body,"UTF-8");
+ params.setContentType("application/json");
+ HttpPost post = (HttpPost) method;
+ post.setEntity(params);
+ return this;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Put.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Put.java
index 8dea5296a..fa57c1117 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Put.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Put.java
@@ -29,18 +29,18 @@ import org.apache.http.entity.StringEntity;
public class Put extends ApiMethod{
- public Put(HttpRequestBase method) {
- super("PUT");
- this.method = method;
- }
-
- public ApiMethod body(String body){
- this.reqBody = body;
- StringEntity params =new StringEntity (body,"UTF-8");
- params.setContentType("application/json");
- HttpPut put = (HttpPut) method;
- put.setEntity(params);
- return this;
- }
+ public Put(HttpRequestBase method) {
+ super("PUT");
+ this.method = method;
+ }
+
+ public ApiMethod body(String body){
+ this.reqBody = body;
+ StringEntity params =new StringEntity (body,"UTF-8");
+ params.setContentType("application/json");
+ HttpPut put = (HttpPut) method;
+ put.setEntity(params);
+ return this;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/ChefApiClient.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/ChefApiClient.java
index 945ebc261..7aa63193b 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/ChefApiClient.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/ChefApiClient.java
@@ -27,66 +27,61 @@ import org.apache.http.client.methods.*;
import org.openecomp.appc.adapter.chef.chefapi.*;
public class ChefApiClient {
- private String endpoint;
- private String userId;
- private String pemPath;
- private String organizations;
+ private String endpoint;
+ private String userId;
+ private String pemPath;
+ private String organizations;
-
+ /**
+ *
+ * @param userId user name correspond to the pem key
+ * @param pemPath path of the auth key
+ * @param endpoint chef api server address
+ */
+ public ChefApiClient(String userId, String pemPath, String endpoint,String organizations){
+ this.userId = userId;
+ this.pemPath = pemPath;
+ this.endpoint = endpoint;
+ this.organizations=organizations;
+ }
-
- /**
- *
- * @param userId user name correspond to the pem key
- * @param pemPath path of the auth key
- * @param endpoint chef api server address
- */
- public ChefApiClient(String userId, String pemPath, String endpoint,String organizations){
- this.userId = userId;
- this.pemPath = pemPath;
- this.endpoint = endpoint;
- this.organizations=organizations;
- }
+ /**
+ *
+ * @param path in the endpoint. e.g /clients
+ * @return
+ */
+ public Get get(String path){
+ Get get = new Get(new HttpGet(endpoint+path));
+ get.setPemPath(pemPath);
+ get.setUserId(userId);
+ get.setOrganizations(organizations);
+ get.setChefPath(path);
+ return get;
+ }
- /**
- *
- * @param path in the endpoint. e.g /clients
- * @return
- */
- public Get get(String path){
- Get get = new Get(new HttpGet(endpoint+path));
- get.setPemPath(pemPath);
- get.setUserId(userId);
- get.setOrganizations(organizations);
- get.setChefPath(path);
- return get;
- }
-
- public Put put(String path){
- Put put = new Put(new HttpPut(endpoint+path));
- put.setPemPath(pemPath);
- put.setUserId(userId);
- put.setOrganizations(organizations);
- put.setChefPath(path);
- return put;
+ public Put put(String path){
+ Put put = new Put(new HttpPut(endpoint+path));
+ put.setPemPath(pemPath);
+ put.setUserId(userId);
+ put.setOrganizations(organizations);
+ put.setChefPath(path);
+ return put;
}
- public Post post(String path){
- Post post = new Post(new HttpPost(endpoint+path));
- post.setPemPath(pemPath);
- post.setUserId(userId);
- post.setOrganizations(organizations);
- post.setChefPath(path);
- return post;
- }
-
- public Delete delete(String path){
- Delete del = new Delete(new HttpDelete(endpoint+path));
- del.setPemPath(pemPath);
- del.setUserId(userId);
- del.setOrganizations(organizations);
- del.setChefPath(path);
- return del;
- }
+ public Post post(String path){
+ Post post = new Post(new HttpPost(endpoint+path));
+ post.setPemPath(pemPath);
+ post.setUserId(userId);
+ post.setOrganizations(organizations);
+ post.setChefPath(path);
+ return post;
+ }
-
+ public Delete delete(String path){
+ Delete del = new Delete(new HttpDelete(endpoint+path));
+ del.setPemPath(pemPath);
+ del.setUserId(userId);
+ del.setOrganizations(organizations);
+ del.setChefPath(path);
+ return del;
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/Utils.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/Utils.java
index 07c983a43..d20228e04 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/Utils.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/Utils.java
@@ -44,64 +44,70 @@ import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.bouncycastle.openssl.PEMKeyPair;
public class Utils {
- private Utils(){}
-
- public static String sha1AndBase64(String inStr) {
- MessageDigest md = null;
- String outStr = null;
- byte[] outbty = null;
- try {
- md = MessageDigest.getInstance("SHA-1");
- byte[] digest = md.digest(inStr.getBytes());
- outbty = Base64.encode(digest);
- } catch (NoSuchAlgorithmException nsae) {
- nsae.printStackTrace();
- }
- return new String(outbty);
- }
-
- public static String signWithRSA(String inStr, String pemPath) {
- byte[] outStr = null;
- Security.addProvider(new BouncyCastleProvider());
- try (FileReader fr = new FileReader(pemPath);
- BufferedReader br = new BufferedReader(fr)) {
- PEMParser pemParser = new PEMParser(br);
- JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
- Object object = pemParser.readObject();
- KeyPair kp = converter.getKeyPair((PEMKeyPair) object);;
- PrivateKey privateKey = kp.getPrivate();
- Signature instance = Signature.getInstance("RSA");
- instance.initSign(privateKey);
- instance.update(inStr.getBytes());
+ private Utils(){}
- byte[] signature = instance.sign();
- outStr = Base64.encode(signature);
- String tmp = new String(outStr);
- } catch (InvalidKeyException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (SignatureException e) {
- e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- return new String(outStr);
- }
-
- public static String[] splitAs60(String inStr) {
- int count = inStr.length() / 60;
- String[] out = new String[count + 1];
+ public static String sha1AndBase64(String inStr) {
+ MessageDigest md = null;
+ String outStr = null;
+ byte[] outbty = null;
+ try {
+ md = MessageDigest.getInstance("SHA-1");
+ byte[] digest = md.digest(inStr.getBytes());
+ outbty = Base64.encode(digest);
+ } catch (NoSuchAlgorithmException nsae) {
+ nsae.printStackTrace();
+ }
+ return new String(outbty);
+ }
+
+ public static String signWithRSA(String inStr, String pemPath) {
+ byte[] outStr = null;
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(pemPath));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ Security.addProvider(new BouncyCastleProvider());
+ try {
+
+ PEMParser pemParser = new PEMParser(br);
+ JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
+ Object object = pemParser.readObject();
+ KeyPair kp = converter.getKeyPair((PEMKeyPair) object);;
+ PrivateKey privateKey = kp.getPrivate();
+ Signature instance = Signature.getInstance("RSA");
+ instance.initSign(privateKey);
+ instance.update(inStr.getBytes());
+
+ byte[] signature = instance.sign();
+ outStr = Base64.encode(signature);
+ String tmp = new String(outStr);
+ } catch (InvalidKeyException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (SignatureException e) {
+ e.printStackTrace();
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ }
+ return new String(outStr);
+ }
+
+ public static String[] splitAs60(String inStr) {
+ int count = inStr.length() / 60;
+ String[] out = new String[count + 1];
+
+ for (int i = 0; i < count; i++) {
+ String tmp = inStr.substring(i * 60, i * 60 + 60);
+ out[i] = tmp;
+ }
+ if (inStr.length() > count * 60) {
+ String tmp = inStr.substring(count * 60, inStr.length());
+ out[count] = tmp;
+ }
+ return out;
+ }
- for (int i = 0; i < count; i++) {
- String tmp = inStr.substring(i * 60, i * 60 + 60);
- out[i] = tmp;
- }
- if (inStr.length() > count * 60) {
- String tmp = inStr.substring(count * 60, inStr.length());
- out[count] = tmp;
- }
- return out;
- }
-
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/ChefAdapterImpl.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/ChefAdapterImpl.java
index 5326b66b4..048d362d4 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/ChefAdapterImpl.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/ChefAdapterImpl.java
@@ -24,747 +24,491 @@
package org.openecomp.appc.adapter.chef.impl;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.regex.Pattern;
-import java.util.*;
-
-
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONObject;
import org.openecomp.appc.Constants;
import org.openecomp.appc.adapter.chef.ChefAdapter;
-import org.openecomp.appc.adapter.chef.chefapi.*;
-import org.openecomp.appc.adapter.chef.chefclient.*;
+import org.openecomp.appc.adapter.chef.chefapi.ApiMethod;
+import org.openecomp.appc.adapter.chef.chefclient.ChefApiClient;
import org.openecomp.appc.configuration.Configuration;
import org.openecomp.appc.configuration.ConfigurationFactory;
-import org.openecomp.appc.exceptions.APPCException;
-import org.openecomp.appc.exceptions.UnknownProviderException;
-import org.openecomp.appc.i18n.Msg;
-import org.openecomp.appc.pool.Pool;
-import org.openecomp.appc.pool.PoolExtensionException;
-import org.openecomp.appc.util.StructuredPropertyHelper;
-import org.openecomp.appc.util.StructuredPropertyHelper.Node;
-import com.att.cdp.exceptions.ContextConnectionException;
-import com.att.cdp.exceptions.ResourceNotFoundException;
-import com.att.cdp.exceptions.TimeoutException;
-import com.att.cdp.exceptions.ZoneException;
-import com.att.cdp.pal.util.StringHelper;
-import com.att.cdp.zones.ComputeService;
-import com.att.cdp.zones.Context;
-import com.att.cdp.zones.ImageService;
-import com.att.cdp.zones.Provider;
-import com.att.cdp.zones.model.Image;
-import com.att.cdp.zones.model.Server;
-import com.att.cdp.zones.model.ServerBootSource;
-import com.att.cdp.zones.model.Server.Status;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.att.eelf.i18n.EELFResourceManager;
import org.openecomp.sdnc.sli.SvcLogicContext;
-import org.slf4j.MDC;
-
-import java.net.InetAddress;
-import java.util.Locale;
-import java.util.UUID;
-
-import org.apache.http.*;
-import org.apache.http.client.*;
-import org.apache.http.client.methods.*;
-import org.apache.http.impl.client.*;
-import org.apache.http.util.EntityUtils;
-
-import static com.att.eelf.configuration.Configuration.*;
-
-import java.io.IOException;
-
-import java.net.InetAddress;
-import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Properties;
-//chef
-import org.openecomp.appc.adapter.chef.chefapi.*;
-import org.openecomp.appc.adapter.chef.chefclient.*;
-
-//json
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+import java.util.Map;
+
/**
* This class implements the {@link ChefAdapter} interface. This interface
* defines the behaviors that our service provides.
*/
public class ChefAdapterImpl implements ChefAdapter {
-
- // chef server Initialize variable
- public String clientName = "";
- public String clientPrivatekey = "";
- public String chefserver = "";
- public String serverAddress = "";
- public String organizations = "";
- @SuppressWarnings("nls")
- public static final String MDC_ADAPTER = "adapter";
-
- @SuppressWarnings("nls")
- public static final String MDC_SERVICE = "service";
-
- @SuppressWarnings("nls")
- public static final String OUTCOME_FAILURE = "failure";
-
- @SuppressWarnings("nls")
- public static final String OUTCOME_SUCCESS = "success";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER = "provider";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_IDENTITY = "identity";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_NAME = "name";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_TENANT = "tenant";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_TENANT_NAME = "name";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_TENANT_PASSWORD = "password"; // NOSONAR
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_TENANT_USERID = "userid";
-
- @SuppressWarnings("nls")
- public static final String PROPERTY_PROVIDER_TYPE = "type";
-
-
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(ChefAdapterImpl.class);
-
- private static final char LPAREN = '(';
-
- private static final char NL = '\n';
-
- private static final char QUOTE = '\'';
-
- private static final char RPAREN = ')';
-
- private static final char SPACE = ' ';
-
- public ChefAdapterImpl() {
- initialize();
-
- }
-
- public ChefAdapterImpl(boolean initialize) {
-
- if (initialize) {
- initialize();
-
- }
- }
-
- public ChefAdapterImpl(Properties props) {
- initialize();
-
- }
-
- public ChefAdapterImpl(String key) {
- initialize();
-
- }
-
-
- @Override
- public String getAdapterName() {
- return "chef adapter";
- }
-
-
- @SuppressWarnings("nls")
- @Override
- public void VnfcEnvironment(Map params, SvcLogicContext ctx) {
- logger.info("environment of VNF-C");
- chefInfo(params);
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- String env = params.get("Environment");
- if(env.equals("")){
- chefServerResult(rc, "200", "Skip Environment block ");}
- else{
- JSONObject env_J = new JSONObject(env);
- String envName = env_J.getString("name");
- int code;
- String message = null;
- if (privateKeyCheck()) {
- // update the details of an environment on the Chef server.
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.put("/environments/"+envName).body(env);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- if(code == 404 ){
- //need create a new environment
- am = cac.post("/environments").body(env);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- }
-
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- chefServerResult(rc, Integer.toString(code), message);
- }
- }
-
-
- @SuppressWarnings("nls")
- @Override
- public void VnfcNodeobjects(Map params, SvcLogicContext ctx) {
- logger.info("update the nodeObjects of VNF-C");
- chefInfo(params);
- String nodeList_S = params.get("NodeList");
- String node_S = params.get("Node");
- nodeList_S = nodeList_S.replace("[","");
- nodeList_S = nodeList_S.replace("]","");
- nodeList_S = nodeList_S.replace("\"","");
- nodeList_S = nodeList_S.replace(" ","");
- List nodes = Arrays.asList(nodeList_S.split("\\s*,\\s*"));
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- int code=200;
- String message = null;
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
-
- for(int i = 0; i < nodes.size(); i++){
- String nodeName=nodes.get(i);
- JSONObject node_J = new JSONObject(node_S);
- node_J.remove("name");
- node_J.put("name",nodeName);
- String nodeObject=node_J.toString();
- logger.info(nodeObject);
- ApiMethod am = cac.put("/nodes/"+nodeName).body(nodeObject);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- if(code != 200){
- break;
- }
-
- }
- }else{
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- chefServerResult(rc, Integer.toString(code), message);
- }
-
-
- @SuppressWarnings("nls")
- @Override
- public void VnfcPushJob(Map params, SvcLogicContext ctx) {
- chefInfo(params);
- String nodeList = params.get("NodeList");
- String isCallback = params.get("CallbackCapable");
- String chefAction = "/pushy/jobs";
- //need work on this
- String pushRequest="";
- if(isCallback.equals("true")){
- String requestId = params.get("RequestId");
- String callbackUrl = params.get("CallbackUrl");
- pushRequest="{"+
- "\"command\": \"chef-client\","+
- "\"run_timeout\": 300,"+
- "\"nodes\":" +nodeList +","+
- "\"env\": {\"RequestId\": \""+ requestId +"\", \"CallbackUrl\": \""+ callbackUrl +"\"},"+
- "\"capture_output\": true"+
- "}";
- }else{
- pushRequest="{"+
- "\"command\": \"chef-client\","+
- "\"run_timeout\": 300,"+
- "\"nodes\":" +nodeList +","+
- "\"env\": {},"+
- "\"capture_output\": true"+
- "}";
- }
- RequestContext rc = new RequestContext(ctx);
-
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.post(chefAction).body(pushRequest);
-
- am.execute();
- int code = am.getReturnCode();
- String message = am.getResponseBodyAsString();
- if (code == 201) {
- int startIndex = message.indexOf("jobs") + 5;
- int endIndex = message.length() - 2;
- String jobID = message.substring(startIndex, endIndex);
- svcLogic.setAttribute("jobID", jobID);
- logger.info(jobID);
- }
- chefServerResult(rc, Integer.toString(code), message);
- }
-
-
- @SuppressWarnings("nls")
- @Override
- public void fetchResults (Map params, SvcLogicContext ctx) {
- chefInfo(params);
- String nodeList_S = params.get("NodeList");
- nodeList_S = nodeList_S.replace("[","");
- nodeList_S = nodeList_S.replace("]","");
- nodeList_S = nodeList_S.replace("\"","");
- nodeList_S = nodeList_S.replace(" ","");
- List nodes = Arrays.asList(nodeList_S.split("\\s*,\\s*"));
- JSONObject Result = new JSONObject();
- String returnCode= "200";
- String returnMessage="";
- for (int i = 0; i < nodes.size(); i++){
- String node=nodes.get(i);
- String chefAction="/nodes/"+node;
- int code;
- String message = null;
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.get(chefAction);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- if (code==200){
- JSONObject nodeResult = new JSONObject();
- JSONObject allNodeData = new JSONObject(message);
- String attribute= "PushJobOutput";
- String resultData;
- allNodeData=allNodeData.getJSONObject("normal");
- try {
- resultData = allNodeData.getString(attribute);
- } catch (Exception exc1) {
- try {
- resultData = allNodeData.getJSONObject(attribute).toString();
- } catch (Exception exc2) {
- try {
- resultData = allNodeData.getJSONArray(attribute).toString();
- }catch (Exception exc3){
- returnCode = "500";
- returnMessage="cannot find "+attribute;
- break;
- }
- }
- }
- nodeResult.put(attribute,resultData);
-
- Result.put(node,nodeResult);
- }else{
- returnCode="500";
- returnMessage = message+" Cannot access: "+ node;
- break;
- }
-
- }
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- if (!returnCode.equals("500")){
- returnMessage=Result.toString();
- returnCode="200";
- }
- chefServerResult(rc, returnCode, returnMessage);
- }
-
-
-
- /**
- * build node object
- */
-
- @SuppressWarnings("nls")
- @Override
- public void nodeObejctBuilder(Map params, SvcLogicContext ctx) {
- logger.info("nodeObejctBuilder");
- String name = params.get("org.openecomp.appc.instance.nodeobject.name");
- String normal = params.get("org.openecomp.appc.instance.nodeobject.normal");
- String overrides = params.get("org.openecomp.appc.instance.nodeobject.overrides");
- String defaults = params.get("org.openecomp.appc.instance.nodeobject.defaults");
- String run_list = params.get("org.openecomp.appc.instance.nodeobject.run_list");
- String chef_environment = params.get("org.openecomp.appc.instance.nodeobject.chef_environment");
- String nodeObject = "{\"json_class\":\"Chef::Node\",\"default\":{" + defaults
- + "},\"chef_type\":\"node\",\"run_list\":[" + run_list + "],\"override\":{" + overrides
- + "},\"normal\": {" + normal + "},\"automatic\":{},\"name\":\"" + name + "\",\"chef_environment\":\""
- + chef_environment + "\"}";
- logger.info(nodeObject);
-
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setAttribute("org.openecomp.appc.chef.nodeObject", nodeObject);
-
- }
-
- /**
- * Nicolas send get request to chef server
- */
-
- public void chefInfo(Map params) {
- clientName = params.get("org.openecomp.appc.instance.username");
- serverAddress = params.get("org.openecomp.appc.instance.serverAddress");
- organizations = params.get("org.openecomp.appc.instance.organizations");
- chefserver = "https://" + serverAddress + "/organizations/" + organizations;
- clientPrivatekey = "/opt/app/bvc/chef/" + serverAddress + "/" + organizations + "/" + clientName + ".pem";
- }
-
- public Boolean privateKeyCheck() {
- File f = new File(clientPrivatekey);
- if (f.exists()) {
- return true;
- } else {
- return false;
- }
- }
-
- @SuppressWarnings("nls")
- @Override
- public void retrieveData(Map params, SvcLogicContext ctx) {
- String contextData = "someValue";
- String allConfigData = params.get("org.openecomp.appc.instance.allConfig");
- String key = params.get("org.openecomp.appc.instance.key");
- String dgContext = params.get("org.openecomp.appc.instance.dgContext");
- JSONObject josnConfig = new JSONObject(allConfigData);
- try {
- contextData = josnConfig.getString(key);
- } catch (Exception ex) {
- try {
- contextData = josnConfig.getJSONObject(key).toString();
- } catch (Exception exc) {
- contextData = josnConfig.getJSONArray(key).toString();
- }
- }
-
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setAttribute(dgContext, contextData);
- }
-
- @SuppressWarnings("nls")
- @Override
- public void combineStrings(Map params, SvcLogicContext ctx) {
-
- String String1 = params.get("org.openecomp.appc.instance.String1");
- String String2 = params.get("org.openecomp.appc.instance.String2");
- String dgContext = params.get("org.openecomp.appc.instance.dgContext");
- String contextData = String1 + String2;
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setAttribute(dgContext, contextData);
- }
-
-
- /**
- * Send GET request to chef server
- */
-
- @SuppressWarnings("nls")
- @Override
- public void chefGet(Map params, SvcLogicContext ctx) {
- logger.info("chef get method");
- chefInfo(params);
- String chefAction = params.get("org.openecomp.appc.instance.chefAction");
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- int code;
- String message = null;
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.get(chefAction);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- chefServerResult(rc, Integer.toString(code), message);
-
- }
-
- /**
- * send put request to chef server
- */
-
- @SuppressWarnings("nls")
- @Override
- public void chefPut(Map params, SvcLogicContext ctx) {
- chefInfo(params);
- String chefAction = params.get("org.openecomp.appc.instance.chefAction");
- String CHEF_NODE_STR = params.get("org.openecomp.appc.instance.chefRequestBody");
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- int code;
- String message = null;
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
-
- ApiMethod am = cac.put(chefAction).body(CHEF_NODE_STR);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- logger.info(code + " " + message);
- chefServerResult(rc, Integer.toString(code), message);
-
- }
-
- /**
- * Nicolas send Post request to chef server
- */
-
- @SuppressWarnings("nls")
- @Override
- public void chefPost(Map params, SvcLogicContext ctx) {
- chefInfo(params);
- logger.info("chef Post method");
- logger.info(clientName + " " + clientPrivatekey + " " + chefserver + " " + organizations);
- String CHEF_NODE_STR = params.get("org.openecomp.appc.instance.chefRequestBody");
- String chefAction = params.get("org.openecomp.appc.instance.chefAction");
-
- // attributes="\"reconfig-test\":{\"secret\":\"newpass2\"}";
- // String CHEF_NODE_STR =
- // "{\"json_class\":\"Chef::Node\",\"default\":{},\"chef_type\":\"node\",\"run_list\":[\""+runList+"\"],\"override\":{},\"automatic\":{},\"normal\":{"+attributes+"},\"name\":\"testnode\",\"chef_environment\":\"_default\"}";
- // String CHEF_NODE_STR = "{\"json_class\":\"Chef::Node\"}";
- // logger.info(vm_url);
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- int code;
- String message = null;
- // should load pem from somewhere else
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
-
- // need pass path into it
- // "/nodes/testnode"
- ApiMethod am = cac.post(chefAction).body(CHEF_NODE_STR);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- logger.info(code + " " + message);
- chefServerResult(rc, Integer.toString(code), message);
- }
-
- /**
- * Nicolas send delete request to chef server
- */
-
- @SuppressWarnings("nls")
- @Override
- public void chefDelete(Map params, SvcLogicContext ctx) {
- logger.info("chef delete method");
- chefInfo(params);
- String chefAction = params.get("org.openecomp.appc.instance.chefAction");
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- int code;
- String message = null;
- if (privateKeyCheck()) {
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.delete(chefAction);
- am.execute();
- code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- } else {
- code = 500;
- message = "Cannot find the private key in the APPC file system, please load the private key to "
- + clientPrivatekey;
- }
- logger.info(code + " " + message);
- chefServerResult(rc, Integer.toString(code), message);
- }
-
-
-
-
-
-
- @SuppressWarnings("nls")
- @Override
- public void trigger(Map params, SvcLogicContext ctx) {
- logger.info("Run trigger method");
- String tVmIp = params.get("ip");
- // String tUrl = "http://" + tVmIp;
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
-
- HttpGet httpGet = new HttpGet(tVmIp);
- try ( CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(httpGet); )
- {
- int responseCode = response.getStatusLine().getStatusCode();
- HttpEntity entity = response.getEntity();
- String responseOutput = EntityUtils.toString(entity);
- chefClientResult(rc, Integer.toString(responseCode), responseOutput);
- doSuccess(rc);
- } catch (Exception ex) {
- doFailure(rc, 500, ex.toString());
- }
- }
-
-
-
-
- @SuppressWarnings("nls")
- @Override
- public void checkPushJob(Map params, SvcLogicContext ctx) {
- chefInfo(params);
- String jobID = params.get("org.openecomp.appc.instance.jobid");
- int retryTimes = Integer.parseInt(params.get("org.openecomp.appc.instance.retryTimes"));
- int retryInterval = Integer.parseInt(params.get("org.openecomp.appc.instance.retryInterval"));
- String chefAction = "/pushy/jobs/" + jobID;
-
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- String message = "";
- String status = "";
- for (int i = 0; i < retryTimes; i++) {
- try {
- Thread.sleep(retryInterval); // 1000 milliseconds is one second.
- } catch (InterruptedException ex) {
- Thread.currentThread().interrupt();
- }
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.get(chefAction);
- am.execute();
- int code = am.getReturnCode();
- message = am.getResponseBodyAsString();
- JSONObject obj = new JSONObject(message);
- status = obj.getString("status");
- if (!status.equals("running")) {
- logger.info(i + " time " + code + " " + status);
- break;
- }
-
- }
- if (status.equals("complete")) {
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "200");
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", message);
- } else {
- if (status.equals("running")) {
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "202");
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", "chef client runtime out");
- } else {
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "500");
- svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", message);
- }
- }
- }
-
-
- @SuppressWarnings("nls")
- @Override
- public void pushJob(Map params, SvcLogicContext ctx) {
- chefInfo(params);
- String pushRequest = params.get("org.openecomp.appc.instance.pushRequest");
- String chefAction = "/pushy/jobs";
- RequestContext rc = new RequestContext(ctx);
- rc.isAlive();
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
- ApiMethod am = cac.post(chefAction).body(pushRequest);
- ;
- am.execute();
- int code = am.getReturnCode();
- String message = am.getResponseBodyAsString();
- if (code == 201) {
- int startIndex = message.indexOf("jobs") + 6;
- int endIndex = message.length() - 2;
- String jobID = message.substring(startIndex, endIndex);
- svcLogic.setAttribute("org.openecomp.appc.jobID", jobID);
- logger.info(jobID);
- }
- chefServerResult(rc, Integer.toString(code), message);
- }
-
- @SuppressWarnings("static-method")
- private void doFailure(RequestContext rc, int code, String message) {
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- String msg = (message == null) ? Integer.toString(code) : message;
- if (msg.contains("\n")) {
- msg = msg.substring(msg.indexOf("\n"));
- }
-
- String status;
- try {
- status = Integer.toString(code);
- } catch (Exception e) {
- status = "500";
- }
- svcLogic.setAttribute("chefAgent.code", status);
- svcLogic.setAttribute("chefAgent.message", msg);
- }
-
-
- @SuppressWarnings("static-method")
- private void doSuccess(RequestContext rc) {
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setAttribute("chefAgent.code", "200");
- }
-
- @SuppressWarnings("static-method")
- private void chefServerResult(RequestContext rc, String code, String message) {
- String msg = (message == null) ? " " : message;
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setStatus(OUTCOME_SUCCESS);
- svcLogic.setAttribute("chefServerResult.code", code);
- svcLogic.setAttribute("chefServerResult.message", message);
- }
-
- @SuppressWarnings("static-method")
- private void chefClientResult(RequestContext rc, String code, String message) {
- String msg = (message == null) ? " " : message;
- SvcLogicContext svcLogic = rc.getSvcLogicContext();
- svcLogic.setStatus(OUTCOME_SUCCESS);
- svcLogic.setAttribute("chefClientResult.code", code);
- svcLogic.setAttribute("chefClientResult.message", message);
- }
-
-
- private void initialize() {
-
- logger.info("init chef adapter!!!!!");
-
- }
-
-
+ //chef server Initialize variable
+ private String clientName="";
+ private String clientPrivatekey="";
+ private String chefserver="";
+ private String serverAddress="";
+ private String organizations="";
+
+ /**
+ * The constant for the status code for a successful outcome
+ */
+ private static final String OUTCOME_SUCCESS = "success";
+
+ /**
+ * The logger to be used
+ */
+ private final EELFLogger logger = EELFManager.getInstance().getLogger(ChefAdapterImpl.class);
+
+ /**
+ * A reference to the adapter configuration object.
+ */
+ private Configuration configuration;
+
+ /**
+ * This default constructor is used as a work around because the activator
+ * wasnt getting called
+ */
+ public ChefAdapterImpl() {
+ initialize();
+
+ }
+
+ /**
+ * This constructor is used primarily in the test cases to bypass
+ * initialization of the adapter for isolated, disconnected testing
+ *
+ * @param initialize
+ * True if the adapter is to be initialized, can false if not
+ */
+ public ChefAdapterImpl(boolean initialize) {
+ configuration = ConfigurationFactory.getConfiguration();
+ if (initialize) {
+ initialize();
+
+ }
+ }
+
+ public ChefAdapterImpl(String key) {
+ initialize(key);
+
+ }
+
+ /**
+ * Returns the symbolic name of the adapter
+ *
+ * @return The adapter name
+ * @see org.openecomp.appc.adapter.chef.ChefAdapter#getAdapterName()
+ */
+ @Override
+ public String getAdapterName() {
+ return configuration.getProperty(Constants.PROPERTY_ADAPTER_NAME);
+ }
+
+ private void X__________________________________X() {
+ }
+
+ /**
+ * @see org.openecomp.appc.adapter.chef.ChefAdapter#evacuateServer(java.util.Map,
+ * org.openecomp.sdnc.sli.SvcLogicContext)
+ */
+
+ private void X___________________________________X() {
+ }
+
+ /**
+ * @see org.openecomp.appc.adapter.chef.ProviderAdapter#rebuildServer(java.util.Map,
+ * org.openecomp.sdnc.sli.SvcLogicContext)
+ */
+
+
+ /**
+ * build node object
+ */
+
+ @SuppressWarnings("nls")
+ @Override
+ public void nodeObejctBuilder(Map params, SvcLogicContext ctx) {
+ logger.info("nodeObejctBuilder");
+ String name = params.get("org.openecomp.appc.instance.nodeobject.name");
+ String normal = params.get("org.openecomp.appc.instance.nodeobject.normal");
+ String overrides = params.get("org.openecomp.appc.instance.nodeobject.overrides");
+ String defaults = params.get("org.openecomp.appc.instance.nodeobject.defaults");
+ String run_list = params.get("org.openecomp.appc.instance.nodeobject.run_list");
+ String chef_environment = params.get("org.openecomp.appc.instance.nodeobject.chef_environment");
+ String nodeObject = "{\"json_class\":\"Chef::Node\",\"default\":{" + defaults
+ + "},\"chef_type\":\"node\",\"run_list\":[" + run_list + "],\"override\":{" + overrides
+ + "},\"normal\": {" + normal + "},\"automatic\":{},\"name\":\"" + name + "\",\"chef_environment\":\""
+ + chef_environment + "\"}";
+ logger.info(nodeObject);
+
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setAttribute("org.openecomp.appc.chef.nodeObject", nodeObject);
+
+ }
+
+ /**
+ * Nicolas send get request to chef server
+ */
+ public void chefInfo(Map params) {
+ clientName = params.get("org.openecomp.appc.instance.username");
+ serverAddress = params.get("org.openecomp.appc.instance.serverAddress");
+ organizations = params.get("org.openecomp.appc.instance.organizations");
+ chefserver = "https://" + serverAddress + "/organizations/" + organizations;
+ clientPrivatekey = "/opt/app/bvc/chef/" + serverAddress + "/" + organizations + "/" + clientName + ".pem";
+ }
+
+ public Boolean privateKeyCheck() {
+ File f = new File(clientPrivatekey);
+ return f.exists();
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public void retrieveData(Map params, SvcLogicContext ctx) {
+ String allConfigData = params.get("org.openecomp.appc.instance.allConfig");
+ String key = params.get("org.openecomp.appc.instance.key");
+ String dgContext = params.get("org.openecomp.appc.instance.dgContext");
+ JSONObject josnConfig = new JSONObject(allConfigData);
+
+ String contextData;
+ try {
+ contextData = josnConfig.getString(key);
+ } catch (Exception ex) {
+ try {
+ contextData = josnConfig.getJSONObject(key).toString();
+ } catch (Exception exc) {
+ contextData = josnConfig.getJSONArray(key).toString();
+ }
+ }
+
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setAttribute(dgContext, contextData);
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public void combineStrings(Map params, SvcLogicContext ctx) {
+
+ String String1 = params.get("org.openecomp.appc.instance.String1");
+ String String2 = params.get("org.openecomp.appc.instance.String2");
+ String dgContext = params.get("org.openecomp.appc.instance.dgContext");
+ String contextData = String1 + String2;
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setAttribute(dgContext, contextData);
+ }
+
+
+ /**
+ * Send GET request to chef server
+ */
+
+ @SuppressWarnings("nls")
+ @Override
+ public void chefGet(Map params, SvcLogicContext ctx) {
+ logger.info("chef get method");
+ chefInfo(params);
+ String chefAction = params.get("org.openecomp.appc.instance.chefAction");
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ int code;
+ String message;
+ if (privateKeyCheck()) {
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+ ApiMethod am = cac.get(chefAction);
+ am.execute();
+ code = am.getReturnCode();
+ message = am.getResponseBodyAsString();
+ } else {
+ code = 500;
+ message = "Cannot find the private key in the APPC file system, please load the private key to "
+ + clientPrivatekey;
+ }
+ chefServerResult(rc, Integer.toString(code), message);
+
+ }
+
+ /**
+ * Send PUT request to chef server
+ */
+ @SuppressWarnings("nls")
+ @Override
+ public void chefPut(Map params, SvcLogicContext ctx) {
+ chefInfo(params);
+ String chefAction = params.get("org.openecomp.appc.instance.chefAction");
+ String CHEF_NODE_STR = params.get("org.openecomp.appc.instance.chefRequestBody");
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ int code;
+ String message;
+ if (privateKeyCheck()) {
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+
+ ApiMethod am = cac.put(chefAction).body(CHEF_NODE_STR);
+ am.execute();
+ code = am.getReturnCode();
+ message = am.getResponseBodyAsString();
+ } else {
+ code = 500;
+ message = "Cannot find the private key in the APPC file system, please load the private key to "
+ + clientPrivatekey;
+ }
+ logger.info(code + " " + message);
+ chefServerResult(rc, Integer.toString(code), message);
+
+ }
+
+ /**
+ * Nicolas send Post request to chef server
+ */
+
+ @SuppressWarnings("nls")
+ @Override
+ public void chefPost(Map params, SvcLogicContext ctx) {
+ chefInfo(params);
+ logger.info("chef Post method");
+ logger.info(clientName + " " + clientPrivatekey + " " + chefserver + " " + organizations);
+ String CHEF_NODE_STR = params.get("org.openecomp.appc.instance.chefRequestBody");
+ String chefAction = params.get("org.openecomp.appc.instance.chefAction");
+
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ int code;
+ String message;
+ // should load pem from somewhere else
+ if (privateKeyCheck()) {
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+
+ // need pass path into it
+ // "/nodes/testnode"
+ ApiMethod am = cac.post(chefAction).body(CHEF_NODE_STR);
+ am.execute();
+ code = am.getReturnCode();
+ message = am.getResponseBodyAsString();
+ } else {
+ code = 500;
+ message = "Cannot find the private key in the APPC file system, please load the private key to "
+ + clientPrivatekey;
+ }
+ logger.info(code + " " + message);
+ chefServerResult(rc, Integer.toString(code), message);
+ }
+
+ /**
+ * Nicolas send delete request to chef server
+ */
+
+ @SuppressWarnings("nls")
+ @Override
+ public void chefDelete(Map params, SvcLogicContext ctx) {
+ logger.info("chef delete method");
+ chefInfo(params);
+ String chefAction = params.get("org.openecomp.appc.instance.chefAction");
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ int code;
+ String message;
+ if (privateKeyCheck()) {
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+ ApiMethod am = cac.delete(chefAction);
+ am.execute();
+ code = am.getReturnCode();
+ message = am.getResponseBodyAsString();
+ } else {
+ code = 500;
+ message = "Cannot find the private key in the APPC file system, please load the private key to "
+ + clientPrivatekey;
+ }
+ logger.info(code + " " + message);
+ chefServerResult(rc, Integer.toString(code), message);
+ }
+
+
+ /**
+ * Trigger target vm run chef
+ */
+
+ @SuppressWarnings("nls")
+ @Override
+ public void trigger(Map params, SvcLogicContext ctx) {
+ logger.info("Run trigger method");
+ String tVmIp = params.get("org.openecomp.appc.instance.ip");
+ //String tUrl = "http://" + tVmIp;
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+
+ try {
+ HttpGet httpGet = new HttpGet(tVmIp);
+ HttpClient httpClient = HttpClients.createDefault();
+ HttpResponse response;
+ response = httpClient.execute(httpGet);
+ int responseCode=response.getStatusLine().getStatusCode();
+ HttpEntity entity = response.getEntity();
+ String responseOutput=EntityUtils.toString(entity);
+ chefClientResult(rc,Integer.toString(responseCode),responseOutput);
+ doSuccess(rc);
+ } catch (Exception ex) {
+ doFailure(rc, 500 , ex.toString());
+ }
+ }
+
+
+ @SuppressWarnings("nls")
+ @Override
+ public void checkPushJob(Map params, SvcLogicContext ctx) {
+ chefInfo(params);
+ String jobID = params.get("org.openecomp.appc.instance.jobid");
+ int retryTimes = Integer.parseInt(params.get("org.openecomp.appc.instance.retryTimes"));
+ int retryInterval = Integer.parseInt(params.get("org.openecomp.appc.instance.retryInterval"));
+ String chefAction = "/pushy/jobs/" + jobID;
+
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ String message = "";
+ String status = "";
+ for (int i = 0; i < retryTimes; i++) {
+ try {
+ Thread.sleep(retryInterval); // 1000 milliseconds is one second.
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+ ApiMethod am = cac.get(chefAction);
+ am.execute();
+ int code = am.getReturnCode();
+ message = am.getResponseBodyAsString();
+ JSONObject obj = new JSONObject(message);
+ status = obj.getString("status");
+ if (!status.equals("running")) {
+ logger.info(i + " time " + code + " " + status);
+ break;
+ }
+
+ }
+ if (status.equals("complete")) {
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "200");
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", message);
+ } else {
+ if (status.equals("running")) {
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "202");
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", "chef client runtime out");
+ } else {
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", "500");
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", message);
+ }
+ }
+ }
+
+
+ @SuppressWarnings("nls")
+ @Override
+ public void pushJob(Map params, SvcLogicContext ctx) {
+ chefInfo(params);
+ String pushRequest = params.get("org.openecomp.appc.instance.pushRequest");
+ String chefAction = "/pushy/jobs";
+ RequestContext rc = new RequestContext(ctx);
+ rc.isAlive();
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ ChefApiClient cac = new ChefApiClient(clientName, clientPrivatekey, chefserver, organizations);
+ ApiMethod am = cac.post(chefAction).body(pushRequest);
+
+ am.execute();
+ int code = am.getReturnCode();
+ String message = am.getResponseBodyAsString();
+ if (code == 201) {
+ int startIndex = message.indexOf("jobs") + 6;
+ int endIndex = message.length() - 2;
+ String jobID = message.substring(startIndex, endIndex);
+ svcLogic.setAttribute("org.openecomp.appc.jobID", jobID);
+ logger.info(jobID);
+ }
+ chefServerResult(rc, Integer.toString(code), message);
+ }
+
+
+ @SuppressWarnings("static-method")
+ private void doFailure(RequestContext rc, int code, String message) {
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ String msg = (message == null) ? Integer.toString(code) : message;
+ if (msg.contains("\n")) {
+ msg = msg.substring(msg.indexOf("\n"));
+ }
+
+ String status;
+ try {
+ status = Integer.toString(code);
+ } catch (Exception e) {
+ status = "500";
+ }
+ svcLogic.setAttribute("org.openecomp.appc.chefAgent.code", status);
+ svcLogic.setAttribute("org.openecomp.appc.chefAgent.message", msg);
+ }
+
+ /**
+ * @param rc
+ * The request context that manages the state and recovery of the
+ * request for the life of its processing.
+ */
+
+ @SuppressWarnings("static-method")
+ private void doSuccess(RequestContext rc) {
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setAttribute("org.openecomp.appc.chefAgent.code", "200");
+ }
+
+
+ @SuppressWarnings("static-method")
+ private void chefServerResult(RequestContext rc, String code ,String message) {
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setStatus(OUTCOME_SUCCESS);
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.code", code);
+ svcLogic.setAttribute("org.openecomp.appc.chefServerResult.message", message);
+ }
+
+ @SuppressWarnings("static-method")
+ private void chefClientResult(RequestContext rc, String code ,String message) {
+ SvcLogicContext svcLogic = rc.getSvcLogicContext();
+ svcLogic.setStatus(OUTCOME_SUCCESS);
+ svcLogic.setAttribute("org.openecomp.appc.chefClientResult.code", code);
+ svcLogic.setAttribute("org.openecomp.appc.chefClientResult.message", message);
+ }
+
+ /**
+ * initialize the provider adapter by building the context cache
+ */
+ private void initialize() {
+ configuration = ConfigurationFactory.getConfiguration();
+ //need to fetch data from appc configurator or form some file in the appc vms
+ clientName="testnode";
+ clientPrivatekey="/etc/chef/client.pem";
+ serverAddress="http://example.com";
+ organizations="test";
+ chefserver=serverAddress+"/organizations/"+organizations;
+ logger.info("Initialize Chef Adapter");
+ }
+
+ private void initialize(String key) {
+ configuration = ConfigurationFactory.getConfiguration();
+ //need to fetch data from appc configurator or form some file in the appc vms
+ clientName="testnode";
+ clientPrivatekey=key;
+ serverAddress="http://example.com";
+ organizations="test";
+ chefserver=serverAddress+"/organizations/"+organizations;
+ logger.info("Initialize Chef Adapter");
+ }
}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/RequestContext.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/RequestContext.java
index 411176af9..836f6aaff 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/RequestContext.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/RequestContext.java
@@ -89,7 +89,7 @@ public class RequestContext {
/**
* Creates the request context
- *
+ *
* @param context
* The service logic (SLI) context associated with the current DG
*/
@@ -146,7 +146,7 @@ public class RequestContext {
/**
* Check and count the connection attempt.
- *
+ *
* @return True if the connection should be attempted. False indicates that the number of retries has been exhausted
* and it should NOT be attempted.
*/
@@ -183,7 +183,7 @@ public class RequestContext {
* the total time used is less than or equal to the time to live limit, the method returns true. It is important to
* call this method at the very beginning of the process so that all parts of the process are tracked.
*
- *
+ *
* @return True if the total time to live has not been exceeded. False indicates that the total time to live has
* been exceeded and no further processing should be performed.
*/
@@ -217,7 +217,7 @@ public class RequestContext {
/**
* Sets the time to live to the value, expressed in seconds
- *
+ *
* @param time
* The time to live, in seconds
*/
@@ -227,7 +227,7 @@ public class RequestContext {
/**
* Sets the time to live to the value, expressed in milliseconds
- *
+ *
* @param time
* The time to live, in milliseconds
*/
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/openecomp/appc/adapter/chef/impl/TestChefAdapterImpl.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/openecomp/appc/adapter/chef/impl/TestChefAdapterImpl.java
index d9b172aba..744f84722 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/openecomp/appc/adapter/chef/impl/TestChefAdapterImpl.java
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/openecomp/appc/adapter/chef/impl/TestChefAdapterImpl.java
@@ -72,18 +72,17 @@ public class TestChefAdapterImpl {
@Before
public void setup() throws IllegalArgumentException, IllegalAccessException {
- adapter = new ChefAdapterImpl();
+ adapter = new ChefAdapterImpl(System.getProperty("user.dir")+"/src/main/resources/client.pem");
}
-
+
@Test
public void testChefGet() throws IOException, IllegalStateException, IllegalArgumentException,
ZoneException, APPCException {
Map params = new HashMap<>();
params.put("org.openecomp.appc.instance.chefAction", "/nodes");
-
-
- SvcLogicContext svcContext = new SvcLogicContext();
+
+ SvcLogicContext svcContext = new SvcLogicContext();
adapter.chefGet(params, svcContext);
String status=svcContext.getAttribute("org.openecomp.appc.chefServerResult.code");
assertEquals("200",status);
@@ -98,7 +97,7 @@ public class TestChefAdapterImpl {
params.put("org.openecomp.appc.instance.chefAction", "/nodes/testnode");
params.put("org.openecomp.appc.instance.runList", "recipe[commandtest]");
params.put("org.openecomp.appc.instance.attributes", "");
- SvcLogicContext svcContext = new SvcLogicContext();
+ SvcLogicContext svcContext = new SvcLogicContext();
adapter.chefPut(params, svcContext);
String status=svcContext.getAttribute("org.openecomp.appc.chefServerResult.code");
assertEquals("200",status);
@@ -111,7 +110,7 @@ public class TestChefAdapterImpl {
Map params = new HashMap<>();
params.put("org.openecomp.appc.instance.ip", "http://example.com/test");
- SvcLogicContext svcContext = new SvcLogicContext();
+ SvcLogicContext svcContext = new SvcLogicContext();
adapter.trigger(params, svcContext);
String status=svcContext.getAttribute("org.openecomp.appc.chefAgent.code");
assertEquals("200",status);
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/pom.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/pom.xml
index 5e688744d..619466c7f 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/pom.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/pom.xml
@@ -1,122 +1,125 @@
-
- 4.0.0
-
- appc-chef-adapter
- org.openecomp.appc
- 1.1.0-SNAPSHOT
-
- appc-chef-adapter-features
- Chef Adaptor - Features
+
+
+ 4.0.0
+
+ appc-chef-adapter
+ org.openecomp.appc
+ 1.1.0-SNAPSHOT
+
-
- org.opendaylight.mdsal
- features-mdsal
- features
- xml
- runtime
-
+ appc-chef-adapter-features
+ APPC Chef Adaptor - Features
+ jar
-
-
- org.opendaylight.controller
- opendaylight-karaf-empty
- zip
-
+
+ ${project.parent.parent.parent.basedir}
+
-
-
-
-
-
-
+
+
+ org.openecomp.appc
+ appc-chef-adapter-bundle
+ ${project.version}
+
-
- org.opendaylight.yangtools
- features-yangtools
- features
- xml
- runtime
-
-
+
+ commons-lang
+ commons-lang
+ compile
+
-
-
-
- true
- src/main/resources
-
-
-
-
- org.apache.maven.plugins
- maven-resources-plugin
-
-
- filter
-
- resources
-
- generate-resources
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- attach-artifacts
-
- attach-artifact
-
- package
-
-
-
- ${project.build.directory}/classes/${features.file}
- xml
- features
-
-
-
-
-
-
-
-
+
+ org.opendaylight.mdsal
+ features-mdsal
+ features
+ xml
+ runtime
+
+
+
+
+ org.opendaylight.controller
+ opendaylight-karaf-empty
+ zip
+
+
+
+ org.opendaylight.yangtools
+ features-yangtools
+ features
+ xml
+ runtime
+
+
+
+
+
+
+ true
+ src/main/resources
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ filter
+
+ resources
+
+ generate-resources
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ attach-artifacts
+
+ attach-artifact
+
+ package
+
+
+
+ ${project.build.directory}/classes/${features.file}
+ xml
+ features
+
+
+
+
+
+
+
+
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/src/main/resources/features.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/src/main/resources/features.xml
index 5629f3922..923e6b8a9 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/src/main/resources/features.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-features/src/main/resources/features.xml
@@ -26,7 +26,7 @@
+ xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
mvn:org.opendaylight.mdsal/features-mdsal/${odl.mdsal.features.version}/xml/features
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/pom.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/pom.xml
index 366e7cd9f..62c2ed83c 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/pom.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/pom.xml
@@ -1,5 +1,30 @@
-
+
+
4.0.0
appc-chef-adapter
@@ -7,13 +32,16 @@
1.1.0-SNAPSHOT
appc-chef-adapter-installer
- Chef Adapter - Karaf Installer
+ APPC Chef Adapter - Karaf Installer
pom
appc-chef-adapter
appc-chef-adapter
- mvn:org.openecomp.appc/appc-chef-adapter-features/${project.version}/xml/features
+
+ mvn:org.openecomp.appc/appc-chef-adapter-features/${project.version}/xml/features
+
false
+ ${project.parent.parent.parent.basedir}
@@ -46,7 +74,7 @@
package
- false
+ false
false
stage/${application.name}-${project.version}
@@ -61,7 +89,7 @@
package
- false
+ false
true
${application.name}-${project.version}
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_installer_zip.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_installer_zip.xml
index 322fa76eb..45c82f69d 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_installer_zip.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_installer_zip.xml
@@ -25,37 +25,37 @@
- adapter
-
- zip
-
+ 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">
+ adapter
+
+ zip
+
-
- false
+
+ false
-
-
- target/stage/
- ${application.name}
- 755
-
- *.sh
-
-
-
- target/stage/
- ${application.name}
- 644
-
- *.sh
-
-
-
+
+
+ target/stage/
+ ${application.name}
+ 755
+
+ *.sh
+
+
+
+ target/stage/
+ ${application.name}
+ 644
+
+ *.sh
+
+
+
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
index 615ee37d0..f47c15cac 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml
@@ -25,26 +25,26 @@
- adapter
-
- zip
-
+ 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">
+ adapter
+
+ zip
+
-
- false
+
+ false
-
-
- target/assembly/
- .
-
-
-
-
+
+
+ target/assembly/
+ .
+
+
+
+
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/main/resources/scripts/install-feature.sh b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/main/resources/scripts/install-feature.sh
index 13d41ca56..d0210eb06 100644
--- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/main/resources/scripts/install-feature.sh
+++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/main/resources/scripts/install-feature.sh
@@ -33,31 +33,11 @@ REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip
if [ -f ${REPOZIP} ]
then
- unzip -n -d ${ODL_HOME} ${REPOZIP}
+ unzip -n -d ${ODL_HOME} ${REPOZIP}
else
- echo "ERROR : repo zip ($REPOZIP) not found"
- exit 1
+ echo "ERROR : repo zip ($REPOZIP) not found"
+ exit 1
fi
-COUNT=0
-while [ $COUNT -lt 10 ]; do
- ${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} 2> /tmp/installErr
- cat /tmp/installErr
- if grep -q 'Failed to get the session' /tmp/installErr; then
- sleep 10
- else
- let COUNT=10
- fi
- let COUNT=COUNT+1
-done
-COUNT=0
-while [ $COUNT -lt 10 ]; do
- ${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot} 2> /tmp/installErr
- cat /tmp/installErr
- if grep -q 'Failed to get the session' /tmp/installErr; then
- sleep 10
- else
- let COUNT=10
- fi
- let COUNT=COUNT+1
-done
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories}
+${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot}
diff --git a/appc-adapters/appc-chef-adapter/pom.xml b/appc-adapters/appc-chef-adapter/pom.xml
index c83e6aa91..8f2ac4bbd 100644
--- a/appc-adapters/appc-chef-adapter/pom.xml
+++ b/appc-adapters/appc-chef-adapter/pom.xml
@@ -1,123 +1,154 @@
-
- 4.0.0
-
- org.openecomp.appc
- appc-adapters
- 1.1.0-SNAPSHOT
-
+
+
+ 4.0.0
+
+ org.openecomp.appc
+ appc-adapters
+ 1.1.0-SNAPSHOT
+
-
- org.apache.maven.plugins
- maven-changelog-plugin
- 2.3
-
-
- dual-report
-
- range
- 30
-
-
- changelog
- file-activity
-
-
-
-
+ appc-chef-adapter
+ APPC Chef Adaptor
+
+ Abstraction to connect to and utilize the services of cloud providers such as OpenStack or VMWare.
+
+ pom
-
- org.codehaus.mojo
- taglist-maven-plugin
- 2.4
-
-
-
+
+ ${project.parent.parent.basedir}
+
-
-
-
- org.openecomp.appc
- appc-chef-adapter-features
- features
- xml
- ${project.version}
-
+
+
+
+ maven-javadoc-plugin
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ org.antlr
+ antlr4
+ ${antlr.version}
+
+
+ org.antlr
+ antlr4-runtime
+ 4.3
+
+
+
+
+
+
+ javadoc-no-fork
+ test-javadoc-no-fork
+
+
+
+ aggregate
+
+ aggregate
+ test-aggregate
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 2.3
+
+
+ aggregate
+
+ aggregate
+ test-aggregate
+
+
+
+
-
- org.openecomp.appc
- appc-chef-adapter-provider
- ${project.version}
-
-
-
+
+ maven-surefire-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-changelog-plugin
+ 2.3
+
+
+ dual-report
+
+ range
+ 30
+
+
+ changelog
+ file-activity
+
+
+
+
+
+
+ org.codehaus.mojo
+ taglist-maven-plugin
+ 2.4
+
+
+
+
+
+
+
+ org.openecomp.appc
+ appc-chef-adapter-features
+ features
+ xml
+ ${project.version}
+
+
+
+ org.openecomp.appc
+ appc-chef-adapter-provider
+ ${project.version}
+
+
+
-
- appc-chef-adapter-bundle
- appc-chef-adapter-features
- appc-chef-adapter-installer
-
+
+ appc-chef-adapter-bundle
+ appc-chef-adapter-features
+ appc-chef-adapter-installer
+
--
cgit 1.2.3-korg