[rhmessaging-commits] rhmessaging commits: r4230 - mgmt/newdata/cumin/python/cumin/grid.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Thu Aug 26 15:56:41 EDT 2010


Author: justi9
Date: 2010-08-26 15:56:41 -0400 (Thu, 26 Aug 2010)
New Revision: 4230

Modified:
   mgmt/newdata/cumin/python/cumin/grid/scheduler.py
   mgmt/newdata/cumin/python/cumin/grid/submission.py
Log:
To avoid a circular dependency, move the scheduler select field with the job submit code; warn the user if there's no scheduler to submit to

Modified: mgmt/newdata/cumin/python/cumin/grid/scheduler.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/scheduler.py	2010-08-26 18:38:46 UTC (rev 4229)
+++ mgmt/newdata/cumin/python/cumin/grid/scheduler.py	2010-08-26 19:56:41 UTC (rev 4230)
@@ -69,66 +69,6 @@
         self.start = DaemonSelectionStart(app, self, "SCHEDD")
         self.stop = DaemonSelectionStop(app, self, "SCHEDD")
 
-class SchedulerSelectField(ScalarField):
-    def __init__(self, app, name, pool_name):
-        super(SchedulerSelectField, self).__init__(app, name, None)
-
-        self.pool_name = pool_name
-
-        self.param = IntegerParameter(app, "param")
-        self.add_parameter(self.param)
-
-        cls = self.app.model.com_redhat_grid.Scheduler
-
-        self.object = ObjectAttribute(self, "object", cls, self.param)
-        self.add_attribute(self.object)
-
-        self.input = self.SchedulerOptions(app, "input", self.param)
-        self.add_child(self.input)
-
-    def get(self, session):
-        return self.object.get(session)
-
-    def render_title(self, session):
-        return "Schedd"
-
-    class SchedulerOptions(OptionInputSet):
-        def do_process(self, session):
-            cls = self.app.model.com_redhat_grid.Scheduler
-            id = self.param.get(session)
-
-            if id is None:
-                items = self.get_items(session)
-
-                if items:
-                    scheduler = choice(items)
-                    self.param.set(session, scheduler._id)
-
-            super(SchedulerSelectField.SchedulerOptions, self).do_process \
-                (session)
-
-        def do_get_items(self, session):
-            cls = self.app.model.com_redhat_grid.Scheduler
-
-            pool_name = self.parent.pool_name.get(session)
-
-            if pool_name:
-                schedulers = cls.get_selection(session.cursor, Pool=pool_name)
-            else:
-                schedulers = cls.get_selection(session.cursor)
-
-            return schedulers
-
-        def render_item_value(self, session, item):
-            return item._id
-
-        def render_item_content(self, session, item):
-            return item.Name
-
-        def render_item_selected_attr(self, session, item):
-            if item._id == self.param.get(session):
-                return "selected=\"selected\""
-
 class SchedulerGeneralStatSet(StatSet):
     def __init__(self, app, name, object):
         super(SchedulerGeneralStatSet, self).__init__(app, name, object)

Modified: mgmt/newdata/cumin/python/cumin/grid/submission.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/submission.py	2010-08-26 18:38:46 UTC (rev 4229)
+++ mgmt/newdata/cumin/python/cumin/grid/submission.py	2010-08-26 19:56:41 UTC (rev 4230)
@@ -112,6 +112,77 @@
     def render_title(self, session):
         return "Description"
 
