You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ma...@apache.org on 2012/11/07 09:50:03 UTC

svn commit: r1406498 [7/8] - in /incubator/ambari/branches/AMBARI-666: ./ ambari-agent/src/main/puppet/modules/hdp/manifests/ ambari-agent/src/main/puppet/modules/hdp/manifests/lib/ ambari-agent/src/main/python/ambari_agent/ ambari-server/src/main/java...

Added: incubator/ambari/branches/AMBARI-666/contrib/addons/utils/dataServices/ganglia/generate_mapreduce_json.php
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/addons/utils/dataServices/ganglia/generate_mapreduce_json.php?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/addons/utils/dataServices/ganglia/generate_mapreduce_json.php (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/addons/utils/dataServices/ganglia/generate_mapreduce_json.php Wed Nov  7 08:49:58 2012
@@ -0,0 +1,1441 @@
+<?php
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+
+$data = array
+  (
+     'Global' => array
+     (
+        array
+        (
+           'url' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&g=load_report',
+           'title' => 'Load Report',
+           'description' => 'Key load metrics on the MapReduce JobTracker',
+           'link' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=load_report'
+        ),
+        array
+        (
+           'url' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&g=mem_report',
+           'title' => 'Memory Report',
+           'description' => 'Key memory metrics on the MapReduce JobTracker',
+           'link' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mem_report'
+        ),
+        array
+        (
+           'url' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&g=cpu_report',
+           'title' => 'CPU Report',
+           'description' => 'Key CPU metrics on the MapReduce JobTracker',
+           'link' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_report'
+        ),
+        array
+        (
+           'url' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&g=network_report',
+           'title' => 'Network I/O Report',
+           'description' => 'Key network I/O metrics on the MapReduce JobTracker',
+           'link' => 'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=network_report'
+        )
+     ),
+     'CPU' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_aidle',
+           'title' => 'CPU AIdle',
+           'description' => 'Percent of time since boot idle CPU',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_aidle'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_idle',
+           'title' => 'CPU Idle',
+           'description' => 'Percent CPU idle',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_idle'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_nice',
+           'title' => 'CPU Nice',
+           'description' => 'Percent CPU nice',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_nice'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_system',
+           'title' => 'CPU System',
+           'description' => 'Percent CPU system',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_system'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_user',
+           'title' => 'CPU User',
+           'description' => 'Percent CPU user',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_user'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=cpu_wio',
+           'title' => 'CPU Wait I/O',
+           'description' => 'Percent CPU spent waiting on I/O',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=cpu_wio'
+        )
+     ),
+     'Disk' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=disk_free',
+           'title' => 'Disk Free',
+           'description' => 'Total free disk space',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=disk_free'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=disk_total',
+           'title' => 'Disk Total',
+           'description' => 'Total available disk space',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=disk_total'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=part_max_used',
+           'title' => 'Max Disk Partition Used',
+           'description' => 'Maximum percent used for all disk partitions',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=part_max_used'
+        )
+     ),
+     'Load' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=load_fifteen',
+           'title' => 'Load Fifteen',
+           'description' => 'Fifteen minute load average',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=load_fifteen'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=load_five',
+           'title' => 'Load Five',
+           'description' => 'Five minute load average',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=load_five'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=load_one',
+           'title' => 'Load One',
+           'description' => 'One minute load average',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=load_one'
+        )
+     ),
+     'Memory' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mem_buffers',
+           'title' => 'Memory Buffers',
+           'description' => 'Amount of buffered memory',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mem_buffers'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mem_cached',
+           'title' => 'Cached Memory',
+           'description' => 'Amount of cached memory',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mem_cached'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mem_free',
+           'title' => 'Free Memory',
+           'description' => 'Amount of available memory',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mem_free'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mem_shared',
+           'title' => 'Shared Memory',
+           'description' => 'Amount of shared memory',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mem_shared'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=swap_free',
+           'title' => 'Free Swap Space',
+           'description' => 'Total amount of swap memory',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=swap_free'
+        )
+     ),
+     'Network' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=bytes_in',
+           'title' => 'Bytes Received',
+           'description' => 'Number of bytes in per second',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=bytes_in'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=bytes_out',
+           'title' => 'Bytes Sent',
+           'description' => 'Number of bytes out per second',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=bytes_out'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=pkts_in',
+           'title' => 'Packets Received',
+           'description' => 'Packets in per second',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=pkts_in'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=pkts_out',
+           'title' => 'Packets Sent',
+           'description' => 'Packets out per second',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=pkts_out'
+        )
+     ),
+     'Process' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=proc_run',
+           'title' => 'Total Running Processes',
+           'description' => 'Total number of running processes',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=proc_run'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=proc_total',
+           'title' => 'Total Processes',
+           'description' => 'Total number of processes',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=proc_total'
+        )
+     ),
+     'MapReduce Queue' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_preparing',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_preparing'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_running',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_running'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_submitted',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.jobs_submitted'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.maps_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.maps_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.maps_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.maps_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.maps_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.maps_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.maps_launched',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.maps_launched'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_launched',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reduces_launched'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reserved_map_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reserved_map_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.reserved_reduce_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.reserved_reduce_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.waiting_maps',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.waiting_maps'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.Queue.waiting_reduces',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.Queue.waiting_reduces'
+        )
+     ),
+     'JobTracker' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.blacklisted_maps',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.blacklisted_maps'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.blacklisted_reduces',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.blacklisted_reduces'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.heartbeats',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.heartbeats'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_preparing',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_preparing'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_running',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_running'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_submitted',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.jobs_submitted'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.map_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.map_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_launched',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.maps_launched'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.occupied_map_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.occupied_map_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.occupied_reduce_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.occupied_reduce_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduce_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduce_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_completed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_completed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_failed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_failed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_killed',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_killed'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_launched',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reduces_launched'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reserved_map_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reserved_map_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.reserved_reduce_slots',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.reserved_reduce_slots'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.running_maps',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.running_maps'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.running_reduces',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.running_reduces'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_blacklisted',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_blacklisted'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_decommissioned',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_decommissioned'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_graylisted',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.trackers_graylisted'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.waiting_maps',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.waiting_maps'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=mapred.jobtracker.waiting_reduces',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=mapred.jobtracker.waiting_reduces'
+        )
+     ),
+     'JVM' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.gcCount',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.gcCount'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.gcTimeMillis',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.gcTimeMillis'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.logError',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.logError'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.logFatal',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.logFatal'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.logInfo',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.logInfo'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.logWarn',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.logWarn'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.memHeapCommittedM',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.memHeapCommittedM'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.memHeapUsedM',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.memHeapUsedM'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.memNonHeapCommittedM',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.memNonHeapCommittedM'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.memNonHeapUsedM',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.memNonHeapUsedM'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsBlocked',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsBlocked'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsNew',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsNew'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsRunnable',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsRunnable'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsTerminated',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsTerminated'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsTimedWaiting',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsTimedWaiting'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=jvm.metrics.threadsWaiting',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=jvm.metrics.threadsWaiting'
+        )
+     ),
+     'MetricsSystem' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.dropped_pub_all',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.dropped_pub_all'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.num_sinks',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.num_sinks'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.num_sources',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.num_sources'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_imax_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_imax_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_imin_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_imin_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_max_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_max_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_min_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_min_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_stdev_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.publish_stdev_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.dropped',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.dropped'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.latency_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.latency_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.latency_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.latency_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.qsize',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.sink.ganglia.qsize'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_imax_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_imax_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_imin_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_imin_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_max_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_max_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_min_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_min_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_stdev_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=metricssystem.MetricsSystem.snapshot_stdev_time'
+        )
+     ),
+     'RPC' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.NumOpenConnections',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.NumOpenConnections'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.ReceivedBytes',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.ReceivedBytes'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.RpcProcessingTime_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.RpcProcessingTime_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.RpcProcessingTime_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.RpcProcessingTime_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.RpcQueueTime_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.RpcQueueTime_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.RpcQueueTime_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.RpcQueueTime_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.SentBytes',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.SentBytes'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.callQueueLen',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.callQueueLen'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthenticationFailures',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthenticationFailures'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthenticationSuccesses',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthenticationSuccesses'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthorizationFailures',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthorizationFailures'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthorizationSuccesses',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpc.rpc.rpcAuthorizationSuccesses'
+        )
+     ),
+     'RPCDetailed' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getBuildVersion_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getBuildVersion_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getBuildVersion_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getBuildVersion_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobCounters_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobCounters_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobCounters_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobCounters_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobProfile_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobProfile_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobProfile_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobProfile_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobStatus_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobStatus_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobStatus_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getJobStatus_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getProtocolVersion_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getProtocolVersion_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getNewJobId_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getNewJobId_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getNewJobId_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getNewJobId_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getQueueAdmins_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getQueueAdmins_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getQueueAdmins_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getQueueAdmins_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getStagingAreaDir_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getStagingAreaDir_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getStagingAreaDir_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getStagingAreaDir_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getSystemDir_avg_tim',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getSystemDir_avg_tim'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getSystemDir_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getSystemDir_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getTaskCompletionEvents_avg_tim',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getTaskCompletionEvents_avg_tim'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getTaskCompletionEvents_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getTaskCompletionEvents_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.heartbeat_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.heartbeat_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.heartbeat_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.heartbeat_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.submitJob_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.submitJob_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.submitJob_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.submitJob_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getProtocolVersion_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=rpcdetailed.rpcdetailed.getProtocolVersion_num_ops'
+        )
+     ),
+     'UGI' => array
+     (
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=ugi.ugi.loginFailure_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=ugi.ugi.loginFailure_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=ugi.ugi.loginFailure_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=ugi.ugi.loginFailure_num_ops'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=ugi.ugi.loginSuccess_avg_time',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=ugi.ugi.loginSuccess_avg_time'
+        ),
+        array
+        (
+           'url' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/graph.php?c=%JobTrackerClusterName%&m=ugi.ugi.loginSuccess_num_ops',
+           'title' => '',
+           'description' => '',
+           'link' =>
+           'http://%GangliaWebHostName%:%GangliaWebPort%/ganglia/?c=%JobTrackerClusterName%&m=ugi.ugi.loginSuccess_num_ops'
+        )
+     )
+  );
+
+echo json_encode($data);
+
+?>

