From a033ccfa1ede90b9283efa2767c97c39a08fbfc6 Mon Sep 17 00:00:00 2001
From: aknecht2 <aknecht2@unl.edu>
Date: Tue, 16 May 2017 14:21:57 -0500
Subject: [PATCH] Updated workflow creation process to include additional site
 arguments.

---
 chipathlon/workflow.py | 41 +++++++++++++++++++++++------------------
 1 file changed, 23 insertions(+), 18 deletions(-)

diff --git a/chipathlon/workflow.py b/chipathlon/workflow.py
index b596056..893a86e 100644
--- a/chipathlon/workflow.py
+++ b/chipathlon/workflow.py
@@ -36,6 +36,12 @@ class Workflow(object):
     :type username: str
     :param password: The password to authenticate for MongoDB access.
     :type password: str
+    :param execute_sites: A list of sites to submit jobs to.  These sites should
+        be defined in the configuration file.
+    :type execute_sites: list
+    :param output_site: The output site to transfer files to.  This site should
+        be defined in the configuration file.
+    :type output_site: str
     :param rewrite: Whether or not to rewrite existing files.  If true, it will
         ignore files in Mongo and recreate them.  If false, it will download
         files based on the latest available completed job.
@@ -49,9 +55,11 @@ class Workflow(object):
     executables.
     """
 
-    def __init__(self, jobhome, run_file, param_file, config_file, host, username, password, rewrite=False, debug=False):
+    def __init__(self, jobhome, run_file, param_file, config_file, host, username, password, execute_sites=["local"], output_site=["local"], rewrite=False, debug=False):
         # debug mode, print out additional information
         self.debug = debug
+        self.execute_sites = execute_sites
+        self.output_site = output_site
 
         self.username = username
         self.host = host
@@ -89,11 +97,7 @@ class Workflow(object):
             self._generate_jobs,
             # Create pegasus important stuff
             self._add_notify,
-            self._create_pegasus_files,
-            self._create_replica,
-            self._create_sites,
-            self._create_submit,
-            self._write
+            self._create_pegasus_files
         ]
         return
 
@@ -276,7 +280,6 @@ class Workflow(object):
         return
 
     def _add_notify(self):
-        # NEED TO DETERMINE HOW TO READ IN THESE VARS
         notify_path = os.path.join(self.base_path, "input/notify.sh")
         with open(notify_path, "w") as wh:
             notify = textwrap.dedent("""\
@@ -292,6 +295,7 @@ class Workflow(object):
         self.config.create_properties()
         self.config.create_sites()
         self._create_submit()
+        self._create_dax()
         return
 
     def _create_submit(self):
@@ -302,17 +306,18 @@ class Workflow(object):
             submit = textwrap.dedent("""\
                     #!/bin/bash
                     plan=`pegasus-plan \\
-                    --conf "%s" \\
-                    --sites "%s" \\
-                    --dir "%s" \\
-                    --output-site local \\
-                    --dax "%s" \\
+                    --conf %s \\
+                    --sites %s \\
+                    --output-site %s \\
+                    --dir %s \\
+                    --dax %s \\
                     --randomdir \\
                     """ % (
                         self.config.properties_file,
-                        "local",
-                        "%s/work/" % (self.base_path,),
-                        "%s/input/chipathlon.dax" % (self.base_path,)
+                        ",".join(self.execute_sites),
+                        self.output_site,
+                        os.path.join(self.base_path, "work")
+                        os.path.join(self.base_path, "input/chipathlon.dax")
                     ))
             submit += textwrap.dedent("""\
                     --submit`
@@ -331,11 +336,11 @@ class Workflow(object):
 
                     """)
             wh.write(submit)
-            os.chmod(self.base_path + "/input/submit.sh", 0755)
+            os.chmod(os.path.join(self.base_path, "input/submit.sh"), 0755)
         return
 
-    def _write(self):
-        with open(self.base_path + "/input/chipathlon.dax", "w") as wh:
+    def _create_dax(self):
+        with open(os.path.join(self.base_path, "input/chipathlon.dax", "w") as wh:
             self.dax.writeXML(wh)
         return
 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
-- 
GitLab