+class JobSchedulerField(ScalarField):
+    def __init__(self, app, name, pool_name):
+        super(JobSchedulerField, self).__init__(app, name, None)
+
+        self.pool_name = pool_name
+
+        self.param = IntegerParameter(app, "param")
+        self.add_parameter(self.param)
+
+        cls = self.app.model.com_redhat_grid.Scheduler
+
+        self.object = ObjectAttribute(self, "object", cls, self.param)
+        self.add_attribute(self.object)
+
+        self.input = self.SchedulerOptions(app, "input", self.param)
+        self.add_child(self.input)
+
+        self.help = "Submit job to this schedd"
+
+    def get(self, session):
+        return self.object.get(session)
+
+    def validate(self, session):
+        super(JobSchedulerField, self).validate(session)
+
+        scheduler = self.get(session)
+
+        if not scheduler:
+            error = FormError("There is no schedd to submit to")
+            self.form.errors.add(session, error)
+
+    def render_title(self, session):
+        return "Schedd"
+
+    class SchedulerOptions(OptionInputSet):
+        def do_process(self, session):
+            cls = self.app.model.com_redhat_grid.Scheduler
+            id = self.param.get(session)
+
+            if id is None:
+                items = self.get_items(session)
+
+                if items:
+                    scheduler = choice(items)
+                    self.param.set(session, scheduler._id)
+
+            super(JobSchedulerField.SchedulerOptions, self).do_process \
+                (session)
+
+        def do_get_items(self, session):
+            cls = self.app.model.com_redhat_grid.Scheduler
+
+            pool_name = self.parent.pool_name.get(session)
+
+            if pool_name:
+                schedulers = cls.get_selection(session.cursor, Pool=pool_name)
+            else:
+                schedulers = cls.get_selection(session.cursor)
+
+            return schedulers
+
+        def render_item_value(self, session, item):
+            return item._id
+
+        def render_item_content(self, session, item):
+            return item.Name
+
+        def render_item_selected_attr(self, session, item):
+            if item._id == self.param.get(session):
+                return "selected=\"selected\""
+
 class JobAttributesField(MultilineStringField):
     def __init__(self, app, name):
         super(JobAttributesField, self).__init__(app, name)
@@ -255,10 +326,7 @@
         self.directory.help = "Run the process in this directory"
         self.add_field(self.directory)
 
-        from scheduler import SchedulerSelectField # XXX
-
-        self.scheduler = SchedulerSelectField(app, "scheduler", self.pool_name)
-        self.scheduler.help = "Submit job to this schedd"
+        self.scheduler = JobSchedulerField(app, "scheduler", self.pool_name)
         self.add_extra_field(self.scheduler)
 
         self.universe = self.UniverseField(app, "universe")
@@ -290,6 +358,9 @@
         self.attrs = JobAttributesField(app, "attrs")
         self.add_extra_field(self.attrs)
 
+    def process_display(self, session):
+        self.scheduler.validate(session)
+
     def process_submit(self, session):
         self.validate(session)
 
@@ -520,15 +591,15 @@
         self.memory.input.param.default = 512
         self.add_extra_field(self.memory)
 
-        from scheduler import SchedulerSelectField # XXX
-
-        self.scheduler = SchedulerSelectField(app, "scheduler", self.pool_name)
-        self.scheduler.help = "Submit job to this schedd"
+        self.scheduler = JobSchedulerField(app, "scheduler", self.pool_name)
         self.add_extra_field(self.scheduler)
 
         self.attrs = JobAttributesField(app, "attrs")
         self.add_extra_field(self.attrs)
 
+    def process_display(self, session):
+        self.scheduler.validate(session)
+
     def process_submit(self, session):
         self.validate(session)
 
@@ -633,14 +704,15 @@
         self.location.input.size = 50
         self.add_field(self.location)
 
-        from scheduler import SchedulerSelectField # XXX
-
-        self.scheduler = SchedulerSelectField(app, "scheduler", self.pool_name)
+        self.scheduler = JobSchedulerField(app, "scheduler", self.pool_name)
         self.add_extra_field(self.scheduler)
 
         self.attrs = JobAttributesField(app, "attrs")
         self.add_extra_field(self.attrs)
 
+    def process_display(self, session):
+        self.scheduler.validate(session)
+
     def process_submit(self, session):
         self.validate(session)
 



More information about the rhmessaging-commits mailing list