Author: croberts
Date: 2012-12-11 20:32:57 +0000 (Tue, 11 Dec 2012)
New Revision: 5583
Modified:
branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
Log:
Task tracker create form.
Modified: branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2012-12-11 20:20:21 UTC
(rev 5582)
+++ branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2012-12-11 20:32:57 UTC
(rev 5583)
@@ -103,8 +103,11 @@
def __init__(self, app, name, task, cls):
super(TaskTrackerCreateForm, self).__init__(app, name, task, cls)
+ self.jobTracker = JobTrackerField(app, "jobtracker")
+ self.add_field(self.jobTracker)
+
self.count = self.CountField(app, "count")
- self.add_field(self.count)
+ self.add_field(self.count)
def process_display(self, session):
self.scheduler.validate(session)
@@ -117,8 +120,9 @@
if not self.errors.get(session):
count = self.count.get(session)
+ job_tracker = self.jobTracker.get(session)
- print "Here is where I'd do the work and start up %s name
nodes" % count
+ print "Here is where I'd do the work and start up %s task trackers
bound to job tracker %s" % (count, job_tracker)
self.task.exit_with_redirect(session, url)
def render_title(self, session):
@@ -126,4 +130,64 @@
class CountField(StringField):
def render_title(self, session):
- return "Number of task trackers to start"
\ No newline at end of file
+ return "Number of task trackers to start"
+
+
+class JobTrackerField(ScalarField):
+ def __init__(self, app, name):
+ super(JobTrackerField, self).__init__(app, name, None)
+
+ self.param = IntegerParameter(app, "param")
+ self.add_parameter(self.param)
+
+ cls = app.model.com_redhat_cumin_grid_hadoop.JobTracker
+
+ self.input = self.JobTrackerOptions(app, "input", self.param)
+ self.add_child(self.input)
+
+ def get(self, session):
+ return self.input.get(session)
+
+ def validate(self, session):
+ super(JobTrackerField, self).validate(session)
+
+ job_tracker = self.input.get_items(session)
+
+ if not job_tracker:
+ error = FormError("There is no job tracker to bind to")
+ self.form.errors.add(session, error)
+
+ def render_title(self, session):
+ return "Job tracker"
+
+ def render_help(self, session):
+ return "Attach job trackers to this job tracker"
+
+ class JobTrackerOptions(OptionInputSet):
+ def do_process(self, session):
+ cls = self.app.model.com_redhat_cumin_grid_hadoop.JobTracker
+ id = self.param.get(session)
+
+ if id is None:
+ items = self.get_items(session)
+
+ if items:
+ self.param.set(session, items[0])
+
+ super(JobTrackerField.JobTrackerOptions, self).do_process \
+ (session)
+
+ def do_get_items(self, session):
+ cls = self.app.model.com_redhat_cumin_grid_hadoop.JobTracker
+ name_nodes = [98765, 54321]
+ return name_nodes
+
+ def render_item_value(self, session, item):
+ return item
+
+ def render_item_content(self, session, item):
+ return xml_escape(item)
+
+ def render_item_selected_attr(self, session, item):
+ if item == self.param.get(session):
+ return "selected=\"selected\""
\ No newline at end of file