Author: croberts
Date: 2012-12-13 14:51:02 +0000 (Thu, 13 Dec 2012)
New Revision: 5587
Modified:
branches/elephant/cumin/python/cumin/gridhadoop/datanode.py
branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py
branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py
branches/elephant/cumin/python/cumin/gridhadoop/namenode.py
branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
Log:
More form adjustments, wiring to tasks.
Modified: branches/elephant/cumin/python/cumin/gridhadoop/datanode.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/datanode.py 2012-12-12 18:46:49 UTC
(rev 5586)
+++ branches/elephant/cumin/python/cumin/gridhadoop/datanode.py 2012-12-13 14:51:02 UTC
(rev 5587)
@@ -109,6 +109,15 @@
self.count = self.CountField(app, "count")
self.add_field(self.count)
+
+ self.binfile = BinFileLoc(app, "binfile")
+ self.add_field(self.binfile)
+
+ self.owner = Owner(app, "owner")
+ self.add_field(self.owner)
+
+ self.hadoophost = HadoopHostField(app, "hadoophost")
+ self.add_field(self.hadoophost)
def process_display(self, session):
self.scheduler.validate(session)
Modified: branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py 2012-12-12 18:46:49 UTC (rev
5586)
+++ branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py 2012-12-13 14:51:02 UTC (rev
5587)
@@ -87,3 +87,67 @@
class HadoopNodeCreateForm(ObjectTaskForm):
def render_form_class(self, session):
return " ".join((super(HadoopNodeCreateForm,
self).render_form_class(session), "mform"))
+
+
+class HadoopHostField(ScalarField):
+ def __init__(self, app, name):
+ super(HadoopHostField, self).__init__(app, name, None)
+
+ self.param = StringParameter(app, "param")
+ self.add_parameter(self.param)
+
+ self.input = self.HadoopHostOptions(app, "input", self.param)
+ self.add_child(self.input)
+
+ def get(self, session):
+ return self.input.get(session)
+
+ def validate(self, session):
+ super(HadoopHostField, self).validate(session)
+
+ name_nodes = self.input.get_items(session)
+
+ if not name_nodes:
+ error = FormError("There is no hadoop host to submit to")
+ self.form.errors.add(session, error)
+
+ def render_title(self, session):
+ return "Hadoop host"
+
+ def render_help(self, session):
+ return "Submit hadoop jobs to this host"
+
+ class HadoopHostOptions(OptionInputSet):
+ def do_process(self, session):
+ id = self.param.get(session)
+
+ if id is None:
+ items = self.get_items(session)
+
+ if items:
+ self.param.set(session, items[0])
+
+ super(HadoopHostField.HadoopHostOptions, self).do_process \
+ (session)
+
+ def do_get_items(self, session):
+ hosts = ["grid2.lab.bos.redhat.com"]
+ return hosts
+
+ 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\""
+
+class BinFileLoc(StringField):
+ def render_title(self, session):
+ return "Location of hadoop bin-tar file"
+
+class Owner(StringField):
+ def render_title(self, session):
+ return "Username of the owner"
\ No newline at end of file
Modified: branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py 2012-12-12 18:46:49 UTC
(rev 5586)
+++ branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py 2012-12-13 14:51:02 UTC
(rev 5587)
@@ -105,6 +105,15 @@
self.count = self.CountField(app, "count")
self.add_field(self.count)
+
+ self.binfile = BinFileLoc(app, "binfile")
+ self.add_field(self.binfile)
+
+ self.owner = Owner(app, "owner")
+ self.add_field(self.owner)
+
+ self.hadoophost = HadoopHostField(app, "hadoophost")
+ self.add_field(self.hadoophost)
def process_display(self, session):
self.scheduler.validate(session)
Modified: branches/elephant/cumin/python/cumin/gridhadoop/namenode.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/namenode.py 2012-12-12 18:46:49 UTC
(rev 5586)
+++ branches/elephant/cumin/python/cumin/gridhadoop/namenode.py 2012-12-13 14:51:02 UTC
(rev 5587)
@@ -8,7 +8,7 @@
from hadoop import *
-from sage.util import MethodResult
+from sage.util import *
class NameNodeSelector(ObjectSelector):
def __init__(self, app, name):
@@ -63,6 +63,28 @@
self.form = NameNodeCreateForm(app, self.name, self, cls)
self.invoc = None
+
+ def callback(self, result):
+ if result == False:
+ self.invoc.status = self.invoc.FAILED
+ self.invoc.end()
+
+ def fake_call(self, binfile, owner, hadoophost):
+ return True
+
+ def do_invoke(self, session, object, invoc, args):
+ self.invoc = invoc
+ (binfile, owner, hadoophost) = args
+
+ try:
+ print "Here is where I'd do the work and start up %s name
nodes" % count
+ call_async(self.callback, self.fake_call, binfile, owner, hadoophost)
+ #call_async(self.callback, self.app.hadoop.create_name_node, name_nodes)
+ pass
+ except:
+ invoc.status = invoc.FAILED
+ log.debug("Creating name node failed", exc_info=True)
+ invoc.end()
def get_title(self, session, x):
return "Create a name node"
@@ -71,9 +93,15 @@
class NameNodeCreateForm(HadoopNodeCreateForm):
def __init__(self, app, name, task, cls):
super(NameNodeCreateForm, self).__init__(app, name, task, cls)
+
+ self.binfile = BinFileLoc(app, "binfile")
+ self.add_field(self.binfile)
- self.count = self.CountField(app, "count")
- self.add_field(self.count)
+ self.owner = Owner(app, "owner")
+ self.add_field(self.owner)
+
+ self.hadoophost = HadoopHostField(app, "hadoophost")
+ self.add_field(self.hadoophost)
def process_display(self, session):
self.scheduler.validate(session)
@@ -85,19 +113,15 @@
self.page.redirect.set(session, url)
if not self.errors.get(session):
- count = self.count.get(session)
-
- print "Here is where I'd do the work and start up %s name
nodes" % count
+ binfile = self.binfile.get(session)
+ owner = self.owner.get(session)
+ hadoophost = self.hadoophost.get(session)
+ self.task.invoke(session, None, (binfile, owner, hadoophost))
self.task.exit_with_redirect(session, url)
def render_title(self, session):
return "Create a name node"
-
- class CountField(StringField):
- def render_title(self, session):
- return "Number of name nodes to start"
-
class NameNodeDelete(ObjectSelectorTask):
def __init__(self, app, selector, name):
super(NameNodeDelete, self).__init__(app, selector)
Modified: branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2012-12-12 18:46:49 UTC
(rev 5586)
+++ branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2012-12-13 14:51:02 UTC
(rev 5587)
@@ -107,7 +107,16 @@
self.add_field(self.jobTracker)
self.count = self.CountField(app, "count")
- self.add_field(self.count)
+ self.add_field(self.count)
+
+ self.binfile = BinFileLoc(app, "binfile")
+ self.add_field(self.binfile)
+
+ self.owner = Owner(app, "owner")
+ self.add_field(self.owner)
+
+ self.hadoophost = HadoopHostField(app, "hadoophost")
+ self.add_field(self.hadoophost)
def process_display(self, session):
self.scheduler.validate(session)