Package Products :: Package ZenModel :: Module Monitor |
[hide private]
[frames] | no frames]

# Source Code for Module Products.ZenModel.Monitor

      1  ###########################################################################
      2  #
      3  # This program is part of Zenoss Core, an open source monitoring platform.
      4  # Copyright (C) 2007, Zenoss Inc.
      5  #
      6  # This program is free software; you can redistribute it and/or modify it
      7  # under the terms of the GNU General Public License version 2 or (at your
      8  # option) any later version as published by the Free Software Foundation.
      9  #
     10  # For complete information please visit: http://www.zenoss.com/oss/
     11  #
     12  ###########################################################################
     13
     14  __doc__="""Monitor
     15
     16  Base class for all Monitor or Monitor Configuration Classes.  This is
     17  an abstract class that is used for the devices to monitors
     18  relationship which says which monitors monitor which devices.
     19
     20  $Id: Monitor.py,v 1.5 2004/04/14 22:11:48 edahl Exp $"""
     21
     22  __version__ = "$Revision: 1.5 $"[11:-2]
     23
     24  from Globals import InitializeClass
     25
     26  from ZenModelRM import ZenModelRM
     27  from DeviceManagerBase import DeviceManagerBase
     28  from RRDView import RRDView
     29  from Products.ZenWidgets import messaging
     30
     31 -class Monitor(ZenModelRM, DeviceManagerBase, RRDView):
     32      meta_type = 'Monitor'
     33
     34 -    def snmpIgnore(self):
     35          return True
     36
     37 -    def breadCrumbs(self, target='dmd'):
     38          from Products.ZenUtils.Utils import unused
     39          unused(target)
     40          bc = ZenModelRM.breadCrumbs(self)
     41          return [bc[0],bc[-1]]
     42
     43 -    def deviceMoveTargets(self):
     44          """see IManageDevice"""
     45          mroot = self.getDmdRoot("Monitors")._getOb(self.monitorRootName)
     46          return filter(lambda x: x != self.id, mroot.objectIds())
     47
     48
     49 -    def getDeviceMoveTarget(self, moveTargetName):
     50          """see IManageDevice"""
     51          mroot = self.getDmdRoot("Monitors")._getOb(self.monitorRootName)
     52          return mroot._getOb(moveTargetName)
     53
     54
     55 -    def getOrganizerName(self):
     56          """Return the DMD path of an Organizer without its dmdSubRel names."""
     57          return self.id
     58
     59 -    def setPerformanceMonitor(self, performanceMonitor=None, deviceNames=None,
     60                                REQUEST=None):
     61          """ Provide a method to set performance monitor from any organizer """
     62          if not performanceMonitor:
     63              if REQUEST:
     64                  messaging.IMessageSender(self).sendToBrowser(
     65                      'Error',
     66                      'No monitor was selected.',
     67                      priority=messaging.WARNING
     68                  )
     69              return self.callZenScreen(REQUEST)
     70          if deviceNames is None:
     71              if REQUEST:
     72                  messaging.IMessageSender(self).sendToBrowser(
     73                      'Error',
     74                      'No devices were selected.',
     75                      priority=messaging.WARNING
     76                  )
     77              return self.callZenScreen(REQUEST)
     78          for devname in deviceNames:
     79              dev = self.devices._getOb(devname)
     80              dev.setPerformanceMonitor(performanceMonitor)
     81          if REQUEST:
     82              messaging.IMessageSender(self).sendToBrowser(
     83                  'Monitor Set',
     84                  'Performance monitor was set to %s.' % performanceMonitor
     85              )
     86              if REQUEST.has_key('oneKeyValueSoInstanceIsntEmptyAndEvalToFalse'):
     87                  return REQUEST['message']
     88              else:
     89                  return self.callZenScreen(REQUEST)
     90
     91 -    def rrdPath(self):
     92          return 'Daemons/%s' % self.id
     93
     94 -    def getRRDContextData(self, context):
     95          context['here'] = self
     96          context['name'] = self.id
     97          return context
     98
     99 -    def getGraphDefUrl(self, graph, drange=None, template=None):
    100          """resolve template and graph names to objects
    101          and pass to graph performance"""
    102          if not drange: drange = self.defaultDateRange
    103          templates = self.getRRDTemplates()
    104          if template:
    105              templates = [template]
    106          if isinstance(graph, basestring):
    107              for t in templates:
    108                  if hasattr(t.graphDefs, graph):
    109                      template = t
    110                      graph = getattr(t.graphDefs, graph)
    111                      break
    112          targetpath = self.rrdPath()
    113          objpaq = self.primaryAq()
    114          return self.performanceGraphUrl(objpaq, targetpath, template, graph, drange)
    115
    116
    117  InitializeClass(Monitor)
    118