[rhmessaging-commits] rhmessaging commits: r4219 - in mgmt/newdata/cumin/python/cumin: usergrid and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Mon Aug 23 17:03:20 EDT 2010


Author: justi9
Date: 2010-08-23 17:03:20 -0400 (Mon, 23 Aug 2010)
New Revision: 4219

Modified:
   mgmt/newdata/cumin/python/cumin/grid/main.py
   mgmt/newdata/cumin/python/cumin/grid/submission.py
   mgmt/newdata/cumin/python/cumin/usergrid/widgets.py
   mgmt/newdata/cumin/python/cumin/usergrid/widgets.strings
Log:
For bz 618251

 * Isolate the dag-specific submit logic in its own task

 * Use a more narrowly focused dag submit form

 * Correct some ad attributes for dag submit


Modified: mgmt/newdata/cumin/python/cumin/grid/main.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/main.py	2010-08-23 18:32:08 UTC (rev 4218)
+++ mgmt/newdata/cumin/python/cumin/grid/main.py	2010-08-23 21:03:20 UTC (rev 4219)
@@ -17,6 +17,7 @@
         super(Module, self).__init__(app, name)
 
         self.job_submit = JobSubmit(app)
+        self.dag_job_submit = DagJobSubmit(app)
         self.vm_job_submit = VmJobSubmit(app)
 
         # cls = app.model.com_redhat_grid.Job

Modified: mgmt/newdata/cumin/python/cumin/grid/submission.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/submission.py	2010-08-23 18:32:08 UTC (rev 4218)
+++ mgmt/newdata/cumin/python/cumin/grid/submission.py	2010-08-23 21:03:20 UTC (rev 4219)
@@ -89,6 +89,10 @@
         self.links.add_child(link)
 
         link = self.PoolSubmitLink \
+            (app, "dag_job_submit", app.grid.dag_job_submit)
+        self.links.add_child(link)
+
+        link = self.PoolSubmitLink \
             (app, "vm_job_submit", app.grid.vm_job_submit)
         self.links.add_child(link)
 
@@ -549,106 +553,104 @@
         def render_title(self, session):
             return "Memory"
 
-# class SubmissionDagAdd(SubmissionAdd):
-#     def __init__(self, app, frame):
-#         super(SubmissionDagAdd, self).__init__(app, frame)
+class DagJobSubmit(Task):
+    def __init__(self, app):
+        super(DagJobSubmit, self).__init__(app)
 
-#     def get_add_form(self, app):
-#         return SubmissionAddDagForm(app, self.name, self)
+        self.form = DagJobSubmitForm(app, self.name, self)
 
-#     def get_title(self, session):
-#         return "Create DAG submission"
+    def get_title(self, session, scheduler):
+        return "Submit DAG job"
 
-# class SubmissionAddDagForm(SubmissionAddForm):
-#     def add_fields(self, app):
-#         self.dag = self.DagField(app, "dag")
-#         self.dag.input.size = 50
-#         self.dag.required = True
-#         self.dag.help = "DAG descriptor file location"
-#         self.add_field(self.dag)
+    def do_invoke(self, session, scheduler, invoc,
+                  description, dag_location, attrs={}):
+        ad = dict()
+        
+        dag_dir, dag_file = os.path.split(dag_location)
 
-#         self.requirements = self.RequirementsField(app, "requirements")
-#         self.requirements.input.columns = 50
-#         self.requirements.required = True
-#         self.requirements.help = "Attributes controlling where and when " + \
-#             "this submission will run"
-#         self.add_field(self.requirements)
+        ad["Submission"] = description
+        ad["Owner"] = invoc.user.name
+        ad["Cmd"] = "/usr/bin/condor_dagman"
+        ad["Iwd"] = dag_dir 
+        ad["JobUniverse"] = 7 # Scheduler
+        ad["Out"] = "%s.out" % dag_file
+        ad["Err"] = "%s.err" % dag_file
+        ad["UserLog"] = "%s.log" % dag_file
+        ad["Requirements"] = "True"
+        ad["RemoveKillSig"] = "SIGUSR1"
+        ad["OnExitRemove"] = "ExitSignal =?= 11 || " + \
+            "(ExitCode =!= UNDEFINED && ExitCode >= 0 && ExitCode <= 2)"
 
