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
cumin-developers@lists.fedorahosted.org