summaryrefslogtreecommitdiffstats
path: root/appc-adapters/appc-chef-adapter
diff options
context:
space:
mode:
Diffstat (limited to 'appc-adapters/appc-chef-adapter')
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml404
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefActivator.java8
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/ChefAdapter.java38
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/ApiMethod.java245
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Delete.java8
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Get.java9
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Post.java26
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefapi/Put.java26
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/ChefApiClient.java109
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/chefclient/Utils.java122
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/ChefAdapterImpl.java1204
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/openecomp/appc/adapter/chef/impl/RequestContext.java10
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/openecomp/appc/adapter/chef/impl/TestChefAdapterImpl.java13
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-features/pom.xml227
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-features/src/main/resources/features.xml2
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/pom.xml38
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_installer_zip.xml58
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/assembly/assemble_mvnrepo_zip.xml38
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-installer/src/main/resources/scripts/install-feature.sh30
-rw-r--r--appc-adapters/appc-chef-adapter/pom.xml257
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 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-chef-adapter</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>appc-chef-adapter-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>chef Adapter - bundle</name>
-
- <dependencies>
- <dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>20160810</version>
- </dependency>
- <dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>20160810</version>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
- <!-- http://mvnrepository.com/artifact/commons-logging/commons-logging -->
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- </dependency>
- <!-- http://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <version>4.4.4</version>
- </dependency>
-
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcpkix-jdk15on</artifactId>
- <version>1.55</version>
- </dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk15on</artifactId>
- <version>1.55</version>
- </dependency>
- <dependency>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>javax</groupId>
- <artifactId>javaee-api</artifactId>
- <version>7.0</version>
- </dependency>
-
- <dependency>
- <groupId>com.att.cdp</groupId>
- <artifactId>cdp-pal-common</artifactId>
- <scope>compile</scope>
- </dependency>
-
-
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-jaxrs</artifactId>
- <version>1.9.12</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.5.1</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.openecomp.sdnc.core</groupId>
- <artifactId>sli-common</artifactId>
- <scope>compile</scope>
- <!-- Added exclusion to prevent missing dependency issue on dblib -->
- <exclusions>
- <exclusion>
- <groupId>org.openecomp.sdnc.core</groupId>
- <artifactId>dblib-provider</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.openecomp.sdnc.core</groupId>
- <artifactId>sli-provider</artifactId>
- <scope>compile</scope>
- <!-- Added exclusion to prevent missing dependency issue on dblib -->
- <exclusions>
- <exclusion>
- <groupId>org.openecomp.sdnc.core</groupId>
- <artifactId>dblib-provider</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>equinoxSDK381</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- </dependency>
-
-
- <dependency>
- <groupId>com.vmware</groupId>
- <artifactId>vijava</artifactId>
- <version>5.1</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xerces</artifactId>
- <version>2.4.0</version>
- <scope>provided</scope>
- </dependency>
-
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>appc-chef-adapter</Bundle-SymbolicName>
- <Bundle-Activator>org.openecomp.appc.adapter.chef.ChefActivator</Bundle-Activator>
- <Export-Package>org.openecomp.appc.adapter.chef</Export-Package>
- <Import-Package>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.*</Import-Package>
- <Embed-Dependency>*;scope=compile|runtime;artifactId=!sli-common|!appc-common|org.eclipse.osgi|slf4j-api|jcl-over-slf4j|xml-apis</Embed-Dependency>
- <Embed-Transitive>true</Embed-Transitive>
- </instructions>
-
- <manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
- </configuration>
- </plugin>
- </plugins>
- </build>
+<!--
+ ============LICENSE_START=======================================================
+ ONAP : APPC
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Copyright (C) 2017 Amdocs
+ =============================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-chef-adapter</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>appc-chef-adapter-bundle</artifactId>
+ <packaging>bundle</packaging>
+ <name>APPC Chef Adapter - Bundle</name>
+
+ <properties>
+ <licenseDir>${project.parent.parent.parent.basedir}</licenseDir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>20160810</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore</artifactId>
+ <version>4.4.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcpkix-jdk15on</artifactId>
+ <version>1.55</version>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk15on</artifactId>
+ <version>1.55</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>7.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.att.cdp</groupId>
+ <artifactId>cdp-pal-common</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.att.cdp</groupId>
+ <artifactId>cdp-pal-openstack</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ </dependency>
+
+ <!-- Jersey support needed for OpenStack connector and API version logic -->
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-client</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-json</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.xml</groupId>
+ <artifactId>jaxp-api</artifactId>
+ <version>1.4.2</version>
+ </dependency>
+
+ <!-- Needed to run test cases -->
+ <dependency>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-common</artifactId>
+ <version>2.9.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-jaxrs</artifactId>
+ <version>1.9.12</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.5.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.openecomp.sdnc.core</groupId>
+ <artifactId>sli-common</artifactId>
+ <scope>compile</scope>
+ <!-- Added exclusion to prevent missing dependency issue on dblib -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.openecomp.sdnc.core</groupId>
+ <artifactId>dblib-provider</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.openecomp.sdnc.core</groupId>
+ <artifactId>sli-provider</artifactId>
+ <scope>compile</scope>
+ <!-- Added exclusion to prevent missing dependency issue on dblib -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.openecomp.sdnc.core</groupId>
+ <artifactId>dblib-provider</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>equinoxSDK381</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.1.31</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.vmware</groupId>
+ <artifactId>vijava</artifactId>
+ <version>5.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xerces</artifactId>
+ <version>2.4.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>appc-chef-adapter</Bundle-SymbolicName>
+ <Bundle-Activator>org.openecomp.appc.adapter.chef.ChefActivator</Bundle-Activator>
+ <Export-Package>org.openecomp.appc.adapter.chef</Export-Package>
+ <Import-Package>
+ 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.*
+ </Import-Package>
+ <Embed-Dependency>
+ *;scope=compile|runtime;artifactId=!sli-common|!appc-common|org.eclipse.osgi|slf4j-api|jcl-over-slf4j|mysql-connector-java|xml-apis
+ </Embed-Dependency>
+ <Embed-Transitive>true</Embed-Transitive>
+ </instructions>
+
+ <manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
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 {
* <p>
* This method must complete and return to its caller in a timely manner.
* </p>
- *
+ *
* @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 {
* <p>
* This method must complete and return to its caller in a timely manner.
* </p>
- *
+ *
* @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)</dd>
* </dl>
* </p>
- *
+ *
* @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)</dd>
* </dl>
* </p>
- *
+ *
* @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)</dd>
* </dl>
* </p>
- *
+ *
* @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)</dd>
* </dl>
* </p>
- *
+ *
* @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<String, String> params, SvcLogicContext ctx) throws APPCException;
//Server migrateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException;
-
+
void trigger(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void chefGet(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void chefPut(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void chefPost(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void chefDelete(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void nodeObejctBuilder(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void checkPushJob(Map<String, String> params, SvcLogicContext ctx) ;
void pushJob(Map<String, String> params, SvcLogicContext ctx) ;
-
+
void retrieveData (Map<String, String> params, SvcLogicContext ctx) ;
-
+
void combineStrings (Map<String, String> params, SvcLogicContext ctx) ;
-
- void VnfcEnvironment (Map<String, String> params, SvcLogicContext ctx) ;
-
- void VnfcNodeobjects (Map<String, String> params, SvcLogicContext ctx) ;
-
- void VnfcPushJob (Map<String, String> params, SvcLogicContext ctx) ;
-
- void fetchResults (Map<String, String> 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<String, String> 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<String, String> 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<String> 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<String, String> 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<String, String> 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<String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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.
* </p>
- *
+ *
* @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<String, String> 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<String, String> 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 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>appc-chef-adapter</artifactId>
- <groupId>org.openecomp.appc</groupId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
- <artifactId>appc-chef-adapter-features</artifactId>
- <name>Chef Adaptor - Features</name>
+<!--
+ ============LICENSE_START=======================================================
+ ONAP : APPC
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Copyright (C) 2017 Amdocs
+ =============================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- <packaging>jar</packaging>
+ http://www.apache.org/licenses/LICENSE-2.0
- <dependencies>
- <dependency>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-chef-adapter-bundle</artifactId>
- <version>${project.version}</version>
- </dependency>
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <scope>compile</scope>
- </dependency>
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>appc-chef-adapter</artifactId>
+ <groupId>org.openecomp.appc</groupId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>features-mdsal</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
+ <artifactId>appc-chef-adapter-features</artifactId>
+ <name>APPC Chef Adaptor - Features</name>
+ <packaging>jar</packaging>
- <!-- dependency for opendaylight-karaf-empty for use by testing -->
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>opendaylight-karaf-empty</artifactId>
- <type>zip</type>
- </dependency>
+ <properties>
+ <licenseDir>${project.parent.parent.parent.basedir}</licenseDir>
+ </properties>
-<!-- <dependency> -->
-<!-- Required for launching the feature tests -->
-<!-- <groupId>org.opendaylight.yangtools</groupId> -->
-<!-- <artifactId>features-test</artifactId> -->
-<!-- <scope>test</scope> -->
-<!-- </dependency> -->
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-chef-adapter-bundle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>features-yangtools</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <scope>compile</scope>
+ </dependency>
- <build>
- <resources>
- <resource>
- <filtering>true</filtering>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>filter</id>
- <goals>
- <goal>resources</goal>
- </goals>
- <phase>generate-resources</phase>
- </execution>
- </executions>
- </plugin>
- <!-- launches the feature test, which validates that your karaf feature
- can be installed inside of a karaf container. It doesn't validate that your
- functionality works correctly, just that you have all of the dependent bundles
- defined correctly. -->
- <!-- <plugin> -->
- <!-- <groupId>org.apache.maven.plugins</groupId> -->
- <!-- <artifactId>maven-surefire-plugin</artifactId> -->
- <!-- <version>2.16</version> -->
- <!-- <configuration> -->
- <!-- <systemPropertyVariables> -->
- <!-- <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> -->
- <!-- <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> -->
- <!-- <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> -->
- <!-- </systemPropertyVariables> -->
- <!-- <dependenciesToScan> -->
- <!-- <dependency>org.opendaylight.yangtools:features-test</dependency> -->
- <!-- </dependenciesToScan> -->
- <!-- </configuration> -->
- <!-- </plugin> -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-artifacts</id>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <artifacts>
- <artifact>
- <file>${project.build.directory}/classes/${features.file}</file>
- <type>xml</type>
- <classifier>features</classifier>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>features-mdsal</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- dependency for opendaylight-karaf-empty for use by testing -->
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>opendaylight-karaf-empty</artifactId>
+ <type>zip</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>features-yangtools</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>true</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter</id>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/classes/${features.file}</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/appc-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 @@
<features name="appc-chef-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">
+ 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>
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 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<!--
+ ============LICENSE_START=======================================================
+ ONAP : APPC
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Copyright (C) 2017 Amdocs
+ =============================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>appc-chef-adapter</artifactId>
@@ -7,13 +32,16 @@
<version>1.1.0-SNAPSHOT</version>
</parent>
<artifactId>appc-chef-adapter-installer</artifactId>
- <name>Chef Adapter - Karaf Installer</name>
+ <name>APPC Chef Adapter - Karaf Installer</name>
<packaging>pom</packaging>
<properties>
<application.name>appc-chef-adapter</application.name>
<features.boot>appc-chef-adapter</features.boot>
- <features.repositories>mvn:org.openecomp.appc/appc-chef-adapter-features/${project.version}/xml/features</features.repositories>
+ <features.repositories>
+ mvn:org.openecomp.appc/appc-chef-adapter-features/${project.version}/xml/features
+ </features.repositories>
<include.transitive.dependencies>false</include.transitive.dependencies>
+ <licenseDir>${project.parent.parent.parent.basedir}</licenseDir>
</properties>
<dependencies>
<dependency>
@@ -46,7 +74,7 @@
</goals>
<phase>package</phase>
<configuration>
- <appendAssemblyId>false</appendAssemblyId>
+ <appendAssemblyId>false</appendAssemblyId>
<attach>false</attach>
<finalName>stage/${application.name}-${project.version}</finalName>
<descriptors>
@@ -61,7 +89,7 @@
</goals>
<phase>package</phase>
<configuration>
- <appendAssemblyId>false</appendAssemblyId>
+ <appendAssemblyId>false</appendAssemblyId>
<attach>true</attach>
<finalName>${application.name}-${project.version}</finalName>
<descriptors>
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 @@
<!-- Defines how we build the .zip file which is our distribution. -->
<assembly
- xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
- <id>adapter</id>
- <formats>
- <format>zip</format>
- </formats>
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>adapter</id>
+ <formats>
+ <format>zip</format>
+ </formats>
- <!-- we want "system" and related files right at the root level
- as this file is suppose to be unzip on top of a karaf
- distro. -->
- <includeBaseDirectory>false</includeBaseDirectory>
+ <!-- we want "system" and related files right at the root level
+ as this file is suppose to be unzip on top of a karaf
+ distro. -->
+ <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>target/stage/</directory>
- <outputDirectory>${application.name}</outputDirectory>
- <fileMode>755</fileMode>
- <includes>
- <include>*.sh</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>target/stage/</directory>
- <outputDirectory>${application.name}</outputDirectory>
- <fileMode>644</fileMode>
- <excludes>
- <exclude>*.sh</exclude>
- </excludes>
- </fileSet>
- </fileSets>
+ <fileSets>
+ <fileSet>
+ <directory>target/stage/</directory>
+ <outputDirectory>${application.name}</outputDirectory>
+ <fileMode>755</fileMode>
+ <includes>
+ <include>*.sh</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>target/stage/</directory>
+ <outputDirectory>${application.name}</outputDirectory>
+ <fileMode>644</fileMode>
+ <excludes>
+ <exclude>*.sh</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
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 @@
<!-- Defines how we build the .zip file which is our distribution. -->
<assembly
- xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
- <id>adapter</id>
- <formats>
- <format>zip</format>
- </formats>
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>adapter</id>
+ <formats>
+ <format>zip</format>
+ </formats>
- <!-- we want "system" and related files right at the root level
- as this file is suppose to be unzip on top of a karaf
- distro. -->
- <includeBaseDirectory>false</includeBaseDirectory>
+ <!-- we want "system" and related files right at the root level
+ as this file is suppose to be unzip on top of a karaf
+ distro. -->
+ <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>target/assembly/</directory>
- <outputDirectory>.</outputDirectory>
- <excludes>
- </excludes>
- </fileSet>
- </fileSets>
+ <fileSets>
+ <fileSet>
+ <directory>target/assembly/</directory>
+ <outputDirectory>.</outputDirectory>
+ <excludes>
+ </excludes>
+ </fileSet>
+ </fileSets>
</assembly>
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 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-adapters</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
+<!--
+ ============LICENSE_START=======================================================
+ ONAP : APPC
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Copyright (C) 2017 Amdocs
+ =============================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- <artifactId>appc-chef-adapter</artifactId>
- <name>chef Adaptor</name>
- <description>Abstraction to connect to and utilize the services of cloud providers such as OpenStack or VMWare.</description>
- <packaging>pom</packaging>
+ http://www.apache.org/licenses/LICENSE-2.0
- <reporting>
- <plugins>
- <plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <additionalDependencies>
- <additionalDependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j.version}</version>
- </additionalDependency>
- <additionalDependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4</artifactId>
- <version>${antlr.version}</version>
- </additionalDependency>
- <additionalDependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-runtime</artifactId>
- <version>4.3</version>
- </additionalDependency>
- </additionalDependencies>
- </configuration>
- <reportSets>
- <reportSet>
- <reports>
- <report>javadoc-no-fork</report>
- <report>test-javadoc-no-fork</report>
- </reports>
- </reportSet>
- <reportSet>
- <id>aggregate</id>
- <reports>
- <report>aggregate</report>
- <report>test-aggregate</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jxr-plugin</artifactId>
- <version>2.3</version>
- <reportSets>
- <reportSet>
- <id>aggregate</id>
- <reports>
- <report>aggregate</report>
- <report>test-aggregate</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-adapters</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-changelog-plugin</artifactId>
- <version>2.3</version>
- <reportSets>
- <reportSet>
- <id>dual-report</id>
- <configuration>
- <type>range</type>
- <range>30</range>
- </configuration>
- <reports>
- <report>changelog</report>
- <report>file-activity</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
+ <artifactId>appc-chef-adapter</artifactId>
+ <name>APPC Chef Adaptor</name>
+ <description>
+ Abstraction to connect to and utilize the services of cloud providers such as OpenStack or VMWare.
+ </description>
+ <packaging>pom</packaging>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>taglist-maven-plugin</artifactId>
- <version>2.4</version>
- </plugin>
- </plugins>
- </reporting>
+ <properties>
+ <licenseDir>${project.parent.parent.basedir}</licenseDir>
+ </properties>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-chef-adapter-features</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- <version>${project.version}</version>
- </dependency>
+ <reporting>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <additionalDependencies>
+ <additionalDependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ </additionalDependency>
+ <additionalDependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4</artifactId>
+ <version>${antlr.version}</version>
+ </additionalDependency>
+ <additionalDependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4-runtime</artifactId>
+ <version>4.3</version>
+ </additionalDependency>
+ </additionalDependencies>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>javadoc-no-fork</report>
+ <report>test-javadoc-no-fork</report>
+ </reports>
+ </reportSet>
+ <reportSet>
+ <id>aggregate</id>
+ <reports>
+ <report>aggregate</report>
+ <report>test-aggregate</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jxr-plugin</artifactId>
+ <version>2.3</version>
+ <reportSets>
+ <reportSet>
+ <id>aggregate</id>
+ <reports>
+ <report>aggregate</report>
+ <report>test-aggregate</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
- <dependency>
- <groupId>org.openecomp.appc</groupId>
- <artifactId>appc-chef-adapter-provider</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-changelog-plugin</artifactId>
+ <version>2.3</version>
+ <reportSets>
+ <reportSet>
+ <id>dual-report</id>
+ <configuration>
+ <type>range</type>
+ <range>30</range>
+ </configuration>
+ <reports>
+ <report>changelog</report>
+ <report>file-activity</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>taglist-maven-plugin</artifactId>
+ <version>2.4</version>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-chef-adapter-features</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.openecomp.appc</groupId>
+ <artifactId>appc-chef-adapter-provider</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
- <modules>
- <module>appc-chef-adapter-bundle</module>
- <module>appc-chef-adapter-features</module>
- <module>appc-chef-adapter-installer</module>
- </modules>
+ <modules>
+ <module>appc-chef-adapter-bundle</module>
+ <module>appc-chef-adapter-features</module>
+ <module>appc-chef-adapter-installer</module>
+ </modules>
</project>