Author: croberts
Date: 2012-12-11 17:09:56 +0000 (Tue, 11 Dec 2012)
New Revision: 5577
Modified:
branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py
Log:
A couple delete node forms...some refactoring.
Modified: branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py
===================================================================
--- branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py 2012-12-11 15:14:59 UTC (rev
5576)
+++ branches/elephant/cumin/python/cumin/gridhadoop/hadoop.py 2012-12-11 17:09:56 UTC (rev
5577)
@@ -1,6 +1,7 @@
from operator import itemgetter
-from cumin.objectselector import ObjectSelector, ObjectLinkColumn, ObjectTable,
ObjectTableColumn, ObjectQmfTable, ObjectQmfSelectorTable
+from cumin.objectselector import ObjectSelector, ObjectLinkColumn, ObjectTable,\
+ ObjectTableColumn, ObjectQmfTable, ObjectQmfSelectorTable, ObjectSelectorTaskForm,
ObjectSelectorTask
from cumin.objectframe import ObjectFrame, ObjectTaskForm
from cumin.stat import StatSet, StatFlashChart
from cumin.formats import fmt_bytes, fmt_datetime
@@ -20,14 +21,6 @@
strings = StringCatalog(__file__)
-class ObjectSelectorTableNoCheckboxes(ObjectSelector):
- def __init__(self, app, name, cls):
- super(ObjectSelectorTableNoCheckboxes, self).__init__(app, name, cls)
-
- def create_table(self, app, name, cls):
- return ObjectTable(app, name, cls)
-
-
class NameNodeSelector(ObjectSelector):
def __init__(self, app, name):
cls = app.model.com_redhat_cumin_grid_hadoop.NameNode
@@ -41,6 +34,8 @@
link = TaskLink(app, "nameNode_create", task)
self.links.add_child(link)
+ NameNodeDelete(app, self, "nodeName_delete")
+
self.enable_csv_export()
def create_table(self, app, name, cls):
@@ -61,6 +56,8 @@
self.add_search_filter(self.table.nn_col)
self.table.adapter = HadoopAdapter(app, cls, None)
+
+ DataNodeDelete(app, self, "dataNode_delete")
self.enable_csv_export()
@@ -194,7 +191,7 @@
self.add_column(self.owner_col)
-class DataNodeTable(ObjectQmfTable):
+class DataNodeTable(ObjectQmfSelectorTable):
def __init__(self, app, name, cls):
super(DataNodeTable, self).__init__(app, name, cls)
@@ -214,7 +211,7 @@
self.add_column(self.owner_col)
-class TaskTrackerTable(ObjectQmfTable):
+class TaskTrackerTable(ObjectQmfSelectorTable):
def __init__(self, app, name, cls):
super(TaskTrackerTable, self).__init__(app, name, cls)
@@ -234,7 +231,7 @@
self.add_column(self.owner_col)
-class JobTrackerTable(ObjectQmfTable):
+class JobTrackerTable(ObjectQmfSelectorTable):
def __init__(self, app, name, cls):
super(JobTrackerTable, self).__init__(app, name, cls)
@@ -253,6 +250,19 @@
self.add_column(self.uptime_col)
self.add_column(self.owner_col)
+class HadoopNodeDeleteForm(ObjectSelectorTaskForm):
+ def __init__(self, app, name, task, cls):
+ super(HadoopNodeDeleteForm, self).__init__(app, name, task)
+ self.task = task
+
+ def get_selection(self, session):
+ ids = self.ids.get(session)
+ self.selection.set(session, ids)
+ return len(ids)
+
+ def render_form_class(self, session):
+ return " ".join((super(HadoopNodeDeleteForm,
self).render_form_class(session), "mform"))
+
class NameNodeCreate(Task):
def __init__(self, app):
@@ -295,4 +305,64 @@
def render_title(self, session):
return "Number of name nodes to start"
-
\ No newline at end of file
+
+class NameNodeDelete(ObjectSelectorTask):
+ def __init__(self, app, selector, name):
+ super(NameNodeDelete, self).__init__(app, selector)
+ cls = app.model.com_redhat_cumin_grid_hadoop.NameNode
+
+ self.form = NameNodeDeleteForm(app, self.name, self, cls)
+ self.invoc = None
+
+ def get_title(self, session):
+ return "Remove name nodes"
+
+ def get_item_content(self, session, item):
+ return xml_escape(item)
+
+
+class NameNodeDeleteForm(HadoopNodeDeleteForm):
+ def process_submit(self, session):
+ name_nodes_to_kill = self.selection.get(session)
+
+ if not self.errors.get(session):
+ print "Here is where I'd make a call to kill some name nodes
[%s]" % name_nodes_to_kill
+ #self.task.invoke(session, name_nodes_to_kill)
+
+ url = self.return_url.get(session)
+ self.page.redirect.set(session, url)
+
+ def render_title(self, session):
+ return "Remove name nodes"
+
+
+class DataNodeDelete(ObjectSelectorTask):
+ def __init__(self, app, selector, name):
+ super(DataNodeDelete, self).__init__(app, selector)
+ cls = app.model.com_redhat_cumin_grid_hadoop.DataNode
+
+ self.form = DataNodeDeleteForm(app, self.name, self, cls)
+ self.invoc = None
+
+ def get_title(self, session):
+ return "Remove data nodes"
+
+ def get_item_content(self, session, item):
+ return xml_escape(item)
+
+
+class DataNodeDeleteForm(HadoopNodeDeleteForm):
+ def process_submit(self, session):
+ name_nodes_to_kill = self.selection.get(session)
+
+ if not self.errors.get(session):
+ print "Here is where I'd make a call to kill some data nodes
[%s]" % name_nodes_to_kill
+ #self.task.invoke(session, name_nodes_to_kill)
+
+ url = self.return_url.get(session)
+ self.page.redirect.set(session, url)
+
+ def render_title(self, session):
+ return "Remove data nodes"
+
+