diff --git a/classes/JDLCreator.py b/classes/JDLCreator.py index a720a75ca7a87329a95ca8cd605f364691c960f2..00d95563699f339ea46dd10e4bd9eed86086ab9f 100755 --- a/classes/JDLCreator.py +++ b/classes/JDLCreator.py @@ -19,7 +19,7 @@ class CloudSite(object): if name == 'condocker': self.universe = 'docker' self.docker_image = 'mschnepf/slc6-condocker' - self.requirements = '(TARGET.CLOUD_SITE == "condocker")' + elif name == 'ekpcloud': self.universe = 'vanilla' self.requirements = '(TARGET.CLOUD_SITE == "ekpcloud")' @@ -27,7 +27,7 @@ class CloudSite(object): elif name == 'ekpsupermachines': self.universe = 'docker' self.docker_image = 'mschnepf/slc6-condocker' - self.requirements = '(TARGET.CLOUD_SITE == "ekpsupermachines")' + self.requirements = '(TARGET.CLOUDSITE == "ekpsupermachines")' elif name == 'bwforcluster': self.universe = 'vanilla' @@ -41,8 +41,7 @@ class CloudSite(object): self.universe = 'vanilla' self.requirements = '(TARGET.CLOUD_SITE == "oneandone")' else: - self.universe = 'docker' - self.docker_image = 'mschnepf/slc6-condocker' + self.universe = 'vanilla' self.requirements = '' @@ -71,6 +70,7 @@ class JDLCreator(object): self._memory = 0 self._job_folder = job_folder self._output_files = output_files + self._input_files = '' self._remote_job = False if len(extra_lines) > 0: self._extra_lines = extra_lines @@ -268,6 +268,21 @@ class JDLCreator(object): # type: (str) -> None self._output_files = file_string + @property + def input_files(self): + # type: () -> str + """Files or directories which should be transferred to workernode by HTCondor.""" + return self._input_files + + @input_files.setter + def input_files(self, file_string): + # type: (str) -> None + self._input_files = file_string + + def SetInputFiles(self, file_string): + # type: (str) -> None + self._input_files = file_string + @property def remote_job(self): # type: () -> boolean @@ -320,7 +335,10 @@ class JDLCreator(object): # do docker stuff for exe jdl_content.append('executable = ./%s' % exe) jdl_content.append('should_transfer_files = YES') - jdl_content.append('transfer_input_files = %s' % self.executable) + if self._input_files != '': + jdl_content.append('transfer_input_files = ' + self.executable + ',' + self._input_files) + else: + jdl_content.append('transfer_input_files = ' + self.executable) else: jdl_content.append('executable = %s' % exe) diff --git a/create_jdl.py b/create_jdl.py index 50a959891dae65e673571cc05f4ed59fdb7f1a58..e4df4d33ce776c11317927dea24e1648c8212157 100644 --- a/create_jdl.py +++ b/create_jdl.py @@ -5,7 +5,7 @@ from classes.JDLCreator import JDLCreator # import the class to create and subm def main(): """Submit a simple example job""" - jobs = JDLCreator() # Default (no Cloud Site supplied): Docker with SLC6 image + jobs = JDLCreator("condocker") # Default (no Cloud Site supplied): Docker with SLC6 image # Some example sites: # site_name='condocker' Exclusively run the job on our desktop cluster # site_name='bwforcluster' Freiburg @@ -13,8 +13,8 @@ def main(): # site_name='gridka' gridKa School Training VMs jobs.executable = "job.sh" # name of the job script - jobs.wall_time = 3 # job will finish in 3 seconds, it's just some "echo"s - jobs.memory = 64 # We're running a simple bash script. 64 MB memory are more than enough + jobs.wall_time = 10 * 60 * 60 # job will finish in 10 hours + jobs.memory = 2048 # Our regular 2 GB per core # build list of arguments: 1,2,3,4,5 arguments = [x for x in range(0, 5)] @@ -25,7 +25,7 @@ def main(): # Our job requires lots of CPU resources and needs access to the local EKP resources jobs.requirements = "(Target.PROVIDES_CPU ==True) && (TARGET.PROVIDES_EKP_RESOURCES == True)" - jobs.job_folder = 'condor_jobs' # set name of the folder, where files and information are stored + jobs.job_folder = "condor_jobs" # set name of the folder, where files and information are stored jobs.WriteJDL() # write an JDL file and create folder for log files diff --git a/example_belle2.py b/example_belle2.py new file mode 100644 index 0000000000000000000000000000000000000000..2737a0c7f0e17b8170dd384b736781b84c1d5f47 --- /dev/null +++ b/example_belle2.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +from classes.JDLCreator import JDLCreator # import the class to create and submit JDL files + + +def main(): + jobs = JDLCreator("condocker") # run jobs on condocker cloude site + jobs.image = "ipython:v1_r26519_v01-01-07_r28283" + ################################## + # submit job + ################################## + jobs.executable = "job.sh" # name of the job script + + # build list of arguments + arguments = [x for x in range(0, 5)] + jobs.arguments = arguments # set arguments for condor job + + jobs.requirements = "(TARGET.PROVIDES_CPU == True) && (TARGET.PROVIDES_EKP_RESOURCES == True) && (TARGET.PROVIDES_BELLE_2 == True)" + jobs.wall_time = 1 * 60 * 60 # set walltime to 1h in sec + jobs.memory = 2048 # set memory to 2048 MB + jobs.job_folder = "condor_jobs" # set name of the folder, where files and information are stored + jobs.WriteJDL() # write an JDL file and create folder for log files + + +if __name__ == "__main__": + main()