-#         self.universe = Attribute(app, "universe")
-#         self.universe.default = self.task.UNIVERSE["SCHEDULER"]
-#         self.add_attribute(self.universe)
+        args = list()
+        args.append("-f")
+        args.append("-l .")
+        args.append("-Debug 3")
+        args.append("-Lockfile %s.lock" % dag_file)
+        args.append("-AutoRescue 1")
+        args.append("-DoRescueFrom 0")
+        args.append("-Dag %s" % dag_location)
 
-#         self.attributes_ = self.DagAttributes(app, "attributes")
-#         self.add_attribute(self.attributes_)
+        ad["Arguments"] = " ".join(args)
 
-#         self.directory = self.Iwd(app, "directory")
-#         self.add_attribute(self.directory)
+        vars = list()
+        vars.append("_CONDOR_DAGMAN_LOG=%s.out" % dag_file)
+        vars.append("_CONDOR_MAX_DAGMAN_LOG=0")
 
-#         self.stdin = Attribute(app, "stdin")
-#         self.add_attribute(self.stdin)
+        ad["Environment"] = " ".join(vars)
 
-#         self.command = self.DagCommand(app, "command")
-#         self.add_attribute(self.command)
+        descriptors = dict()
+        descriptors["Requirements"] = "com.redhat.grid.Expression"
+        descriptors["OnExitRemove"] = "com.redhat.grid.Expression"
 
-#         self.stdout = self.StdoutField(app, "stdout")
-#         self.stdout.input.size = 50
-#         self.stdout.help = "Send process output to this file"
-#         self.stdout.input.param.default = "diamond.dag.lib.out"
-#         self.add_extra_field(self.stdout)
+        ad["!!descriptors"] = descriptors
 
-#         self.stderr = self.StderrField(app, "stderr")
-#         self.stderr.input.size = 50
-#         self.stderr.help = "Send error output to this file"
-#         self.stderr.input.param.default = "diamond.dag.lib.err"
-#         self.add_extra_field(self.stderr)
+        invoc.description = "Submit DAG job '%s'" % description
 
-#         self.usrlog = self.UsrLogField(app, "usrlog")
-#         self.usrlog.input.size = 50
-#         self.usrlog.help = "User Log File"
-#         self.usrlog.input.param.default = "diamond.dag.dagman.log"
-#         self.add_extra_field(self.usrlog)
+        self.qmf_call(invoc, scheduler, "SubmitJob", ad)
 
-#         self.condor = self.CondorVersionField(app, "cv")
-#         self.condor.required = True
-#         self.condor.input.size = 50
-#         self.condor.help = "Condor Version"
-#         self.condor.input.param.default = "'7.4.3' 'Mar' '16' '2010' 'BuildID:' 'RH-7.4.3-0.5.el5' 'PRE-RELEASE'"
-#         self.add_extra_field(self.condor)
+class DagJobSubmitForm(ObjectTaskForm):
+    def __init__(self, app, name, task):
+        cls = app.model.com_redhat_grid.Scheduler
+        super(DagJobSubmitForm, self).__init__(app, name, task, cls)
 
-#     class DagField(StringField):
-#         def render_title(self, session):
-#             return "DAG"
+        self.pool_name = Attribute(app, "pool")
+        self.add_attribute(self.pool_name)
 
-#         def get_base_path(self, session):
-#             dag = self.get(session)
-#             base, sep, file = rpartition(dag, "/")
-#             return base
+        self.description = JobDescriptionField(app, "description")
+        self.add_field(self.description)
 
-#     class Iwd(Attribute):
-#         def get(self, session):
-#             return self.widget.dag.get_base_path(session)
+        self.location = self.LocationField(app, "location")
+        self.location.help = "Path to the DAG job file"
+        self.location.required = True
+        self.location.input.size = 50
+        self.add_field(self.location)
 
