1 """ Example application demonstrating job submission via bigjob
2
3 DON'T EDIT THIS FILE (UNLESS THERE IS A BUG)
4
5 THIS FILE SHOULD NOT BE COMMITTED TO SVN WITH USER-SPECIFIC PATHS!
6 """
7 import os
8 import time
9 import pdb
10 import sys
11
12
13 """ This variable defines the coordination system that is used by BigJob
14 e.g.
15 advert://localhost (SAGA/Advert SQLITE)
16 advert://advert.cct.lsu.edu:8080 (SAGA/Advert POSTGRESQL)
17 advert://advert.cct.lsu.edu:5432 (SAGA/Advert POSTGRESQL)
18 redis://localhost:6379 (Redis at localhost)
19 tcp://localhost (ZMQ)
20 tcp://* (ZMQ - listening to all interfaces)
21 """
22
23 COORDINATION_URL = "advert://localhost/?dbtype=sqlite3"
24
25
26
27
28
29
30
31 sys.path.insert(0, os.getcwd() + "/../")
32
33 from bigjob import bigjob, subjob, description
34
35
37
38
39
40
41 queue=None
42 project=None
43 walltime=10
44 processes_per_node=4
45 number_of_processes = 8
46 workingdirectory=os.path.join(os.getcwd(), "agent")
47 userproxy = None
48
49
50 """
51 URL of the SAGA Job Service that is used to dispatch the pilot job.
52 The following URLs are accepted:
53
54 lrms_url = "gram://oliver1.loni.org/jobmanager-pbs" # globus resource url used when globus is used. (LONI)
55 lrms_url = "pbspro://louie1.loni.org" # pbspro resource url used when pbspro scheduling system is used.(Futuregrid or LSU Machines)
56 lrms_url = "ssh://louie1.loni.org" # ssh resource url which launches jobs on target machine. Jobs not submitted to scheduling system.
57 lrms_url = "pbs-ssh://louie1.loni.org" # Submit jobs to scheduling system of remote machine.
58 lrms_url = "xt5torque://localhost" # torque resource url.
59
60 Please ensure that the respective SAGA adaptor is installed and working
61 """
62 lrms_url = "fork://localhost"
63
64
65
66 print "Start Pilot Job/BigJob at: " + lrms_url
67 bj = bigjob(COORDINATION_URL)
68 bj.start_pilot_job( lrms_url,
69 None,
70 number_of_processes,
71 queue,
72 project,
73 workingdirectory,
74 userproxy,
75 walltime,
76 processes_per_node)
77
78 print "Pilot Job/BigJob URL: " + bj.pilot_url + " State: " + str(bj.get_state())
79
80
81
82 jd = description()
83 jd.executable = "/bin/date"
84 jd.number_of_processes = "1"
85 jd.spmd_variation = "single"
86 jd.arguments = [""]
87
88 jd.output = "stdout.txt"
89 jd.error = "stderr.txt"
90 sj = subjob()
91 sj.submit_job(bj.pilot_url, jd)
92
93
94
95 while 1:
96 state = str(sj.get_state())
97 print "state: " + state
98 if(state=="Failed" or state=="Done"):
99 break
100 time.sleep(2)
101
102
103
104 bj.cancel()
105
106
107
108 """ Test Job Submission via Advert """
109 if __name__ == "__main__":
110 main()
111