Added: incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/README.md
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/README.md?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/README.md (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/README.md Wed Nov  7 08:49:58 2012
@@ -0,0 +1,43 @@
+ambari-log4j
+============
+
+log4j add-ons for Apache Ambari.
+
+1. MapReduce JobHistory
+
+JobHistoryAppender allows for all job statistics to be saved into a
+DataBase via JDBC.
+
+Create a postgres DB of name ambari and run the table creation commands
+from src/main/resources/ambari.schema.
+
+Build by running mvn clean package.  Copy the resulting ambari-log4j jar
+from the target directory into the hadoop lib directory for the
+JobTracker.  Also copy postgresql-9.1-902.jdbc4.jar into the hadoop
+lib directory for the JobTracker.
+
+Add the following to your log4j.properties for the JobTracker, setting
+<username> and <password> as appropriate for your postgres DB:
+
+----
+#
+# JobHistory logger 
+#
+
+ambari.jobhistory.database=jdbc:postgresql://localhost:5432/ambari
+ambari.jobhistory.driver=org.postgresql.Driver
+ambari.jobhistory.user=<username>
+ambari.jobhistory.password=<password>
+ambari.jobhistory.logger=DEBUG,JHA
+
+log4j.appender.JHA=org.apache.ambari.log4j.hadoop.mapreduce.jobhistory.JobHistoryAppender
+log4j.appender.JHA.database=${ambari.jobhistory.database}
+log4j.appender.JHA.driver=${ambari.jobhistory.driver}
+log4j.appender.JHA.user=${ambari.jobhistory.user}
+log4j.appender.JHA.password=${ambari.jobhistory.password}
+
+log4j.logger.org.apache.hadoop.mapred.JobHistory$JobHistoryLogger=${ambari.jobhistory.logger}
+log4j.additivity.org.apache.hadoop.mapred.JobHistory$JobHistoryLogger=true
+
+----
+

Added: incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/pom.xml?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/pom.xml (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/pom.xml Wed Nov  7 08:49:58 2012
@@ -0,0 +1,168 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.ambari</groupId>
+  <artifactId>ambari-log4j</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0</version>
+  <name>ambari-log4j</name>
+  <url>http://maven.apache.org</url>
+  <repositories>
+    <repository>
+      <id>hdp.internal</id>
+      <url>http://s3.amazonaws.com/repo.hortonworks.com/release</url>
+    </repository>
+  </repositories>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-tools</artifactId>
+      <version>1.1.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-core</artifactId>
+      <version>1.1.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.15</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.sun.jdmk</groupId>
+          <artifactId>jmxtools</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jmx</groupId>
+          <artifactId>jmxri</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.mail</groupId>
+          <artifactId>mail</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.jms</groupId>
+          <artifactId>jmx</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.jms</groupId>
+          <artifactId>jms</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging-api</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+    	<groupId>postgresql</groupId>
+    	<artifactId>postgresql</artifactId>
+    	<version>9.1-901-1.jdbc4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-mapper-asl</artifactId>
+      <version>1.9.2</version>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.jersey</groupId>
+      <artifactId>jersey-json</artifactId>
+      <version>1.13</version>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.jersey</groupId>
+      <artifactId>jersey-core</artifactId>
+      <version>1.13</version>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.jersey</groupId>
+      <artifactId>jersey-servlet</artifactId>
+      <version>1.13</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.2.7</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>jetty-maven-plugin</artifactId>
+        <version>8.1.5.v20120716</version>
+        <configuration>
+          <scanIntervalSeconds>5</scanIntervalSeconds>
+          <stopPort>9999</stopPort>
+          <connectors>
+            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
+              <port>1984</port>
+              <maxIdleTime>60000</maxIdleTime>
+            </connector>
+          </connectors>
+        </configuration>
+      </plugin>
+
+        <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>rpm-maven-plugin</artifactId>
+            <version>2.0.1</version>
+            <executions>
+                <execution>
+                    <phase>none</phase>
+                    <goals>
+                        <goal>rpm</goal>
+                    </goals>
+                </execution>
+            </executions>
+            <configuration>
+                <copyright>2012, Apache Software Foundation</copyright>
+                <group>Development</group>
+                <description>Maven Recipe: RPM Package.</description>
+                <mappings>
+                    <mapping>
+                        <directory>/usr/lib/hadoop/lib</directory>
+                        <sources>
+                            <source>
+                                <location>target/ambari-log4j-${project.version}.jar</location>
+                            </source>
+                        </sources>
+
+                    </mapping>
+                    <mapping>
+                        <directory>/usr/lib/hadoop/lib</directory>
+                        <filemode>750</filemode>
+                        <dependency>
+                            <includes>
+                                <include>postgresql:postgresql</include>
+                            </includes>
+                        </dependency>
+                    </mapping>
+
+                </mappings>
+            </configuration>
+        </plugin>
+
+    </plugins>
+  </build>
+
+</project>

Added: incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/DBConnector.java Wed Nov  7 08:49:58 2012
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.eventdb.db;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.ambari.eventdb.model.WorkflowContext;
+import org.apache.ambari.eventdb.model.Jobs.JobDBEntry;
+import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry;
+
+public interface DBConnector {
+  public void submitJob(JobDBEntry j, WorkflowContext context) throws IOException;
+  
+  public void updateJob(JobDBEntry j) throws IOException;
+  
+  public List<WorkflowDBEntry> fetchWorkflows() throws IOException;
+  
+  public List<JobDBEntry> fetchJobDetails(String workflowID) throws IOException;
+  
+  public void close();
+}

Added: incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/db/PostgresConnector.java Wed Nov  7 08:49:58 2012
@@ -0,0 +1,192 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.eventdb.db;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ambari.eventdb.model.WorkflowContext;
+import org.apache.ambari.eventdb.model.Jobs.JobDBEntry;
+import org.apache.ambari.eventdb.model.Jobs.JobDBEntry.JobFields;
+import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry;
+import org.apache.ambari.eventdb.model.Workflows.WorkflowDBEntry.WorkflowFields;
+import org.apache.commons.lang.NotImplementedException;
+import org.codehaus.jackson.map.ObjectMapper;
+
+public class PostgresConnector implements DBConnector {
+  private static final String WORKFLOW_TABLE_NAME = "workflow";
+  private static final String JOB_TABLE_NAME = "job";
+  
+  private static final ObjectMapper jsonMapper = new ObjectMapper();
+  
+  private Connection db;
+  
+  public static enum Statements {
+    SJ_INSERT_JOB_PS(""),
+    SJ_CHECK_WORKFLOW_PS(""),
+    SJ_INSERT_WORKFLOW_PS(""),
+    UJ_UPDATE_JOB_PS(""),
+    UJ_UPDATE_WORKFLOW_PS(""),
+    FW_PS("SELECT " + WorkflowDBEntry.WORKFLOW_FIELDS + " FROM " + WORKFLOW_TABLE_NAME),
+    FJD_PS("SELECT " + JobDBEntry.JOB_FIELDS + " FROM " + JOB_TABLE_NAME + " WHERE " + JobFields.WORKFLOWID.toString() + " = ?");
+    
+    private String statementString;
+    
+    Statements(String statementString) {
+      this.statementString = statementString;
+    }
+    
+    public String getStatementString() {
+      return statementString;
+    }
+  }
+  
+  private Map<Statements,PreparedStatement> preparedStatements = new EnumMap<Statements,PreparedStatement>(Statements.class);
+  
+  public PostgresConnector(String hostname, String dbname, String username, String password) throws IOException {
+    String url = "jdbc:postgresql://" + hostname + "/" + dbname;
+    try {
+      Class.forName("org.postgresql.Driver");
+      db = DriverManager.getConnection(url, username, password);
+    } catch (ClassNotFoundException e) {
+      db = null;
+      throw new IOException(e);
+    } catch (SQLException e) {
+      db = null;
+      throw new IOException(e);
+    }
+  }
+  
+  @Override
+  public void submitJob(JobDBEntry j, WorkflowContext context) throws IOException {
+    PreparedStatement insertJobPS = getPS(Statements.SJ_INSERT_JOB_PS);
+    PreparedStatement checkWorkflowPS = getPS(Statements.SJ_CHECK_WORKFLOW_PS);
+    PreparedStatement insertWorkflowPS = getPS(Statements.SJ_INSERT_WORKFLOW_PS);
+    throw new NotImplementedException();
+  }
+  
+  @Override
+  public void updateJob(JobDBEntry j) throws IOException {
+    PreparedStatement updateJobPS = getPS(Statements.UJ_UPDATE_JOB_PS);
+    PreparedStatement updateWorkflowPS = getPS(Statements.UJ_UPDATE_WORKFLOW_PS);
+    throw new NotImplementedException();
+  }
+  
+  @Override
+  public List<WorkflowDBEntry> fetchWorkflows() throws IOException {
+    PreparedStatement ps = getPS(Statements.FW_PS);
+    List<WorkflowDBEntry> workflows = new ArrayList<WorkflowDBEntry>();
+    try {
+      ResultSet rs = ps.executeQuery();
+      while (rs.next()) {
+        WorkflowDBEntry w = new WorkflowDBEntry();
+        w.setWorkflowId(WorkflowFields.WORKFLOWID.getString(rs));
+        w.setWorkflowName(WorkflowFields.WORKFLOWNAME.getString(rs));
+        w.setUserName(WorkflowFields.USERNAME.getString(rs));
+        w.setStartTime(WorkflowFields.STARTTIME.getLong(rs));
+        long updateTime = WorkflowFields.LASTUPDATETIME.getLong(rs);
+        if (updateTime > w.getStartTime())
+          w.setElapsedTime(updateTime - w.getStartTime());
+        else
+          w.setElapsedTime(0);
+        w.setNumJobsTotal(WorkflowFields.NUMJOBSTOTAL.getInt(rs));
+        w.setNumJobsCompleted(WorkflowFields.NUMJOBSCOMPLETED.getInt(rs));
+        w.setWorkflowContext(jsonMapper.readValue(WorkflowFields.WORKFLOWCONTEXT.getString(rs), WorkflowContext.class));
+        workflows.add(w);
+      }
+      rs.close();
+    } catch (SQLException e) {
+      throw new IOException(e);
+    }
+    return workflows;
+  }
+  
+  @Override
+  public List<JobDBEntry> fetchJobDetails(String workflowId) throws IOException {
+    PreparedStatement ps = getPS(Statements.FJD_PS);
+    List<JobDBEntry> jobs = new ArrayList<JobDBEntry>();
+    try {
+      ps.setString(1, workflowId);
+      ResultSet rs = ps.executeQuery();
+      while (rs.next()) {
+        JobDBEntry j = new JobDBEntry();
+        j.setConfPath(JobFields.CONFPATH.getString(rs));
+        j.setSubmitTime(JobFields.SUBMITTIME.getLong(rs));
+        long finishTime = JobFields.FINISHTIME.getLong(rs);
+        if (finishTime > j.getSubmitTime())
+          j.setElapsedTime(finishTime - j.getSubmitTime());
+        else
+          j.setElapsedTime(0);
+        j.setInputBytes(JobFields.INPUTBYTES.getLong(rs));
+        j.setJobId(JobFields.JOBID.getString(rs));
+        j.setJobName(JobFields.JOBNAME.getString(rs));
+        j.setMaps(JobFields.MAPS.getInt(rs));
+        j.setOutputBytes(JobFields.OUTPUTBYTES.getLong(rs));
+        j.setReduces(JobFields.REDUCES.getInt(rs));
+        j.setStatus(JobFields.STATUS.getString(rs));
+        j.setUserName(JobFields.USERNAME.getString(rs));
+        j.setWorkflowEntityName(JobFields.WORKFLOWENTITYNAME.getString(rs));
+        j.setWorkflowId(JobFields.WORKFLOWID.getString(rs));
+        jobs.add(j);
+      }
+      rs.close();
+    } catch (SQLException e) {
+      throw new IOException(e);
+    }
+    return jobs;
+  }
+  
+  private PreparedStatement getPS(Statements statement) throws IOException {
+    if (db == null)
+      throw new IOException("postgres db not initialized");
+    
+    synchronized (preparedStatements) {
+      if (!preparedStatements.containsKey(statement)) {
+        try {
+          preparedStatements.put(statement, db.prepareStatement(statement.getStatementString()));
+        } catch (SQLException e) {
+          throw new IOException(e);
+        }
+      }
+    }
+    
+    return preparedStatements.get(statement);
+  }
+  
+  @Override
+  public void close() {
+    if (db != null) {
+      try {
+        db.close();
+      } catch (SQLException e) {}
+      db = null;
+    }
+  }
+  
+  @Override
+  protected void finalize() throws Throwable {
+    close();
+  }
+}

Added: incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/model/Jobs.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/model/Jobs.java?rev=1406498&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/model/Jobs.java (added)
+++ incubator/ambari/branches/AMBARI-666/contrib/ambari-log4j/src/main/java/org/apache/ambari/eventdb/model/Jobs.java Wed Nov  7 08:49:58 2012
@@ -0,0 +1,206 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.eventdb.model;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.commons.lang.StringUtils;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Jobs {
+  List<JobDBEntry> jobs;
+  
+  public static class JobDBEntry {
+    public static enum JobFields {
+      JOBID,
+      JOBNAME,
+      STATUS,
+      USERNAME,
+      SUBMITTIME,
+      FINISHTIME,
+      MAPS,
+      REDUCES,
+      INPUTBYTES,
+      OUTPUTBYTES,
+      CONFPATH,
+      WORKFLOWID,
+      WORKFLOWENTITYNAME;
+      
+      public String getString(ResultSet rs) throws SQLException {
+        return rs.getString(this.toString());
+      }
+      
+      public int getInt(ResultSet rs) throws SQLException {
+        return rs.getInt(this.toString());
+      }
+      
+      public long getLong(ResultSet rs) throws SQLException {
+        return rs.getLong(this.toString());
+      }
+      
+      public static String join() {
+        String[] tmp = new String[JobFields.values().length];
+        for (int i = 0; i < tmp.length; i++)
+          tmp[i] = JobFields.values()[i].toString();
+        return StringUtils.join(tmp, ",");
+      }
+    }
+    
+    @XmlTransient
+    public static String JOB_FIELDS = JobFields.join();
+    
+    private String jobId;
+    private String jobName;
+    private String status;
+    private String userName;
+    private long submitTime;
+    private long elapsedTime;
+    private int maps;
+    private int reduces;
+    private long inputBytes;
+    private long outputBytes;
+    private String confPath;
+    private String workflowId;
+    private String workflowEntityName;
+    
+    public JobDBEntry() {
+      /* Required by JAXB. */
+    }
+    
+    public String getJobId() {
+      return jobId;
+    }
+    
+    public String getJobName() {
+      return jobName;
+    }
+    
+    public String getStatus() {
+      return status;
+    }
+    
+    public String getUserName() {
+      return userName;
+    }
+    
+    public long getSubmitTime() {
+      return submitTime;
+    }
+    
+    public long getElapsedTime() {
+      return elapsedTime;
+    }
+    
+    public int getMaps() {
+      return maps;
+    }
+    
+    public int getReduces() {
+      return reduces;
+    }
+    
+    public long getInputBytes() {
+      return inputBytes;
+    }
+    
+    public long getOutputBytes() {
+      return outputBytes;
+    }
+    
+    public String getConfPath() {
+      return confPath;
+    }
+    
+    public String getWorkflowId() {
+      return workflowId;
+    }
+    
+    public String getWorkflowEntityName() {
+      return workflowEntityName;
+    }
+    
+    public void setJobId(String jobId) {
+      this.jobId = jobId;
+    }
+    
+    public void setJobName(String jobName) {
+      this.jobName = jobName;
+    }
+    
+    public void setStatus(String status) {
+      this.status = status;
+    }
+    
+    public void setUserName(String userName) {
+      this.userName = userName;
+    }
+    
+    public void setSubmitTime(long submitTime) {
+      this.submitTime = submitTime;
+    }
+    
+    public void setElapsedTime(long elapsedTime) {
+      this.elapsedTime = elapsedTime;
+    }
+    
+    public void setMaps(int maps) {
+      this.maps = maps;
+    }
+    
+    public void setReduces(int reduces) {
+      this.reduces = reduces;
+    }
+    
+    public void setInputBytes(long inputBytes) {
+      this.inputBytes = inputBytes;
+    }
+    
+    public void setOutputBytes(long outputBytes) {
+      this.outputBytes = outputBytes;
+    }
+    
+    public void setConfPath(String confPath) {
+      this.confPath = confPath;
+    }
+    
+    public void setWorkflowId(String workflowId) {
+      this.workflowId = workflowId;
+    }
+    
+    public void setWorkflowEntityName(String workflowEntityName) {
+      this.workflowEntityName = workflowEntityName;
+    }
+  }
+  
+  public Jobs() {}
+  
+  public List<JobDBEntry> getJobs() {
+    return jobs;
+  }
+  
+  public void setJobs(List<JobDBEntry> jobs) {
+    this.jobs = jobs;
+  }
+}