Add support for requirements.txt for pip deps 26/85826/5
authorAlexis de Talhouët <adetalhouet89@gmail.com>
Fri, 19 Apr 2019 13:31:54 +0000 (09:31 -0400)
committerAlexis de Talhouët <adetalhouet89@gmail.com>
Mon, 22 Apr 2019 14:23:12 +0000 (14:23 +0000)
Change-Id: I10bbe95a4d06ce9361d3ab6553953022e1196a3d
Issue-ID: CCCSDK-125
Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Definitions/remote_scripts.json
components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Environments/requirements.txt [new file with mode: 0644]
ms/command-executor/src/main/python/command_executor_handler.py

index da09e4f..d78176f 100644 (file)
                     {
                       "type": "pip",
                       "package": [
-                        "ansible"
+                        "requirements.txt"
                       ]
                     },
                     {
diff --git a/components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Environments/requirements.txt b/components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Environments/requirements.txt
new file mode 100644 (file)
index 0000000..cabb1f5
--- /dev/null
@@ -0,0 +1 @@
+ansible
\ No newline at end of file
index 9eb36fb..1fb3e26 100644 (file)
@@ -24,6 +24,8 @@ import venv
 import utils
 import proto.CommandExecutor_pb2 as CommandExecutor_pb2
 
+REQUIREMENTS_TXT = "requirements.txt"
+
 
 class CommandExecutorHandler():
 
@@ -80,12 +82,12 @@ class CommandExecutorHandler():
         for package in request.packages:
             if package.type == type:
                 f.write("Installed %s packages:\r\n" % CommandExecutor_pb2.PackageType.Name(type))
-                for python_package in package.package:
-                    f.write("   %s\r\n" % python_package)
+                for p in package.package:
+                    f.write("   %s\r\n" % p)
                     if package.type == CommandExecutor_pb2.pip:
-                        success = self.install_python_packages(python_package, results)
+                        success = self.install_python_packages(p, results)
                     else:
-                        success = self.install_ansible_packages(python_package, results)
+                        success = self.install_ansible_packages(p, results)
                     if not success:
                         f.close()
                         os.remove(self.installed)
@@ -95,7 +97,11 @@ class CommandExecutorHandler():
     def install_python_packages(self, package, results):
         self.logger.info(
             "{} - Install Python package({}) in Python Virtual Environment".format(self.blueprint_id, package))
-        command = ["pip", "install", package]
+
+        if REQUIREMENTS_TXT == package:
+            command = ["pip", "install", "-r", self.venv_home + "/Environments/" + REQUIREMENTS_TXT]
+        else:
+            command = ["pip", "install", package]
 
         env = dict(os.environ)
         if "https_proxy" in os.environ: