Author: croberts
Date: 2013-01-17 19:41:02 +0000 (Thu, 17 Jan 2013)
New Revision: 5654
Modified:
branches/elephant/cumin/python/cumin/gridhadoop/datanode.py
branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py
branches/elephant/cumin/python/cumin/gridhadoop/main.py
branches/elephant/cumin/python/cumin/gridhadoop/namenode.py
branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
Log:
Another gridoop UI pit stop.
Modified: branches/elephant/cumin/python/cumin/gridhadoop/datanode.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/datanode.py 2013-01-16 19:27:04 UTC
(rev 5653)
+++ branches/elephant/cumin/python/cumin/gridhadoop/datanode.py 2013-01-17 19:41:02 UTC
(rev 5654)
@@ -8,6 +8,7 @@
from wooly.forms import StringField, ScalarField, OptionInputSet
from hadoop import *
+from hadoopobjectframe import *
from sage.util import *
@@ -44,7 +45,7 @@
def __init__(self, app, name, cls):
super(DataNodeTable, self).__init__(app, name, cls)
- self.id_col = ObjectTableColumn(app, "idcol", cls.Id)
+ self.id_col = self.DataNodeColumn(app, "idcol", cls.Id, cls.Id,
".datanodeframe")
self.sub_col = SubmittedColumn(app, "sub", cls.Submitted)
self.state_col = ObjectTableColumn(app, "statecol", cls.State)
self.uptime_col = UptimeColumn(app, "uptimecol", cls.Uptime)
@@ -56,6 +57,14 @@
self.add_column(self.uptime_col)
self.add_column(self.owner_col)
+ class DataNodeColumn(ObjectLinkColumn):
+ def render_cell_href(self, session, record):
+ id = unescape_entity(record[self.id_field.index])
+ #need to make this work for user/grid-hadoop path too somehow
+ # this is way less than ideal
+ frame = self.page.page_widgets_by_path[self.path.rsplit(".", 11)[0]
+ self.frame_path]
+ return frame.get_href(session, id, "grid2.lab.bos.redhat.com")
+
class DataNodeDelete(ObjectSelectorTask):
def __init__(self, app, selector, name):
super(DataNodeDelete, self).__init__(app, selector)
@@ -189,5 +198,59 @@
def render_title(self, session):
return "Number of data nodes to start"
+class DataNodeFrame(HadoopObjectFrame):
+ def __init__(self, app, name):
+ super(DataNodeFrame, self).__init__(app, name)
+ self.view = DataNodeObjectView(app, "view", self.object)
+ self.replace_child(self.view)
+ self.overview = DataNodeOverview(app, self.name + ".dnoverview",
self.object)
+ self.view.add_tab(self.overview)
+
+ def get_title(self, session):
+ retval = ""
+ try:
+ retval = "Data node:'%s' (%s)" %
(xml_escape(self.object.get(session).name), xml_escape(self.object.get(session).id))
+ except Exception, e:
+ pass
+ return retval
+
+ def get_object(self, session, id):
+ class Object(object):
+ pass
+ fake = Object()
+ fake.name = "fake data node object"
+ fake.id = id
+ return fake
+
+class DataNodeObjectView(HadoopObjectView):
+ def add_details_tab(self):
+ self.add_tab(DataNodeDetails(self.app, self.name + ".details",
self.object))
+
+ def render_title(self, session):
+ obj = self.object.get(session)
+ if obj is not None:
+ return "Data node: %s" % xml_escape(obj.id)
+ else:
+ return ""
+
+class DataNodeOverview(Widget):
+ def __init__(self, app, name, node):
+ super(DataNodeOverview, self).__init__(app, name)
+
+ def render_title(self, session):
+ return "Overview"
+
+class DataNodeDetails(Widget):
+ def __init__(self, app, name, object):
+ super(DataNodeDetails, self).__init__(app, name)
+ self.object = object
+
+ def render_title(self, session):
+ return "Details"
+
+ def render_name(self, session):
+ '''sample....would only be called if DataNodeDetails display was
overridden to say {name}'''
+ obj = self.object.get(session)
+ return obj.name
\ No newline at end of file
Modified: branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py 2013-01-16 19:27:04 UTC
(rev 5653)
+++ branches/elephant/cumin/python/cumin/gridhadoop/jobtracker.py 2013-01-17 19:41:02 UTC
(rev 5654)
@@ -10,7 +10,7 @@
from hadoop import *
from hadoopobjectframe import *
-from tasktracker import TaskTrackerSelector
+from tasktracker import TaskTrackerSelector, TaskTrackerFrame
from sage.util import *
@@ -177,6 +177,9 @@
self.view = JobTrackerObjectView(app, "view", self.object)
self.replace_child(self.view)
+ self.task_tracker_frame = TaskTrackerFrame(app, "tasktrackerframe")
+ self.add_mode(self.task_tracker_frame)
+
self.overview = JobTrackerOverview(app, self.name + ".jtoverview",
self.object)
self.view.add_tab(self.overview)
Modified: branches/elephant/cumin/python/cumin/gridhadoop/main.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/main.py 2013-01-16 19:27:04 UTC (rev
5653)
+++ branches/elephant/cumin/python/cumin/gridhadoop/main.py 2013-01-17 19:41:02 UTC (rev
5654)
@@ -7,6 +7,7 @@
from cumin.util import *
from namenode import NameNodeFrame
+from datanode import DataNodeFrame
from jobtracker import JobTrackerFrame
from namenode import NameNodeSelector
Modified: branches/elephant/cumin/python/cumin/gridhadoop/namenode.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/namenode.py 2013-01-16 19:27:04 UTC
(rev 5653)
+++ branches/elephant/cumin/python/cumin/gridhadoop/namenode.py 2013-01-17 19:41:02 UTC
(rev 5654)
@@ -8,7 +8,7 @@
from hadoop import *
from hadoopobjectframe import *
-from datanode import DataNodeSelector
+from datanode import DataNodeSelector, DataNodeFrame
from sage.util import *
@@ -67,11 +67,9 @@
#need to make this work for user/grid-hadoop path too somehow
# this is way less than ideal
frame = self.page.page_widgets_by_path[self.path.rsplit(".", 7)[0]
+ self.frame_path]
-
- #if isinstance(frame, TagObjectFrame):
+
return frame.get_href(session, id, "grid2.lab.bos.redhat.com")
-# else:
-# return id #not able to get a link
+
class NameNodeCreate(Task):
def __init__(self, app, name):
@@ -162,12 +160,12 @@
def __init__(self, app, name):
super(NameNodeFrame, self).__init__(app, name)
-# self.set_tags = TagsNodeEditTask(app, self)
-# self.set_nodes = TagsTagEditTask(app, self)
-# self.set_features = TagsFeatureEditTask(app, self)
self.view = NameNodeObjectView(app, "view", self.object)
self.replace_child(self.view)
+ self.data_node_frame = DataNodeFrame(app, "datanodeframe")
+ self.add_mode(self.data_node_frame)
+
self.overview = NameNodeOverview(app, self.name + ".nnoverview",
self.object)
self.view.add_tab(self.overview)
Modified: branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2013-01-16 19:27:04 UTC
(rev 5653)
+++ branches/elephant/cumin/python/cumin/gridhadoop/tasktracker.py 2013-01-17 19:41:02 UTC
(rev 5654)
@@ -8,6 +8,7 @@
from wooly.forms import StringField
from hadoop import *
+from hadoopobjectframe import *
from sage.util import *
@@ -44,7 +45,7 @@
def __init__(self, app, name, cls):
super(TaskTrackerTable, self).__init__(app, name, cls)
- self.id_col = ObjectTableColumn(app, "idcol", cls.Id)
+ self.id_col = self.TaskTrackerColumn(app, "idcol", cls.Id, cls.Id,
".tasktrackerframe")
self.sub_col = SubmittedColumn(app, "sub", cls.Submitted)
self.state_col = ObjectTableColumn(app, "statecol", cls.State)
self.uptime_col = UptimeColumn(app, "uptimecol", cls.Uptime)
@@ -56,6 +57,14 @@
self.add_column(self.uptime_col)
self.add_column(self.owner_col)
+ class TaskTrackerColumn(ObjectLinkColumn):
+ def render_cell_href(self, session, record):
+ id = unescape_entity(record[self.id_field.index])
+ #need to make this work for user/grid-hadoop path too somehow
+ # this is way less than ideal
+ frame = self.page.page_widgets_by_path[self.path.rsplit(".", 11)[0]
+ self.frame_path]
+ return frame.get_href(session, id, "grid2.lab.bos.redhat.com")
+
class TaskTrackerDelete(ObjectSelectorTask):
def __init__(self, app, selector, name):
super(TaskTrackerDelete, self).__init__(app, selector)
@@ -248,3 +257,61 @@
def render_item_selected_attr(self, session, item):
if item == self.param.get(session):
return "selected=\"selected\""
+
+
+class TaskTrackerFrame(HadoopObjectFrame):
+ def __init__(self, app, name):
+ super(TaskTrackerFrame, self).__init__(app, name)
+
+ self.view = TaskTrackerObjectView(app, "view", self.object)
+ self.replace_child(self.view)
+
+ self.overview = TaskTrackerOverview(app, self.name + ".ttoverview",
self.object)
+ self.view.add_tab(self.overview)
+
+ def get_title(self, session):
+ retval = ""
+ try:
+ retval = "Task tracker:'%s' (%s)" %
(xml_escape(self.object.get(session).name), xml_escape(self.object.get(session).id))
+ except Exception, e:
+ pass
+ return retval
+
+ def get_object(self, session, id):
+ class Object(object):
+ pass
+ fake = Object()
+ fake.name = "fake task tracker object"
+ fake.id = id
+ return fake
+
+class TaskTrackerObjectView(HadoopObjectView):
+ def add_details_tab(self):
+ self.add_tab(TaskTrackerDetails(self.app, self.name + ".details",
self.object))
+
+ def render_title(self, session):
+ obj = self.object.get(session)
+ if obj is not None:
+ return "Task tracker: %s" % xml_escape(obj.id)
+ else:
+ return ""
+
+class TaskTrackerOverview(Widget):
+ def __init__(self, app, name, node):
+ super(TaskTrackerOverview, self).__init__(app, name)
+
+ def render_title(self, session):
+ return "Overview"
+
+class TaskTrackerDetails(Widget):
+ def __init__(self, app, name, object):
+ super(TaskTrackerDetails, self).__init__(app, name)
+ self.object = object
+
+ def render_title(self, session):
+ return "Details"
+
+ def render_name(self, session):
+ '''sample....would only be called if TaskTrackerDetails display was
overridden to say {name}'''
+ obj = self.object.get(session)
+ return obj.name
\ No newline at end of file