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

# Source Code for Package Products.ZenModel

      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  __doc__="""__init__
     14
     15  Initialize the Confmon Product
     16
     17  Products must follow the following standard
     18  The name of the module (file) and the name of the product class inside
     19  the file must be the same.
     20
     21  If there is a ZMI add screen it must be called "add" + class name (ie addDevice)and it must be defined at the module level.
     22
     23  the class factory must be a function at the module level called
     24  manage_add + class name (ie manage_addDevice)
     25
     26  If there is an icon for the product it should be called class name + _icon.gif
     27  """
     28
     29  import os
     30  import logging
     31  log = logging.getLogger("zenmodel")
     32
     33  if 0:
     34      __path__ = None                     # keep pyflakes quiet
     35
     36  from Products.CMFCore.DirectoryView import registerDirectory
     37
     38  confmon_globals = globals()
     39
     40  productNames = (
     41      'AdministrativeRole',
     42      'AdministrativeRoleable',
     43      'AreaGraphPoint',
     44      'BasicDataSource',
     45      'BasicDeviceLoader',
     46      'BatchDeviceLoader',
     47      'BuiltInDS',
     48      'CPU',
     49      'CdefGraphPoint',
     50      'CiscoLoader',
     51      'Classifier',
     52      'ClassifierEntry',
     53      'Collection',
     54      'CollectionItem',
     55      'Commandable',
     56      'CommentGraphPoint',
     57      'ComplexGraphPoint',
     58      'ConfigurationError',
     59      'ConfmonPropManager',
     60      'CustomDeviceReportClass',
     61      'DataPointGraphPoint',
     62      'DataRoot',
     63      'DefGraphPoint',
     64      'Device',
     65      'DeviceClass',
     66      'DeviceComponent',
     67      'DeviceGroup',
     68      'DeviceHW',
     69      'DeviceManagerBase',
     70      'DeviceOrganizer',
     71      'DeviceReport',
     72      'DeviceReportClass',
     73      'DeviceResultInt',
     74      'DmdBuilder',
     75      'EventView',
     76      'Exceptions',
     77      'ExpansionCard',
     78      'Fan',
     79      'FileSystem',
     80      'GprintGraphPoint',
     81      'GraphDefinition',
     82      'GraphGroup',
     83      'GraphPoint',
     84      'GraphReport',
     85      'GraphReportClass',
     86      'GraphReportElement',
     87      'HWComponent',
     88      'HardDisk',
     89      'Hardware',
     90      'HardwareClass',
     91      'HruleGraphPoint',
     92      'IpAddress',
     93      'IpInterface',
     94      'IpNetwork',
     95      'IpRouteEntry',
     96      'IpService',
     97      'IpServiceClass',
     98      'IpServiceLoader',
     99      'LineGraphPoint',
    100      'Link',
    101      'LinkManager',
    102      'Linkable',
    103      'Location',
    104      'Lockable',
    105      'MEProduct',
    106      'MaintenanceWindow',
    107      'MaintenanceWindowable',
    108      'ManagedEntity',
    109      'Manufacturer',
    110      'ManufacturerRoot',
    111      'MibBase',
    112      'MibModule',
    113      'MibNode',
    114      'MibNotification',
    115      'MibOrganizer',
    116      'MinMaxThreshold',
    117      'Monitor',
    118      'MonitorClass',
    119      'MultiGraphReport',
    120      'MultiGraphReportClass',
    121      'OSComponent',
    122      'OSProcess',
    123      'OSProcessClass',
    124      'OSProcessOrganizer',
    125      'OperatingSystem',
    126      'Organizer',
    127      'PerformanceConf',
    128      'PerformanceView',
    129      'PingDataSource',
    130      'PowerSupply',
    131      'PrintGraphPoint',
    132      'ProductClass',
    133      'RRDDataPoint',
    134      'RRDDataSource',
    135      'RRDGraph',
    136      'RRDTemplate',
    137      'RRDThreshold',
    138      'RRDView',
    139      'Report',
    140      'ReportClass',
    141      'Service',
    142      'ServiceClass',
    143      'ServiceOrganizer',
    144      'ShiftGraphPoint',
    145      'SiteError',
    146      'Software',
    147      'SoftwareClass',
    148      'StatusColor',
    149      'System',
    150      'TemperatureSensor',
    151      'TemplateContainer',
    152      'ThresholdClass',
    153      'ThresholdGraphPoint',
    154      'ThresholdInstance',
    155      'TickGraphPoint',
    156      'UserCommand',
    157      'UserSettings',
    158      'VdefGraphPoint',
    159      'VruleGraphPoint',
    160      'WinService',
    161      'XmlDataLoader',
    162      'ZDeviceLoader',
    163      'ZVersion',
    164      'ZenDate',
    165      'ZenMenu',
    166      'ZenMenuItem',
    167      'ZenMenuable',
    168      'ZenModelBase',
    169      'ZenModelItem',
    170      'ZenModelRM',
    171      'ZenPack',
    172      'ZenPackLoader',
    173      'ZenPackManager',
    174      'ZenPackPersistence',
    175      'ZenPackable',
    176      'ZenPacker',
    177      'ZenStatus',
    178      'ZenossInfo',
    179      'ZenossSecurity',
    180      'ZentinelPortal',
    181  )
    182
    183  # Make the skins available as DirectoryViews.
    184  registerDirectory('skins', globals())
    185  registerDirectory('help', globals())
    186
    187
    188  confmonModules = []
    189 -def loadConfmonModules():
    190      # import all modules
    191      for product in productNames:
    192          mod = __import__(product, globals(), locals(), [])
    193          confmonModules.append(mod)
    194
    195
    196 -def initialize(registrar):
    197      contentClasses = ()
    198      contentConstructors = ()
    199
    200      registrar.registerHelp()
    201      registrar.registerHelpTitle('Zentinel Portal Help')
    202
    203      if not confmonModules: loadConfmonModules()
    204      # register products with zope
    205      for module in confmonModules:
    206          args = []
    207          kwargs = {}
    208          className = module.__name__.split('.')[-1]
    209          addDtmlName = "add%s" % className
    210          factoryName = "manage_add%s" % className
    211          iconName = "www/%s_icon.gif" % className
    212          confclass = getattr(module, className, None)
    213          #contentClasses.append(confclass)
    214          if not confclass: continue
    215          args.append(confclass)
    216          constructors = []
    217          addDtml = getattr(module, addDtmlName, None)
    218          if addDtml: constructors.append(addDtml)
    219          factory = getattr(module, factoryName, None)
    220          if factory: constructors.append(factory)
    221          if not constructors: continue
    222          kwargs['constructors'] = constructors
    223          kwargs['permission'] = "Add DMD Objects"
    224          if os.path.exists(os.path.join(__path__[0], iconName)):
    225              kwargs['icon'] = iconName
    226          log.debug("Register Class=%s",className)
    227          log.debug("kwargs=%s", constructors)
    228          apply(registrar.registerClass, args, kwargs)
    229