HeatBridge integration with Orchestration, part 1

Adding Heatbridge python code and call into SO.  Still needs configuration to be complete.

Change-Id: I4869217699d857e27579decce91e9c542ce7a449
Issue-ID: SO-1
Signed-off-by: Arthur Martella <amartell@research.att.com>
diff --git a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImpl.java b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImpl.java
index c8c036d..cba378e 100644
--- a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImpl.java
+++ b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImpl.java
@@ -22,10 +22,17 @@
 package org.openecomp.mso.adapters.vnf;
 
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.Scanner;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -540,6 +547,41 @@
         return string;
     }
 
+    private boolean callHeatbridge(String heatStackId) {
+    	String executionDir = "/usr/local/lib/python2.7/dist-packages/heatbridge";
+    	String openstackIdentityUrl = "", username = "", password = "", tenant = "", region = "", owner = "";
+    	long waitTimeMs = 10000l;
+    	try {
+    		String[] cmdarray = {"/usr/bin/python", "HeatBridgeMain.py", openstackIdentityUrl, username, password, tenant, region, owner, heatStackId};
+    		String[] envp = null;
+    		File dir = new File(executionDir);
+    		LOGGER.debug("Calling HeatBridgeMain.py in " + dir + " with arguments " + Arrays.toString(cmdarray));
+    		Runtime r = Runtime.getRuntime();
+    		Process p = r.exec(cmdarray, envp, dir);
+    		/*			
+ 			BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ 			String linein = stdout.readLine();
+ 			while (linein!=null) {
+ 				System.out.println(linein);
+ 				linein = stdout.readLine();
+ 			}
+    		 */
+    		boolean wait = p.waitFor(waitTimeMs, TimeUnit.MILLISECONDS);
+
+    		LOGGER.debug(" HeatBridgeMain.py returned " + wait + " with code " + p.exitValue());
+    		return (wait && p.exitValue()==0);
+    	} catch (IOException e) {
+    		LOGGER.debug(" HeatBridgeMain.py failed with IO Exception! " + e);
+    		return false;
+    	} catch (InterruptedException e) {
+    		LOGGER.debug(" HeatBridgeMain.py failed when interrupted! " + e);
+    		return false;
+    	} catch (RuntimeException e) {
+    		LOGGER.debug(" HeatBridgeMain.py failed for unknown reasons!" + e);
+    		return false;
+    	}
+    }
+
     private void sendMapToDebug(Map<String, Object> inputs, String optionalName) {
     	int i = 0;
     	StringBuilder sb = new StringBuilder(optionalName == null ? "\ninputs" : "\n" + optionalName);
@@ -731,6 +773,9 @@
         vfRollback.setIsBase(isBaseRequest);
         vfRollback.setModelCustomizationUuid(mcu);
 
+        // Put data into A&AI through Heatstack
+        boolean heatStackCallSuccess = callHeatbridge(baseVfHeatStackId);
+
         // First, look up to see if the VF already exists.
         MsoHeatUtils heat = new MsoHeatUtils (MSO_PROP_VNF_ADAPTER, msoPropertiesFactory,cloudConfigFactory);
 
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
index 2e227be..8238923 100644
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
+++ b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
@@ -81,6 +81,12 @@
 
 RUN mkdir -p /etc/mso/config.d/ASDC && chown -R jboss:jboss /etc/mso/config.d/ASDC && chmod u+xrw /etc/mso/config.d/ASDC
 
+## Install heatbridge
+RUN apt-get install -y python && apt-get install -y python-pip && echo 'PIP Installed, doing upgrade' && pip install --upgrade pip
+RUN mkdir /opt/mso/heatbridge
+COPY heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl /opt/mso/heatbridge
+RUN pip install /opt/mso/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl
+
 ### Open Ports
 EXPOSE 8080
 
diff --git a/packages/docker/src/main/docker/docker-files/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl b/packages/docker/src/main/docker/docker-files/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl
new file mode 100644
index 0000000..357a669
--- /dev/null
+++ b/packages/docker/src/main/docker/docker-files/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl
Binary files differ