-#     class CondorVersionField(StringField):
-#         def render_title(self, session):
-#             return "Condor Version"
+        from scheduler import SchedulerSelectField # XXX
 
-#     class DagCommand(Attribute):
-#         def get(self, session):
-#             dag = self.widget.dag.get(session)
-#             condor = self.widget.condor.get(session)
-#             args = """-f -l . -Debug 3 -Lockfile diamond.dag.lock -AutoRescue 1 
-#             -DoRescueFrom 0 -Dag diamond.dag -CsdVersion $CondorVersion:' %s ' %s"""
+        self.scheduler = SchedulerSelectField(app, "scheduler", self.pool_name)
+        self.add_extra_field(self.scheduler)
 
-#             cmd = "/usr/bin/condor_dagman"
-#             return "%s %s" % (cmd, args % (condor, dag))
+        self.attrs = JobAttributesField(app, "attrs")
+        self.add_extra_field(self.attrs)
 
-#     class DagAttributes(Attribute):
-#         def get(self, session):
+    def process_submit(self, session):
+        self.validate(session)
 
-#             ads = list()
-#             ads.append("getenv=True")
-#             ads.append("remove_kill_sig=SIGUSR1")
-#             ads.append("on_exit_remove=( ExitSignal =?= 11 || (ExitCode =!= UNDEFINED && ExitCode>=0 && ExitCode <= 2))")
-#             ads.append("environment=_CONDOR_DAGMAN_LOG=diamond.dag.dagman.out;_CONDOR_MAX_DAGMAN_LOG=0")
+        attrs = self.attrs.parse_attributes(session)
 
-#             return "\n".join(ads)
+        if not self.errors.get(session):
+            scheduler = self.scheduler.get(session)
+            description = self.description.get(session)
+            location = self.location.get(session)
+
+            self.task.invoke(session,
+                             scheduler,
+                             description,
+                             location,
+                             attrs=attrs)
+
+            self.task.exit_with_redirect(session, scheduler)
+
+    class LocationField(StringField):
+        def render_title(self, session):
+            return "DAG file location"

Modified: mgmt/newdata/cumin/python/cumin/usergrid/widgets.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/usergrid/widgets.py	2010-08-23 18:32:08 UTC (rev 4218)
+++ mgmt/newdata/cumin/python/cumin/usergrid/widgets.py	2010-08-23 21:03:20 UTC (rev 4219)
@@ -73,6 +73,9 @@
         link = TaskLink(app, "job_submit", app.grid.job_submit)
         self.add_child(link)
 
+        link = TaskLink(app, "dag_job_submit", app.grid.dag_job_submit)
+        self.add_child(link)
+
         link = TaskLink(app, "vm_job_submit", app.grid.vm_job_submit)
         self.add_child(link)
 
@@ -115,6 +118,9 @@
         link = TaskLink(app, "job_submit", app.grid.job_submit)
         self.links.add_child(link)
 
+        link = TaskLink(app, "dag_job_submit", app.grid.dag_job_submit)
+        self.links.add_child(link)
+
         link = TaskLink(app, "vm_job_submit", app.grid.vm_job_submit)
         self.links.add_child(link)
 

Modified: mgmt/newdata/cumin/python/cumin/usergrid/widgets.strings
===================================================================
--- mgmt/newdata/cumin/python/cumin/usergrid/widgets.strings	2010-08-23 18:32:08 UTC (rev 4218)
+++ mgmt/newdata/cumin/python/cumin/usergrid/widgets.strings	2010-08-23 21:03:20 UTC (rev 4219)
@@ -36,6 +36,7 @@
         
         <ul style="list-style-type: none; margin: 1 0; padding: 0;">
           <li>{job_submit}</li>
+          <li>{dag_job_submit}</li>
           <li>{vm_job_submit}</li>
         </ul>
       </td>



More information about the rhmessaging-commits mailing list