HeatBridge integration with Orchestration, part 1 71/15571/1
authorArthur Martella <amartell@research.att.com>
Tue, 26 Sep 2017 04:06:34 +0000 (00:06 -0400)
committerArthur Martella <amartell@research.att.com>
Tue, 26 Sep 2017 13:56:23 +0000 (09:56 -0400)
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>
adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImpl.java
packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
packages/docker/src/main/docker/docker-files/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl [new file with mode: 0644]

index c8c036d..cba378e 100644 (file)
 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 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         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 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         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);
 
index 2e227be..8238923 100644 (file)
@@ -81,6 +81,12 @@ COPY ./maven/artifacts/* $JBOSS_HOME/standalone/deployments/
 
 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 (file)
index 0000000..357a669
Binary files /dev/null and b/packages/docker/src/main/docker/docker-files/heatbridge/heatbridge-0.3.0.dev0-py2-none-any.whl differ