Author: croberts
Date: 2012-11-16 14:31:26 +0000 (Fri, 16 Nov 2012)
New Revision: 5544
Added:
branches/elephant/cumin/python/cumin/grid-hadoop/
branches/elephant/cumin/python/cumin/grid-hadoop/__init__.py
branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.py
branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.strings
branches/elephant/cumin/python/cumin/grid-hadoop/main.py
branches/elephant/cumin/python/cumin/grid-hadoop/main.strings
Modified:
branches/elephant/cumin/model/access/persona.xml
branches/elephant/cumin/model/cumin.xml
branches/elephant/cumin/model/rosemary.xml
Log:
skeleton for "elephant" demo
Modified: branches/elephant/cumin/model/access/persona.xml
===================================================================
--- branches/elephant/cumin/model/access/persona.xml 2012-11-15 22:05:56 UTC (rev 5543)
+++ branches/elephant/cumin/model/access/persona.xml 2012-11-16 14:31:26 UTC (rev 5544)
@@ -29,6 +29,7 @@
<Module name="grid"/>
<Module name="inventory"/>
<Module name="usergrid"/>
+ <Module name="grid-hadoop"/>
<GroupAccess name="nogroup">
<MainPage name="login.html"/>
@@ -45,7 +46,29 @@
<ModuleAccess name="*"/>
</GroupAccess>
</Persona>
+
+ <Persona name="gridoop" auth="True">
+ <Module name="account"/>
+ <Module name="configuration"/>
+ <Module name="inventory"/>
+ <Module name="grid-hadoop"/>
+ <GroupAccess name="nogroup">
+ <MainPage name="login.html"/>
+ </GroupAccess>
+
+ <GroupAccess name="user">
+ <MainPage name="usergrid.html"/>
+ <ModuleAccess name="account"/>
+ <ModuleAccess name="usergrid"/>
+ </GroupAccess>
+
+ <GroupAccess name="admin">
+ <MainPage name="index.html"/>
+ <ModuleAccess name="*"/>
+ </GroupAccess>
+ </Persona>
+
<Persona name="messaging" auth="False">
<Module name="account"/>
<Module name="messaging"/>
Modified: branches/elephant/cumin/model/cumin.xml
===================================================================
--- branches/elephant/cumin/model/cumin.xml 2012-11-15 22:05:56 UTC (rev 5543)
+++ branches/elephant/cumin/model/cumin.xml 2012-11-16 14:31:26 UTC (rev 5544)
@@ -43,6 +43,20 @@
<property name="Features" type="sstr"/>
<property name="NumHosts" type="sstr"/>
</class>
-
</package>
+
+ <package name="com.redhat.cumin.grid.hadoop">
+ <class name="NameNode" storage="none">
+ <property name="Name" type="sstr"/>
+ </class>
+ <class name="DataNode" storage="none">
+ <property name="Name" type="sstr"/>
+ </class>
+ <class name="TaskTracker" storage="none">
+ <property name="Name" type="sstr"/>
+ </class>
+ <class name="JobTracker" storage="none">
+ <property name="Name" type="sstr"/>
+ </class>
+ </package>
</model>
Modified: branches/elephant/cumin/model/rosemary.xml
===================================================================
--- branches/elephant/cumin/model/rosemary.xml 2012-11-15 22:05:56 UTC (rev 5543)
+++ branches/elephant/cumin/model/rosemary.xml 2012-11-16 14:31:26 UTC (rev 5544)
@@ -34,6 +34,32 @@
</property>
</class>
</package>
+
+ <package name="com.redhat.cumin.grid.hadoop">
+ <class name="NameNode">
+ <property name="Name">
+ <title>Name</title>
+ </property>
+ </class>
+
+ <class name="DataNode">
+ <property name="Name">
+ <title>Name</title>
+ </property>
+ </class>
+
+ <class name="TaskTracker">
+ <property name="Name">
+ <title>Name</title>
+ </property>
+ </class>
+
+ <class name="JobTracker">
+ <property name="Name">
+ <title>Name</title>
+ </property>
+ </class>
+ </package>
<package name="org.apache.qpid.broker">
<class name="Binding">
Added: branches/elephant/cumin/python/cumin/grid-hadoop/__init__.py
===================================================================
--- branches/elephant/cumin/python/cumin/grid-hadoop/__init__.py
(rev 0)
+++ branches/elephant/cumin/python/cumin/grid-hadoop/__init__.py 2012-11-16 14:31:26 UTC
(rev 5544)
@@ -0,0 +1 @@
+from main import *
Property changes on: branches/elephant/cumin/python/cumin/grid-hadoop/__init__.py
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.py
===================================================================
--- branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.py
(rev 0)
+++ branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.py 2012-11-16 14:31:26 UTC
(rev 5544)
@@ -0,0 +1,187 @@
+from operator import itemgetter
+
+from cumin.objectselector import ObjectSelector, ObjectLinkColumn, ObjectTable,
ObjectTableColumn, ObjectQmfTable
+from cumin.objectframe import ObjectFrame
+from cumin.stat import StatSet, StatFlashChart
+from cumin.formats import fmt_bytes, fmt_datetime
+from cumin.model import CuminStatistic
+from cumin.parameters import RosemaryObjectParameter
+from cumin.sqladapter import ObjectSqlAdapter, ObjectSqlField
+from cumin.util import *
+from cumin.qmfadapter import ObjectQmfAdapter
+
+from sage.wallaby.wallabyoperations import WallabyOperations, WBTypes
+from sage.util import MethodResult
+
+from wooly import Session, Widget
+from wooly.datatable import *
+from wooly.util import StringCatalog, xml_escape
+
+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
+
+ super(NameNodeSelector, self).__init__(app, name, cls)
+
+ self.add_search_filter(self.table.name_col)
+ self.table.adapter = HadoopAdapter(app, cls, None)
+
+ self.enable_csv_export()
+
+ def create_table(self, app, name, cls):
+ return NameNodeTable(app, name, cls)
+
+ def render_title(self, session):
+ return "HDFS Name nodes"
+
+ def get_qmf_results(self, session):
+ values = self.get_data_values(session)
+ return self.table.adapter.get_sage_results(values)
+
+class DataNodeSelector(ObjectSelector):
+ def __init__(self, app, name):
+ cls = app.model.com_redhat_cumin_grid_hadoop.DataNode
+
+ super(DataNodeSelector, self).__init__(app, name, cls)
+
+ self.add_search_filter(self.table.name_col)
+ self.table.adapter = HadoopAdapter(app, cls, None)
+
+ self.enable_csv_export()
+
+ def create_table(self, app, name, cls):
+ return DataNodeTable(app, name, cls)
+
+ def render_title(self, session):
+ return "HDFS data nodes"
+
+ def get_qmf_results(self, session):
+ values = self.get_data_values(session)
+ return self.table.adapter.get_sage_results(values)
+
+class TaskTrackerSelector(ObjectSelector):
+ def __init__(self, app, name):
+ cls = app.model.com_redhat_cumin_grid_hadoop.TaskTracker
+
+ super(TaskTrackerSelector, self).__init__(app, name, cls)
+
+ self.add_search_filter(self.table.name_col)
+ self.table.adapter = HadoopAdapter(app, cls, None)
+
+ self.enable_csv_export()
+
+ def create_table(self, app, name, cls):
+ return TaskTrackerTable(app, name, cls)
+
+ def render_title(self, session):
+ return "Hadoop task trackers"
+
+ def get_qmf_results(self, session):
+ values = self.get_data_values(session)
+ return self.table.adapter.get_sage_results(values)
+
+class JobTrackerSelector(ObjectSelector):
+ def __init__(self, app, name):
+ cls = app.model.com_redhat_cumin_grid_hadoop.JobTracker
+
+ super(JobTrackerSelector, self).__init__(app, name, cls)
+
+ self.add_search_filter(self.table.name_col)
+ self.table.adapter = HadoopAdapter(app, cls, None)
+
+ self.enable_csv_export()
+
+ def create_table(self, app, name, cls):
+ return JobTrackerTable(app, name, cls)
+
+ def render_title(self, session):
+ return "Hadoop job trackers"
+
+ def get_qmf_results(self, session):
+ values = self.get_data_values(session)
+ return self.table.adapter.get_sage_results(values)
+
+
+class HadoopAdapter(ObjectQmfAdapter):
+ def __init__(self, app, cls, remoteDataMethod):
+ super(HadoopAdapter, self).__init__(app, cls)
+ self.remoteDataMethod = remoteDataMethod
+
+ def get_count(self, values):
+ data = self.do_get_data(values)
+ return len(data)
+
+ def get_sage_results(self, values):
+ session = values['session']
+
+ # TODO make some sage call and return the results
+ # Here, we call self.remoteDataMethod
+ results = MethodResult()
+ results.data = {"namenode1": {"Name":"Namenode1"}}
+
+ return results
+
+ def do_get_data(self, values):
+ results = self.get_sage_results(values)
+ namenodes = results.data
+
+ if namenodes is None or len(namenodes) == 0:
+ return {}
+
+ return namenodes
+
+
+class NameNodeTable(ObjectQmfTable):
+ def __init__(self, app, name, cls):
+ super(NameNodeTable, self).__init__(app, name, cls)
+
+ self.name_col = self.NameColumn(app, "name", cls.Name)
+ self.add_column(self.name_col)
+
+ class NameColumn(ObjectTableColumn):
+ def render_text_align(self, session):
+ return "left"
+
+
+class DataNodeTable(ObjectQmfTable):
+ def __init__(self, app, name, cls):
+ super(DataNodeTable, self).__init__(app, name, cls)
+
+ self.name_col = self.NameColumn(app, "name", cls.Name)
+ self.add_column(self.name_col)
+
+ class NameColumn(ObjectTableColumn):
+ def render_text_align(self, session):
+ return "left"
+
+class TaskTrackerTable(ObjectQmfTable):
+ def __init__(self, app, name, cls):
+ super(TaskTrackerTable, self).__init__(app, name, cls)
+
+ self.name_col = self.NameColumn(app, "name", cls.Name)
+ self.add_column(self.name_col)
+
+ class NameColumn(ObjectTableColumn):
+ def render_text_align(self, session):
+ return "left"
+
+class JobTrackerTable(ObjectQmfTable):
+ def __init__(self, app, name, cls):
+ super(JobTrackerTable, self).__init__(app, name, cls)
+
+ self.name_col = self.NameColumn(app, "name", cls.Name)
+ self.add_column(self.name_col)
+
+ class NameColumn(ObjectTableColumn):
+ def render_text_align(self, session):
+ return "left"
\ No newline at end of file
Property changes on: branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.py
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.strings
===================================================================
--- branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.strings
(rev 0)
+++ branches/elephant/cumin/python/cumin/grid-hadoop/hadoop.strings 2012-11-16 14:31:26
UTC (rev 5544)
@@ -0,0 +1,59 @@
+[TopSystemSet.sql]
+select
+ s.id,
+ s.node_name as name,
+ c.load_average1_min as load_avg
+from sysimage s
+join sysimage_stats as c on s.stats_curr_id = c.id
+order by load_avg desc
+limit 5
+
+[TopSystemSet.count_sql]
+--
+
+[SystemStats.html]
+<table class="twocol">
+ <tbody>
+ <tr>
+ <td>
+ <h2>Memory/Load</h2>
+ {stats}
+ <br/>
+ </td>
+ <td>
+ {freemem}
+ {loadavg}
+ </td>
+ </tr>
+ </tbody>
+</table>
+<script type="text/javascript">
+ // <![CDATA[
+ var show_slot_job_url = "{slot_job_url}";
+ // ]]>
+</script>
+
+[SystemServices.html]
+<h2>Services</h2>
+<table class="PropertySet">
+ <tbody>{items}</tbody>
+</table>
+
+[SystemServices.item_html]
+<tr><th>{item_type}</th><td>{item_content}</td></tr>
+
+[SystemTagSet.html]
+<table id="{id}" class="{class} PropertySet TagPropertySet">
+ <thead>
+ <tr>
+ <td>Property</td>
+ <td>Value</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="item" title="">
+ <th>Tags:</th>
+ <td class="{class}">{tags}</td>
+ </tr>
+ </tbody>
+</table>
\ No newline at end of file
Added: branches/elephant/cumin/python/cumin/grid-hadoop/main.py
===================================================================
--- branches/elephant/cumin/python/cumin/grid-hadoop/main.py (rev
0)
+++ branches/elephant/cumin/python/cumin/grid-hadoop/main.py 2012-11-16 14:31:26 UTC (rev
5544)
@@ -0,0 +1,49 @@
+from wooly import *
+from wooly.widgets import *
+from wooly.resources import *
+
+from cumin.main import CuminModule
+from cumin.widgets import *
+from cumin.util import *
+
+from hadoop import *
+
+strings = StringCatalog(__file__)
+
+class Module(CuminModule):
+ def __init__(self, app, name):
+ super(Module, self).__init__(app, name)
+
+ self.frame = GridHadoopFrame(app, "gridhadoop")
+ self.app = app
+ self.frame.cumin_module = name
+
+ def init(self):
+ self.app.main_page.main.inventory = self.frame
+ self.app.main_page.main.add_tab(self.frame)
+
+class GridHadoopFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(GridHadoopFrame, self).__init__(app, name)
+
+ self.view = GridHadoopView(app, "view")
+ self.add_mode(self.view)
+
+ def render_title(self, session):
+ return "Grid-hadoop"
+
+class GridHadoopView(Widget):
+ def __init__(self, app, name):
+ super(GridHadoopView, self).__init__(app, name)
+
+# heading = self.Heading(app, "heading")
+# self.add_child(heading)
+
+ self.tabs = TabbedModeSet(app, "tabs")
+ self.add_child(self.tabs)
+
+ self.tabs.add_tab(NameNodeSelector(app, "namenodes"))
+ self.tabs.add_tab(DataNodeSelector(app, "datanodes"))
+ self.tabs.add_tab(TaskTrackerSelector(app, "tasktrackers"))
+ self.tabs.add_tab(JobTrackerSelector(app, "jobtrackers"))
+
\ No newline at end of file
Property changes on: branches/elephant/cumin/python/cumin/grid-hadoop/main.py
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: branches/elephant/cumin/python/cumin/grid-hadoop/main.strings
===================================================================
--- branches/elephant/cumin/python/cumin/grid-hadoop/main.strings
(rev 0)
+++ branches/elephant/cumin/python/cumin/grid-hadoop/main.strings 2012-11-16 14:31:26 UTC
(rev 5544)
@@ -0,0 +1 @@
+[thisSpaceIntentionallyLeftBlank]
\ No newline at end of file