You can subscribe to this list here.
2007 |
Jan
|
Feb
(65) |
Mar
(276) |
Apr
(544) |
May
(638) |
Jun
(225) |
Jul
(204) |
Aug
(294) |
Sep
(532) |
Oct
(506) |
Nov
(324) |
Dec
(359) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(208) |
Feb
(225) |
Mar
(248) |
Apr
(388) |
May
(222) |
Jun
(47) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@ze...> - 2008-04-29 19:02:27
|
Author: jstevens Date: 2008-04-29 15:02:35 -0400 (Tue, 29 Apr 2008) New Revision: 9137 Modified: trunk/Products/ZenUtils/ZenBackup.py trunk/Products/ZenUtils/ZenBackupBase.py trunk/Products/ZenUtils/ZenRestore.py Log: refs #3071 Modified: trunk/Products/ZenUtils/ZenBackup.py =================================================================== --- trunk/Products/ZenUtils/ZenBackup.py 2008-04-29 17:44:47 UTC (rev 9136) +++ trunk/Products/ZenUtils/ZenBackup.py 2008-04-29 19:02:35 UTC (rev 9137) @@ -22,6 +22,7 @@ from ZCmdBase import ZCmdBase import sys import os +import os.path from datetime import date import ConfigParser import commands @@ -39,7 +40,10 @@ def isZeoUp(self): ''' Returns True is zeo appears to be running, false otherwise. ''' - cmd = '%s/bin/zeoup.py -p 8100' % self.zenhome + # zeoup.py should live in either $ZOPEHOME/lib/bin/ (for the + # appliance) or in $ZENHOME/bin (other installs.) + zeoup = self.findBin('zeoup.py') + cmd = '%s %s -p 8100' % (zenPath('bin', 'python'), zeoup) output = commands.getoutput(cmd) return output.startswith('Elapsed time:') @@ -75,7 +79,7 @@ def getName(index=0): return 'zenbackup_%s%s.tgz' % (date.today().strftime('%Y%m%d'), (index and '_%s' % index) or '') - backupDir = os.path.join(self.zenhome, 'backups') + backupDir = zenPath('backups') if not os.path.exists(backupDir): os.mkdir(backupDir, 0750) for i in range(MAX_UNIQUE_NAME_ATTEMPTS): @@ -203,16 +207,16 @@ self.msg('Backing up zeo database.') repozoDir = os.path.join(tempDir, 'repozo') os.mkdir(repozoDir, 0750) - cmd = ('%s --backup --full ' % - self.getRepozoPath() + - '--repository %s --file %s/var/Data.fs' % - (repozoDir, self.zenhome)) + cmd = ('%s %s --backup --full ' % + (zenPath('bin', 'python'), self.findBin('repozo.py')) + + '--repository %s --file %s' % + (repozoDir, zenPath('var', 'Data.fs'))) if os.system(cmd): return -1 # /etc to backup dir (except for sockets) self.msg('Backing up config files.') etcTar = tarfile.open(os.path.join(tempDir, 'etc.tar'), 'w') - etcTar.add(os.path.join(self.zenhome, 'etc'), 'etc') + etcTar.add(zenPath('etc'), 'etc') etcTar.close() # /perf to backup dir Modified: trunk/Products/ZenUtils/ZenBackupBase.py =================================================================== --- trunk/Products/ZenUtils/ZenBackupBase.py 2008-04-29 17:44:47 UTC (rev 9136) +++ trunk/Products/ZenUtils/ZenBackupBase.py 2008-04-29 19:02:35 UTC (rev 9137) @@ -21,6 +21,7 @@ import os import tempfile from CmdBase import CmdBase +from Products.ZenUtils.Utils import zenPath BACKUP_DIR = 'zenbackup' @@ -39,11 +40,7 @@ def __init__(self, noopts=0): CmdBase.__init__(self, noopts) - from Utils import zenPath - self.zenhome = zenPath() - self.zopehome = os.getenv('ZOPEHOME') - def msg(self, msg): ''' If --verbose then send msg to stdout ''' @@ -71,7 +68,7 @@ ''' if self.options.dbpass == None: return '' - return '-p"%s"' % self.options.dbpass + return '--password="%s"' % self.options.dbpass def getTempDir(self): @@ -83,14 +80,21 @@ else: dir = tempfile.mkdtemp() return dir - - - def getRepozoPath(self): - ''' Return path to repozo.py - This is usually $ZENHOME/bin/repozo.py, but on the appliance it is - $ZOPEHOME/bin/repozo.py - ''' - path = os.path.join(self.zenhome, 'bin', 'repozo.py') - if not os.path.isfile(path): - path = os.path.join(self.zopehome, 'bin', 'repozo.py') - return path + + + def findBin(self, name, failIfNotFound=True): + """ + Find the file of the given name in either $ZENHOME/bin or in + $ZOPEHOME/bin. Return the path to the file if found. + """ + zopeHome = os.getenv('ZOPEHOME') + path = zenPath('bin', name) + if os.path.isfile(path): + return path + if zopeHome: + path = os.path.join(zopeHome, 'bin', name) + if os.path.isfile(path): + return path + if failIfNotFound: + raise Exception('Could not find %s' % name) + return '' Modified: trunk/Products/ZenUtils/ZenRestore.py =================================================================== --- trunk/Products/ZenUtils/ZenRestore.py 2008-04-29 17:44:47 UTC (rev 9136) +++ trunk/Products/ZenUtils/ZenRestore.py 2008-04-29 19:02:35 UTC (rev 9137) @@ -23,6 +23,7 @@ import os import os.path import ConfigParser +from Products.ZenUtils.Utils import zenPath from ZenBackupBase import * @@ -147,38 +148,39 @@ # If there is not a Data.fs then create an empty one # Maybe should read file location/name from zeo.conf # but we're going to assume the standard location for now. - if not os.path.isfile(os.path.join(self.zenhome, 'var', 'Data.fs')): + if not os.path.isfile(zenPath('var', 'Data.fs')): self.msg('There does not appear to be a zeo database.' ' Starting zeo to create one.') - os.system(os.path.join(self.zenhome, 'bin', 'zeoctl start > /dev/null')) - os.system(os.path.join(self.zenhome, 'bin', 'zeoctl stop > /dev/null')) + os.system(zenPath('bin', 'zeoctl') + 'start > /dev/null') + os.system(zenPath('bin', 'zeoctl') + 'stop > /dev/null') # Restore zopedb self.msg('Restoring the zeo database.') repozoDir = os.path.join(tempDir, 'repozo') - cmd ='%s --recover --repository %s --output %s' % ( - self.getRepozoPath(), + cmd ='%s %s --recover --repository %s --output %s' % ( + zenPath('bin', 'python'), + self.findBin('repozo.py'), repozoDir, - os.path.join(self.zenhome, 'var', 'Data.fs')) + zenPath('var', 'Data.fs')) if os.system(cmd): return -1 # Copy etc files self.msg('Restoring config files.') - cmd = 'rm -rf %s' % os.path.join(self.zenhome, 'etc') + cmd = 'rm -rf %s' % zenPath('etc') if os.system(cmd): return -1 cmd = 'tar Cxf %s %s' % ( - self.zenhome, + zenPath(), os.path.join(tempDir, 'etc.tar')) if os.system(cmd): return -1 # Copy perf files - cmd = 'rm -rf %s' % os.path.join(self.zenhome, 'perf') + cmd = 'rm -rf %s' % os.path.join(zenPath(), 'perf') if os.system(cmd): return -1 tempPerf = os.path.join(tempDir, 'perf.tar') if os.path.isfile(tempPerf): self.msg('Restoring performance data.') cmd = 'tar Cxf %s %s' % ( - self.zenhome, + zenPath(), os.path.join(tempDir, 'perf.tar')) if os.system(cmd): return -1 else: |
From: <sv...@ze...> - 2008-04-29 17:44:39
|
Author: jstevens Date: 2008-04-29 13:44:47 -0400 (Tue, 29 Apr 2008) New Revision: 9136 Modified: trunk/Products/ZenModel/skins/zenmodel/viewZenPacks.pt Log: * Changed message on ZenPacks page when a ZenPack appears to be broken. Now tells user a zope restart may be necessary. Modified: trunk/Products/ZenModel/skins/zenmodel/viewZenPacks.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewZenPacks.pt 2008-04-29 17:38:22 UTC (rev 9135) +++ trunk/Products/ZenModel/skins/zenmodel/viewZenPacks.pt 2008-04-29 17:44:47 UTC (rev 9136) @@ -55,7 +55,7 @@ <tal:dummy tal:replace="python:here.dmd.ZenPackManager.getBrokenPackName(pack)" /> </td> <td class="tablevalue" colspan="6"> - This pack is missing or broken. Please reinstall. + This pack is missing or broken. You may need to restart Zope. </td> </tal:block> </tal:block> |
From: <sv...@ze...> - 2008-04-29 17:38:14
|
Author: ian Date: 2008-04-29 13:38:22 -0400 (Tue, 29 Apr 2008) New Revision: 9135 Modified: trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml Log: * Fixes to DigMonitor Modified: trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml 2008-04-29 17:34:28 UTC (rev 9134) +++ trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml 2008-04-29 17:38:22 UTC (rev 9135) @@ -38,7 +38,7 @@ 60 </property> <tomanycont id='datapoints'> -<object id='responsetime' module='Products.ZenModel.RRDDataPoint' class='RRDDataPoint'> +<object id='time' module='Products.ZenModel.RRDDataPoint' class='RRDDataPoint'> <property select_variable="rrdtypes" type="selection" id="rrdtype" mode="w" > GAUGE </property> @@ -52,7 +52,7 @@ <tomanycont id='thresholds'> <object id='BrokenDNS' module='Products.ZenModel.MinMaxThreshold' class='MinMaxThreshold'> <property type="lines" id="dsnames" mode="w" > -['dig_responsetime'] +['dig_time'] </property> <property type="boolean" id="enabled" mode="w" > True @@ -72,7 +72,7 @@ </object> <object id='SlowDNS' module='Products.ZenModel.MinMaxThreshold' class='MinMaxThreshold'> <property type="lines" id="dsnames" mode="w" > -['dig_responsetime'] +['dig_time'] </property> <property type="boolean" id="enabled" mode="w" > True @@ -100,7 +100,7 @@ 500 </property> <property type="string" id="units" mode="w" > -ms +s </property> <property type="boolean" id="log" mode="w" > False @@ -118,7 +118,7 @@ True </property> <tomanycont id='graphPoints'> -<object id='responsetime' module='Products.ZenModel.DataPointGraphPoint' class='DataPointGraphPoint'> +<object id='time' module='Products.ZenModel.DataPointGraphPoint' class='DataPointGraphPoint'> <property select_variable="lineTypes" type="selection" id="lineType" mode="w" > LINE </property> @@ -138,7 +138,7 @@ -1 </property> <property type="string" id="dpName" mode="w" > -dig_responsetime +dig_time </property> <property type="string" id="cFunc" mode="w" > AVERAGE |
From: <sv...@ze...> - 2008-04-29 17:34:23
|
Author: ian Date: 2008-04-29 13:34:28 -0400 (Tue, 29 Apr 2008) New Revision: 9134 Modified: trunk/Products/ZenUITests/tests/selenium/TestMonitors.py Log: * Renamed Monitors link to Collectors Modified: trunk/Products/ZenUITests/tests/selenium/TestMonitors.py =================================================================== --- trunk/Products/ZenUITests/tests/selenium/TestMonitors.py 2008-04-29 17:29:24 UTC (rev 9133) +++ trunk/Products/ZenUITests/tests/selenium/TestMonitors.py 2008-04-29 17:34:28 UTC (rev 9134) @@ -29,8 +29,8 @@ """Defines a class that runs tests under the Monitors heading""" def _addStatusMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) if self.selenium.is_element_present("link=statusTestingString"): self._deleteStatusMonitor() @@ -39,16 +39,16 @@ self.selenium.wait_for_page_to_load(self.WAITTIME) def _deleteStatusMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) self.deleteDialog("StatusMonitorlistremoveSMonitors", "manage_removeMonitor:method", pathsList="ids:list", form_name="StatusMonitors", testData="statusTestingString") self.selenium.wait_for_page_to_load(self.WAITTIME) def _addPerformanceMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) if self.selenium.is_element_present("link=performanceTestingString"): self._deletePerformanceMonitor() @@ -57,8 +57,8 @@ self.selenium.wait_for_page_to_load(self.WAITTIME) def _deletePerformanceMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) self.deleteDialog("PerformanceMonitorlistremovePMonitors", "manage_removeMonitor:method", pathsList="ids:list", @@ -67,8 +67,8 @@ def _addPerformanceTemplate(self): #self._addPerformanceMonitor() - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.waitForElement("id=PerformanceMonitorlistperformanceTemplates") self.selenium.click("id=PerformanceMonitorlistperformanceTemplates") self.addDialog("AllTemplatesaddTemplate","manage_addRRDTemplate:method", @@ -76,8 +76,8 @@ self.selenium.wait_for_page_to_load(self.WAITTIME) def _deletePerformanceTemplate(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) self.waitForElement("id=PerformanceMonitorlistperformanceTemplates") self.selenium.click("id=PerformanceMonitorlistperformanceTemplates") @@ -148,8 +148,8 @@ """Defines a class that runs tests under the Monitors Performance Templates heading""" def _goToPerformanceConfTemplate(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) self.waitForElement("id=PerformanceMonitorlistperformanceTemplates") self.selenium.click("id=PerformanceMonitorlistperformanceTemplates") @@ -183,8 +183,8 @@ self.selenium.wait_for_page_to_load(self.WAITTIME) def _addPerformanceMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) if self.selenium.is_element_present("link=performanceTestingString"): self._deletePerformanceMonitor() @@ -193,8 +193,8 @@ self.selenium.wait_for_page_to_load(self.WAITTIME) def _deletePerformanceMonitor(self): - self.waitForElement("link=Monitors") - self.selenium.click("link=Monitors") + self.waitForElement("link=Collectors") + self.selenium.click("link=Collectors") self.selenium.wait_for_page_to_load(self.WAITTIME) self.deleteDialog("PerformanceMonitorlistremovePMonitors", "manage_removeMonitor:method", pathsList="ids:list", |
From: <sv...@ze...> - 2008-04-29 17:29:16
|
Author: ecn Date: 2008-04-29 13:29:24 -0400 (Tue, 29 Apr 2008) New Revision: 9133 Modified: trunk/Products/DataCollector/BaseClient.py trunk/Products/DataCollector/WmiClient.py trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py Log: * copyrights for new files Modified: trunk/Products/DataCollector/BaseClient.py =================================================================== --- trunk/Products/DataCollector/BaseClient.py 2008-04-29 17:28:27 UTC (rev 9132) +++ trunk/Products/DataCollector/BaseClient.py 2008-04-29 17:29:24 UTC (rev 9133) @@ -1,3 +1,15 @@ +########################################################################### +# +# This program is part of Zenoss Core, an open source monitoring platform. +# Copyright (C) 2008, Zenoss Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# For complete information please visit: http://www.zenoss.com/oss/ +# +########################################################################### class BaseClient(object): "Define the DataCollector Client interface" Modified: trunk/Products/DataCollector/WmiClient.py =================================================================== --- trunk/Products/DataCollector/WmiClient.py 2008-04-29 17:28:27 UTC (rev 9132) +++ trunk/Products/DataCollector/WmiClient.py 2008-04-29 17:29:24 UTC (rev 9133) @@ -1,3 +1,16 @@ +########################################################################### +# +# This program is part of Zenoss Core, an open source monitoring platform. +# Copyright (C) 2008, Zenoss Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# For complete information please visit: http://www.zenoss.com/oss/ +# +########################################################################### + from twisted.internet.protocol import ProcessProtocol from twisted.internet import reactor from twisted.internet import error Modified: trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py =================================================================== --- trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py 2008-04-29 17:28:27 UTC (rev 9132) +++ trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py 2008-04-29 17:29:24 UTC (rev 9133) @@ -1,3 +1,15 @@ +########################################################################### +# +# This program is part of Zenoss Core, an open source monitoring platform. +# Copyright (C) 2008, Zenoss Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# For complete information please visit: http://www.zenoss.com/oss/ +# +########################################################################### import Migrate |
From: <sv...@ze...> - 2008-04-29 17:28:22
|
Author: ian Date: 2008-04-29 13:28:27 -0400 (Tue, 29 Apr 2008) New Revision: 9132 Modified: trunk/Products/DataCollector/BaseClient.py Log: sometimes device is null... in zencommand apparently Modified: trunk/Products/DataCollector/BaseClient.py =================================================================== --- trunk/Products/DataCollector/BaseClient.py 2008-04-29 16:13:50 UTC (rev 9131) +++ trunk/Products/DataCollector/BaseClient.py 2008-04-29 17:28:27 UTC (rev 9132) @@ -3,7 +3,9 @@ "Define the DataCollector Client interface" def __init__(self, device, datacollector): - self.hostname = device.id + self.hostname = None + if device: + self.hostname = device.id self.device = device self.datacollector = datacollector self.timeout = None |
From: <sv...@ze...> - 2008-04-29 16:14:16
|
Author: jstevens Date: 2008-04-29 12:13:50 -0400 (Tue, 29 Apr 2008) New Revision: 9131 Modified: trunk/zendocs/AdminGuide/docbook/InstallingZenpacks.xml Log: Adding a zopectl restart and zenhub restart after installation or upgrade of zenpacks Modified: trunk/zendocs/AdminGuide/docbook/InstallingZenpacks.xml =================================================================== --- trunk/zendocs/AdminGuide/docbook/InstallingZenpacks.xml 2008-04-29 16:07:23 UTC (rev 9130) +++ trunk/zendocs/AdminGuide/docbook/InstallingZenpacks.xml 2008-04-29 16:13:50 UTC (rev 9131) @@ -1,18 +1,32 @@ -<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="IntallZenpacks"><info><title>Installing ZenPacks</title></info> - +<?xml version="1.0" encoding="UTF-8"?> +<section version="5.0" xml:id="IntallZenpacks" + xmlns="http://docbook.org/ns/docbook" + xmlns:ns5="http://www.w3.org/1999/xhtml" + xmlns:ns4="http://www.w3.org/2000/svg" + xmlns:ns3="http://www.w3.org/1998/Math/MathML" + xmlns:ns2="http://www.w3.org/1999/xlink" + xmlns:ns="http://docbook.org/ns/docbook"> + <info> + <title>Installing ZenPacks</title> + </info> <para>ZenPacks are usually distributed as .egg files. Zenoss also supports .zip files, though support for this format will be removed in a future version of Zenoss. Either ZenPacks of either type can be installed from the command line on the Zenoss server or via the Zenoss user interface.</para> - <section><info><title>Installing via the Command Line</title></info> - + <section> + <info> + <title>Installing via the Command Line</title> + </info> <para>The following ZenPack command can be used from the command line to - install ZenPack files:</para> + install ZenPack files. After installing or updating ZenPacks you need to + restart Zope and ZenHub:</para> - <para><programlisting>zenpack --install <filename></programlisting></para> + <para><programlisting>zenpack --install <filename> +zopectl restart +zenhub restart</programlisting></para> <para>If you have the source code for the ZenPack you can install directly from that rather than from a .egg or .zip file. The command is the same, @@ -20,24 +34,30 @@ source code into either $ZENHOME/ZenPacks (for newer egg ZenPacks) or $ZENHOME/Products (for older style ZenPacks.)</para> - <para><programlisting>zenpack --install <directoryname></programlisting>If - you are developing a ZenPack you usually will want to maintain your source - code outside of $ZENHOME/ZenPacks or $ZENHOME/Products. This is advisable - for two reasons. First, if you issue a zenpack --remove command it will - delete your code from either of those two locations and you would lose - your files unless you had them backed up elsewhere. Second, if you are - maintaining your source code in a version control system it is frequently - more convenient to have the files reside elsewhere on the filesystem. - Using the --link option you can install the ZenPack but have Zenoss use - your code from its current location. Instead of installing your code in - $ZENHOME/ZenPacks or $ZENHOME/Products Zenoss will create a link in one of - those locations that points to your source code directory.</para> + <para><programlisting>zenpack --install <directoryname> +zopectl restart +zenhub restart</programlisting>If you are developing a ZenPack you usually + will want to maintain your source code outside of $ZENHOME/ZenPacks or + $ZENHOME/Products. This is advisable for two reasons. First, if you issue + a zenpack --remove command it will delete your code from either of those + two locations and you would lose your files unless you had them backed up + elsewhere. Second, if you are maintaining your source code in a version + control system it is frequently more convenient to have the files reside + elsewhere on the filesystem. Using the --link option you can install the + ZenPack but have Zenoss use your code from its current location. Instead + of installing your code in $ZENHOME/ZenPacks or $ZENHOME/Products Zenoss + will create a link in one of those locations that points to your source + code directory.</para> - <programlisting>zenpack --link --install <directoryname></programlisting> + <programlisting>zenpack --link --install <directoryname> +zopectl restart +zenhub restart</programlisting> </section> - <section><info><title>Installing via the User Interface</title></info> - + <section> + <info> + <title>Installing via the User Interface</title> + </info> <para>You can upload and install a ZenPack .egg or .zip file via the user interface. From the Settings->ZenPacks page choose the Install @@ -46,8 +66,10 @@ button the file is uploaded to the Zenoss server and installed.</para> </section> - <section><info><title>Installing All Core ZenPacks via RPM</title></info> - + <section> + <info> + <title>Installing All Core ZenPacks via RPM</title> + </info> <para>The Zenoss Core ZenPacks, along with third party ZenPacks, are available for download individually from @@ -55,7 +77,7 @@ link to download an RPM that includes the most popular Core ZenPacks. To install via the Core ZenPacks RPM follow these steps:</para> - <orderedlist inheritnum="ignore" continuation="restarts"> + <orderedlist continuation="restarts" inheritnum="ignore"> <listitem> <para>Download the appropriate file from http://www.zenoss.com/community/projects/zenpacks/all-core-zenpacks</para> @@ -70,6 +92,11 @@ <para><programlisting>rpm -ihv <rpm file></programlisting></para> </listitem> + + <listitem> + <para>Restart Zope and ZenHub:<programlisting>zopectl restart +zenhub restart</programlisting></para> + </listitem> </orderedlist> </section> </section> \ No newline at end of file |
From: <sv...@ze...> - 2008-04-29 16:07:45
|
Author: ian Date: 2008-04-29 12:07:23 -0400 (Tue, 29 Apr 2008) New Revision: 9130 Modified: trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml Log: * Renamed time datapoint and the template. Modified: trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml 2008-04-29 13:19:17 UTC (rev 9129) +++ trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ZenPacks/zenoss/DigMonitor/objects/objects.xml 2008-04-29 16:07:23 UTC (rev 9130) @@ -1,7 +1,7 @@ <?xml version="1.0"?> <objects> -<!-- ('', 'zport', 'dmd', 'Devices', 'Server', 'rrdTemplates', 'NameServer') --> -<object id='/zport/dmd/Devices/Server/rrdTemplates/NameServer' module='Products.ZenModel.RRDTemplate' class='RRDTemplate'> +<!-- ('', 'zport', 'dmd', 'Devices', 'Server', 'rrdTemplates', 'DigMonitor') --> +<object id='/zport/dmd/Devices/Server/rrdTemplates/DigMonitor' module='Products.ZenModel.RRDTemplate' class='RRDTemplate'> <property type="text" id="description" mode="w" > DNS query time template with 30 second threshold </property> @@ -38,7 +38,7 @@ 60 </property> <tomanycont id='datapoints'> -<object id='time' module='Products.ZenModel.RRDDataPoint' class='RRDDataPoint'> +<object id='responsetime' module='Products.ZenModel.RRDDataPoint' class='RRDDataPoint'> <property select_variable="rrdtypes" type="selection" id="rrdtype" mode="w" > GAUGE </property> @@ -52,7 +52,7 @@ <tomanycont id='thresholds'> <object id='BrokenDNS' module='Products.ZenModel.MinMaxThreshold' class='MinMaxThreshold'> <property type="lines" id="dsnames" mode="w" > -['dig_time'] +['dig_responsetime'] </property> <property type="boolean" id="enabled" mode="w" > True @@ -72,7 +72,7 @@ </object> <object id='SlowDNS' module='Products.ZenModel.MinMaxThreshold' class='MinMaxThreshold'> <property type="lines" id="dsnames" mode="w" > -['dig_time'] +['dig_responsetime'] </property> <property type="boolean" id="enabled" mode="w" > True @@ -118,7 +118,7 @@ True </property> <tomanycont id='graphPoints'> -<object id='time' module='Products.ZenModel.DataPointGraphPoint' class='DataPointGraphPoint'> +<object id='responsetime' module='Products.ZenModel.DataPointGraphPoint' class='DataPointGraphPoint'> <property select_variable="lineTypes" type="selection" id="lineType" mode="w" > LINE </property> @@ -138,7 +138,7 @@ -1 </property> <property type="string" id="dpName" mode="w" > -dig_time +dig_responsetime </property> <property type="string" id="cFunc" mode="w" > AVERAGE |
From: <sv...@ze...> - 2008-04-29 13:19:27
|
Author: ecn Date: 2008-04-29 09:19:17 -0400 (Tue, 29 Apr 2008) New Revision: 9129 Added: trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py Modified: trunk/Products/ZenModel/migrate/__init__.py Log: * zenmodeler will invoke zenwinmodeler handle the common update case where zenwinmodeler may be running remove any heartbeat for zenwinmodeler Modified: trunk/Products/ZenModel/migrate/__init__.py =================================================================== --- trunk/Products/ZenModel/migrate/__init__.py 2008-04-29 13:14:30 UTC (rev 9128) +++ trunk/Products/ZenModel/migrate/__init__.py 2008-04-29 13:19:17 UTC (rev 9129) @@ -143,3 +143,4 @@ import fixManufacturersLocation import addeventmenuitem import runcommandspermission +import winmodelerUnderModeler Added: trunk/Products/ZenModel/migrate/winmodelerUnderModeler.py |
From: <sv...@ze...> - 2008-04-29 13:14:27
|
Author: edahl Date: 2008-04-29 09:14:30 -0400 (Tue, 29 Apr 2008) New Revision: 9128 Modified: trunk/Products/ZenModel/migrate/addMonitorColumn.py Log: * add monitor column migrate script had wrong version Modified: trunk/Products/ZenModel/migrate/addMonitorColumn.py =================================================================== --- trunk/Products/ZenModel/migrate/addMonitorColumn.py 2008-04-29 13:06:00 UTC (rev 9127) +++ trunk/Products/ZenModel/migrate/addMonitorColumn.py 2008-04-29 13:14:30 UTC (rev 9128) @@ -65,7 +65,7 @@ class AddMonitorColumn(Migrate.Step): - version = Migrate.Version(2, 0, 0) + version = Migrate.Version(2, 2, 0) def cutover(self, dmd): zem = dmd.ZenEventManager |
From: <sv...@ze...> - 2008-04-29 13:06:06
|
Author: ecn Date: 2008-04-29 09:06:00 -0400 (Tue, 29 Apr 2008) New Revision: 9127 Modified: trunk/bin/zenoss Log: * zenmodeler will invoke zenwinmodeler Modified: trunk/bin/zenoss =================================================================== --- trunk/bin/zenoss 2008-04-29 13:02:36 UTC (rev 9126) +++ trunk/bin/zenoss 2008-04-29 13:06:00 UTC (rev 9127) @@ -69,7 +69,6 @@ then C="$C zenwin" C="$C zeneventlog" - C="$C zenwinmodeler" fi for i in $ZENHOME/Products/*/daemons/* do |
From: <sv...@ze...> - 2008-04-29 13:02:45
|
Author: ecn Date: 2008-04-29 09:02:36 -0400 (Tue, 29 Apr 2008) New Revision: 9126 Added: trunk/Products/DataCollector/BaseClient.py Modified: trunk/Products/DataCollector/CollectorClient.py trunk/Products/DataCollector/DeviceProxy.py trunk/Products/DataCollector/PortscanClient.py trunk/Products/DataCollector/PythonClient.py trunk/Products/DataCollector/SnmpClient.py trunk/Products/DataCollector/WmiClient.py trunk/Products/DataCollector/plugins/CollectorPlugin.py trunk/Products/DataCollector/zenmodeler.py Log: * add stop() to all clients, and implement it for zenwinmodeler invocation * add --nowmi option to turn off zenwinmodeler invocation * remove unused --nothread option * add two more required device attributes: _snmpStatus and zCollectorClientTimeout * created a base class for all clients so we know what the modeler needs (partial fix to #3064) Added: trunk/Products/DataCollector/BaseClient.py Modified: trunk/Products/DataCollector/CollectorClient.py =================================================================== --- trunk/Products/DataCollector/CollectorClient.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/CollectorClient.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -34,13 +34,16 @@ from twisted.internet import protocol -class CollectorClient(protocol.ClientFactory): +from BaseClient import BaseClient + +class CollectorClient(BaseClient, protocol.ClientFactory): maintainConnection = False cmdindex = 0 def __init__(self, hostname, ip, port, plugins=None, options=None, device=None, datacollector=None, alog=None): + BaseClient.__init__(self, device, datacollector) from Products.ZenUtils.Utils import unused unused(alog) self.hostname = hostname @@ -52,10 +55,8 @@ for plugin in plugins: self.cmdmap[plugin.command] = plugin self._commands.append(plugin.command) - self.device = device self.results = [] self.protocol = None - self.datacollector = datacollector if options: defaultUsername = options.username Modified: trunk/Products/DataCollector/DeviceProxy.py =================================================================== --- trunk/Products/DataCollector/DeviceProxy.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/DeviceProxy.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -24,7 +24,7 @@ return DateTime(float(self._snmpLastCollection)) def getSnmpStatus(self): - return getattr(self, '_snmpStatus', 0) + return self._snmpStatus getSnmpStatusNumber = getSnmpStatus def getId(self): Modified: trunk/Products/DataCollector/PortscanClient.py =================================================================== --- trunk/Products/DataCollector/PortscanClient.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/PortscanClient.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -22,14 +22,15 @@ log = logging.getLogger("zen.PortscanClient") -class PortscanClient(object): +from BaseClient import BaseClient +class PortscanClient(BaseClient): + def __init__(self, hostname, ipaddr, options=None, device=None, datacollector=None, plugins=[]): + BaseClient.__init__(self, device, datacollector) self.hostname = hostname - self.device = device self.options = options - self.datacollector = datacollector self.plugins = plugins self.results = [] Modified: trunk/Products/DataCollector/PythonClient.py =================================================================== --- trunk/Products/DataCollector/PythonClient.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/PythonClient.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -16,12 +16,13 @@ import Globals -class PythonClient(object): +from BaseClient import BaseClient +class PythonClient(BaseClient): + def __init__(self, device=None, datacollector=None, plugins=[]): - self.device = device + BaseClient.__init__(self, device, datacollector) self.hostname = device.id - self.datacollector = datacollector self.plugins = plugins self.results = [] Modified: trunk/Products/DataCollector/SnmpClient.py =================================================================== --- trunk/Products/DataCollector/SnmpClient.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/SnmpClient.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -31,10 +31,13 @@ DEFAULT_MAX_OIDS_BACK = 40 -class SnmpClient(object): +from BaseClient import BaseClient +class SnmpClient(BaseClient): + def __init__(self, hostname, ipaddr, options=None, device=None, datacollector=None, plugins=[]): + BaseClient.__init__(self, device, datacollector) global defaultTries, defaultTimeout self.hostname = hostname self.device = device Modified: trunk/Products/DataCollector/WmiClient.py =================================================================== --- trunk/Products/DataCollector/WmiClient.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/WmiClient.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -1,30 +1,40 @@ from twisted.internet.protocol import ProcessProtocol from twisted.internet import reactor +from twisted.internet import error -import logging -log = logging.getLogger("zen.WmiClient") - import sys from Products.ZenUtils.Utils import zenPath +from BaseClient import BaseClient -class WmiClient(ProcessProtocol): +class WmiClient(BaseClient, ProcessProtocol): "Invoke zenwinmodeler on the device to model it" - def __init__(self, device, modeler): - self.device = device - self.modeler = modeler - self.timeout = None - self.timedOut = False + def __init__(self, device, datacollector): + BaseClient.__init__(self, device, datacollector) + self.process = None self.outReceived = sys.stdout.write self.errReceived = sys.stderr.write - self.datacollector = modeler def processEnded(self, reason): if self.datacollector: self.datacollector.clientFinished(self) + self.process = None + def stop(self): + if not self.process: + return + try: + self.process.signalProcess(signal.SIGSTOP) + except error.ProcessExitedAlready: + pass + try: + self.process.loseConnection() + except Exception: + pass + self.process = None + def run(self): modeler = zenPath('bin', 'zenwinmodeler') args = ('run', '-d', self.device.id) @@ -32,5 +42,3 @@ args += ('--weblog',) reactor.spawnProcess(self, modeler, (modeler,) + args, env=None) - def getResults(self): - return [] Modified: trunk/Products/DataCollector/plugins/CollectorPlugin.py =================================================================== --- trunk/Products/DataCollector/plugins/CollectorPlugin.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/plugins/CollectorPlugin.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -37,6 +37,8 @@ deviceProperties = ('id', 'manageIp', '_snmpLastCollection', + '_snmpStatus', + 'zCollectorClientTimeout', ) isip = iputil.isip Modified: trunk/Products/DataCollector/zenmodeler.py =================================================================== --- trunk/Products/DataCollector/zenmodeler.py 2008-04-28 20:47:59 UTC (rev 9125) +++ trunk/Products/DataCollector/zenmodeler.py 2008-04-29 13:02:36 UTC (rev 9126) @@ -52,8 +52,7 @@ generateEvents = True configCycleInterval = 360 - def __init__(self,noopts=0,app=None,single=False, - threaded=None,keeproot=False): + def __init__(self, noopts=0, app=None, single=False, keeproot=False): PBDaemon.__init__(self) # FIXME: cleanup --force option #2660 self.options.force = True @@ -74,9 +73,6 @@ self.single = single if self.options.device: self.single = True - self.threaded = threaded - if self.threaded is None: - self.threaded = not self.options.nothread self.modelerCycleInterval = self.options.cycletime self.collage = self.options.collage / 1440.0 self.clients = [] @@ -166,6 +162,8 @@ def wmiCollect(self, device, ip, timeout): "Start the wmi collector" + if self.options.nowmi: + return try: plugins = self.selectPlugins(device, 'wmi') if not plugins: @@ -456,9 +454,9 @@ self.parser.add_option('--debug', dest='debug', action="store_true", default=False, help="don't fork threads for processing") - self.parser.add_option('--nothread', - dest='nothread', action="store_true", default=True, - help="do not use threads when applying updates") + self.parser.add_option('--nowmi', + dest='nowmi', action="store_true", default=False, + help="do not run zenwinmodeler to execute WMI plugins") self.parser.add_option('--parallel', dest='parallel', type='int', default=defaultParallel, help="number of devices to collect from in parallel") @@ -512,6 +510,7 @@ self.log.warn("client %s timeout", client.hostname) self.finished.append(client) client.timedOut = True + client.stop() else: active.append(client) self.clients = active |
From: <sv...@ze...> - 2008-04-28 20:50:05
|
Author: ecn Date: 2008-04-28 16:47:59 -0400 (Mon, 28 Apr 2008) New Revision: 9125 Modified: trunk/Products/DataCollector/DeviceProxy.py Log: deal with devices with no snmp status * hack to support wmi-only devices Modified: trunk/Products/DataCollector/DeviceProxy.py =================================================================== --- trunk/Products/DataCollector/DeviceProxy.py 2008-04-28 20:42:06 UTC (rev 9124) +++ trunk/Products/DataCollector/DeviceProxy.py 2008-04-28 20:47:59 UTC (rev 9125) @@ -24,7 +24,7 @@ return DateTime(float(self._snmpLastCollection)) def getSnmpStatus(self): - return self._snmpStatus + return getattr(self, '_snmpStatus', 0) getSnmpStatusNumber = getSnmpStatus def getId(self): |
From: <sv...@ze...> - 2008-04-28 20:42:09
|
Author: ecn Date: 2008-04-28 16:42:06 -0400 (Mon, 28 Apr 2008) New Revision: 9124 Modified: trunk/Products/DataCollector/WmiClient.py Log: I think reseting this variable is how we disable long-running clients, so I'm putting the check back in Modified: trunk/Products/DataCollector/WmiClient.py =================================================================== --- trunk/Products/DataCollector/WmiClient.py 2008-04-28 20:39:55 UTC (rev 9123) +++ trunk/Products/DataCollector/WmiClient.py 2008-04-28 20:42:06 UTC (rev 9124) @@ -21,7 +21,8 @@ self.datacollector = modeler def processEnded(self, reason): - self.datacollector.clientFinished(self) + if self.datacollector: + self.datacollector.clientFinished(self) def run(self): |
From: <sv...@ze...> - 2008-04-28 20:40:53
|
Author: ecn Date: 2008-04-28 16:39:55 -0400 (Mon, 28 Apr 2008) New Revision: 9123 Added: trunk/Products/DataCollector/WmiClient.py Modified: trunk/Products/DataCollector/zenmodeler.py Log: * fixes #3042: force the unholy union of zenwinmodeler and zenmodeler Added: trunk/Products/DataCollector/WmiClient.py Modified: trunk/Products/DataCollector/zenmodeler.py =================================================================== --- trunk/Products/DataCollector/zenmodeler.py 2008-04-28 18:28:22 UTC (rev 9122) +++ trunk/Products/DataCollector/zenmodeler.py 2008-04-28 20:39:55 UTC (rev 9123) @@ -30,6 +30,7 @@ import TelnetClient import SnmpClient import PortscanClient +import WmiClient defaultPortScanTimeout = 5 defaultParallel = 1 @@ -157,11 +158,31 @@ clientTimeout = getattr(device, 'zCollectorClientTimeout', 180) ip = device.manageIp timeout = clientTimeout + time.time() + self.wmiCollect(device, ip, timeout) self.pythonCollect(device, ip, timeout) self.cmdCollect(device, ip, timeout) self.snmpCollect(device, ip, timeout) self.portscanCollect(device, ip, timeout) + def wmiCollect(self, device, ip, timeout): + "Start the wmi collector" + try: + plugins = self.selectPlugins(device, 'wmi') + if not plugins: + self.log.info("no wmi plugins found for %s" % device.id) + return + if self.checkCollection(device): + self.log.info('wmi collection device %s' % device.id) + self.log.info("plugins: %s", + ", ".join(map(lambda p: p.name(), plugins))) + client = WmiClient.WmiClient(device, self) + if not client or not plugins: + self.log.warn("wmi client creation failed") + except (SystemExit, KeyboardInterrupt): + raise + except Exception: + self.log.exception("error opening wmi client") + self.addClient(client, timeout, 'wmi', device.id) def pythonCollect(self, device, ip, timeout): """Start local collection client. |
From: <sv...@ze...> - 2008-04-28 18:28:40
|
Author: ecn Date: 2008-04-28 14:28:22 -0400 (Mon, 28 Apr 2008) New Revision: 9122 Modified: trunk/Products/ZenEvents/Availability.py Log: * fixes #3051: Availability Report fails if the device search doesn't find a match Modified: trunk/Products/ZenEvents/Availability.py =================================================================== --- trunk/Products/ZenEvents/Availability.py 2008-04-28 17:45:14 UTC (rev 9121) +++ trunk/Products/ZenEvents/Availability.py 2008-04-28 18:28:22 UTC (rev 9122) @@ -153,8 +153,11 @@ finally: zem.close(conn) total = endDate - startDate if self.device: - deviceList = [dmd.Devices.findDevice(self.device)] - devices.setdefault( (self.device, self.component), 0) + deviceList = [] + device = dmd.Devices.findDevice(self.device) + if device: + deviceList = [device] + devices.setdefault( (self.device, self.component), 0) else: deviceList = [d for d in dmd.Devices.getSubDevices()] if not self.component: |
From: <sv...@ze...> - 2008-04-28 17:45:11
|
Author: ecn Date: 2008-04-28 13:45:14 -0400 (Mon, 28 Apr 2008) New Revision: 9121 Modified: trunk/Products/ZenModel/data/devices.xml Log: * don't use IpV6 listen table by default: it barely works on Cent5 Modified: trunk/Products/ZenModel/data/devices.xml =================================================================== --- trunk/Products/ZenModel/data/devices.xml 2008-04-28 15:52:12 UTC (rev 9120) +++ trunk/Products/ZenModel/data/devices.xml 2008-04-28 17:45:14 UTC (rev 9121) @@ -2259,7 +2259,7 @@ </object> <object id='Server' module='Products.ZenModel.DeviceClass' class='DeviceClass'> <property visible="True" type="lines" id="zCollectorPlugins" > -('zenoss.snmp.NewDeviceMap', 'zenoss.snmp.DeviceMap', 'zenoss.snmp.DellDeviceMap', 'zenoss.snmp.HPDeviceMap', 'zenoss.snmp.InterfaceMap', 'zenoss.snmp.RouteMap', 'zenoss.snmp.IpServiceMap', 'zenoss.snmp.IpV6ServiceMap', 'zenoss.snmp.HRFileSystemMap', 'zenoss.snmp.HRSWInstalledMap', 'zenoss.snmp.HRSWRunMap', 'zenoss.snmp.CpuMap', 'zenoss.snmp.DellCPUMap', 'zenoss.snmp.HPCPUMap', 'zenoss.snmp.DellPCIMap') +('zenoss.snmp.NewDeviceMap', 'zenoss.snmp.DeviceMap', 'zenoss.snmp.DellDeviceMap', 'zenoss.snmp.HPDeviceMap', 'zenoss.snmp.InterfaceMap', 'zenoss.snmp.RouteMap', 'zenoss.snmp.IpServiceMap', 'zenoss.snmp.HRFileSystemMap', 'zenoss.snmp.HRSWInstalledMap', 'zenoss.snmp.HRSWRunMap', 'zenoss.snmp.CpuMap', 'zenoss.snmp.DellCPUMap', 'zenoss.snmp.HPCPUMap', 'zenoss.snmp.DellPCIMap') </property> <property visible="True" type="string" id="zIcon" > /zport/dmd/img/icons/server.png @@ -3506,7 +3506,7 @@ 8090 </property> <property visible="True" type="lines" id="zCollectorPlugins" > -('zenoss.snmp.NewDeviceMap', 'zenoss.snmp.DeviceMap', 'zenoss.snmp.DellDeviceMap', 'zenoss.snmp.HPDeviceMap', 'zenoss.snmp.InterfaceMap', 'zenoss.snmp.RouteMap', 'zenoss.snmp.IpServiceMap', 'zenoss.snmp.IpV6ServiceMap', 'zenoss.snmp.HRFileSystemMap', 'zenoss.snmp.HRSWRunMap', 'zenoss.snmp.CpuMap', 'zenoss.snmp.DellCPUMap', 'zenoss.snmp.DellPCIMap', 'zenoss.snmp.HPCPUMap') +('zenoss.snmp.NewDeviceMap', 'zenoss.snmp.DeviceMap', 'zenoss.snmp.DellDeviceMap', 'zenoss.snmp.HPDeviceMap', 'zenoss.snmp.InterfaceMap', 'zenoss.snmp.RouteMap', 'zenoss.snmp.IpServiceMap', 'zenoss.snmp.HRFileSystemMap', 'zenoss.snmp.HRSWRunMap', 'zenoss.snmp.CpuMap', 'zenoss.snmp.DellCPUMap', 'zenoss.snmp.DellPCIMap', 'zenoss.snmp.HPCPUMap') </property> <property visible="True" type="string" id="zIcon" > /zport/dmd/img/icons/server-linux.png |
From: <sv...@ze...> - 2008-04-28 15:52:11
|
Author: ecn Date: 2008-04-28 11:52:12 -0400 (Mon, 28 Apr 2008) New Revision: 9120 Modified: trunk/Products/ZenModel/RRDView.py Log: * along with a reconfigured url, this fixes #3053 Modified: trunk/Products/ZenModel/RRDView.py =================================================================== --- trunk/Products/ZenModel/RRDView.py 2008-04-28 15:21:19 UTC (rev 9119) +++ trunk/Products/ZenModel/RRDView.py 2008-04-28 15:52:12 UTC (rev 9120) @@ -135,6 +135,8 @@ gopts.append("--start=%d" % start) if end: gopts.append("--end=%d" % end) + if not names: + return {} perfServer = self.device().getPerformanceServer() vals = [] if perfServer: |
From: <sv...@ze...> - 2008-04-28 15:21:40
|
Author: jplouis Date: 2008-04-28 11:21:19 -0400 (Mon, 28 Apr 2008) New Revision: 9119 Modified: trunk/Products/ZenModel/ZenPack.py Log: ignore broken zenpacks when getting eligible dependencies; refs #3062 Modified: trunk/Products/ZenModel/ZenPack.py =================================================================== --- trunk/Products/ZenModel/ZenPack.py 2008-04-28 13:16:09 UTC (rev 9118) +++ trunk/Products/ZenModel/ZenPack.py 2008-04-28 15:21:19 UTC (rev 9119) @@ -779,11 +779,16 @@ Return a list of installed zenpacks that could be listed as dependencies for this zenpack """ - return [zp for zp in self.dmd.ZenPackManager.packs() - if zp.id != self.id - and zp.isEggPack()] + result = [] + for zp in self.dmd.ZenPackManager.packs(): + try: + if zp.id != self.id and zp.isEggPack(): + result.append(zp) + except AttributeError: + pass + return result + - def isInZenPacksDir(self): """ Return True if the egg is located in the ZenPacks directory, |
From: <sv...@ze...> - 2008-04-28 13:16:19
|
Author: ecn Date: 2008-04-28 09:16:09 -0400 (Mon, 28 Apr 2008) New Revision: 9118 Modified: trunk/Products/ZenWin/zeneventlog.py trunk/Products/ZenWin/zenwin.py trunk/Products/ZenWin/zenwinmodeler.py Log: * fixes #3058: report success to the watchdog after every device query Modified: trunk/Products/ZenWin/zeneventlog.py =================================================================== --- trunk/Products/ZenWin/zeneventlog.py 2008-04-25 16:22:10 UTC (rev 9117) +++ trunk/Products/ZenWin/zeneventlog.py 2008-04-28 13:16:09 UTC (rev 9118) @@ -46,71 +46,77 @@ yield self.configService().callRemote('getDeviceConfigAndWinServices', driver.next()) self.updateDevices(driver.next()) + + def processDevice(self, device): + self.log.debug("polling %s", device.id) + try: + wql = """SELECT * FROM __InstanceCreationEvent where """\ + """TargetInstance ISA 'Win32_NTLogEvent' """\ + """and TargetInstance.EventType <= %d"""\ + % device.zWinEventlogMinSeverity + if not self.watchers.has_key(device.id): + self.watchers[device.id] = self.getWatcher(device, wql) + w = self.watchers[device.id] + + while 1: + lrec = w.boundedCall(MAX_WAIT_FOR_WMI_REQUEST, 'nextEvent') + if not lrec.message: + continue + self.events += 1 + self.sendEvent(self.mkevt(device.id, lrec)) + except pywintypes.com_error, e: + msg = "wmi connection failed: " + code,txt,info,param = e + wmsg = "%s: %s" % (abs(code), txt) + if info: + wcode, source, descr, hfile, hcont, scode = info + scode = abs(scode) + if descr: + wmsg = descr.strip() + msg += wmsg + if scode == TIMEOUT_CODE: + self.log.debug("timeout (no events) %s", device.id) + elif scode == RPC_ERROR_CODE: + self.log.warn("%s %s", device.id, msg) + else: + self.log.warn("%s %s", device.id, msg) + self.log.warn("removing %s", device.id) + self.devices.remove(device) + except ProcessProxyError, ex: + import traceback + traceback.print_exc() + self.sendEvent(dict(summary="WMI Timeout", + eventClass=Status_Wmi_Conn, + device=device.id, + severity=Event.Error, + agent=self.agent)) + self.wmiprobs.append(device.id) + self.log.warning("WMI Connection to %s timed out" % device.id) + if self.watchers.has_key(device.id): + self.watchers[device.id].stop() + del self.watchers[device.id] + def processLoop(self): """Run WMI queries in two stages ExecQuery in semi-sync mode. then process results later (when they have already returned) """ + cycle = self.cycleInterval() pythoncom.PumpWaitingMessages() for device in self.devices: if not device.plugins: continue if device.id in self.wmiprobs: self.log.debug("WMI problems on %s: skipping" % device.id) continue - - self.log.debug("polling %s", device.id) try: - wql = """SELECT * FROM __InstanceCreationEvent where """\ - """TargetInstance ISA 'Win32_NTLogEvent' """\ - """and TargetInstance.EventType <= %d"""\ - % device.zWinEventlogMinSeverity - if not self.watchers.has_key(device.id): - self.watchers[device.id] = self.getWatcher(device, wql) - w = self.watchers[device.id] + self.processDevice(device) + finally: + self.niceDoggie(cycle) - while 1: - lrec = w.boundedCall(MAX_WAIT_FOR_WMI_REQUEST, 'nextEvent') - if not lrec.message: - continue - self.events += 1 - self.sendEvent(self.mkevt(device.id, lrec)) - except pywintypes.com_error, e: - msg = "wmi connection failed: " - code,txt,info,param = e - wmsg = "%s: %s" % (abs(code), txt) - if info: - wcode, source, descr, hfile, hcont, scode = info - scode = abs(scode) - if descr: - wmsg = descr.strip() - msg += wmsg - if scode == TIMEOUT_CODE: - self.log.debug("timeout (no events) %s", device.id) - elif scode == RPC_ERROR_CODE: - self.log.warn("%s %s", device.id, msg) - else: - self.log.warn("%s %s", device.id, msg) - self.log.warn("removing %s", device.id) - self.devices.remove(device) - except ProcessProxyError, ex: - import traceback - traceback.print_exc() - self.sendEvent(dict(summary="WMI Timeout", - eventClass=Status_Wmi_Conn, - device=device.id, - severity=Event.Error, - agent=self.agent)) - self.wmiprobs.append(device.id) - self.log.warning("WMI Connection to %s timed out" % device.id) - if self.watchers.has_key(device.id): - self.watchers[device.id].stop() - del self.watchers[device.id] - gc.collect() self.log.info("Com InterfaceCount: %d", pythoncom._GetInterfaceCount()) self.log.info("Com GatewayCount: %d", pythoncom._GetGatewayCount()) - cycle = self.cycleInterval() for ev in (self.rrdStats.counter('events', cycle, self.events) + self.rrdStats.gauge('comInterfaceCount', cycle, pythoncom._GetInterfaceCount()) + Modified: trunk/Products/ZenWin/zenwin.py =================================================================== --- trunk/Products/ZenWin/zenwin.py 2008-04-25 16:22:10 UTC (rev 9117) +++ trunk/Products/ZenWin/zenwin.py 2008-04-28 13:16:09 UTC (rev 9118) @@ -13,6 +13,7 @@ from socket import getfqdn import pywintypes +import pythoncom import Globals from WinCollector import WinCollector @@ -122,14 +123,18 @@ self.deviceDown(device, '%d: %s' % (code, txt)) def processLoop(self): + pythoncom.PumpWaitingMessages() for device in self.devices: if device.id in self.wmiprobs: self.log.debug("WMI problems on %s: skipping" % device.id) continue try: - self.processDevice(device) - except Exception, ex: - self.deviceDown(device, str(ex)) + try: + self.processDevice(device) + except Exception, ex: + self.deviceDown(device, str(ex)) + finally: + self.niceDoggie(self.winCycleInterval) def deviceDown(self, device, message): if device.id in self.watchers: Modified: trunk/Products/ZenWin/zenwinmodeler.py =================================================================== --- trunk/Products/ZenWin/zenwinmodeler.py 2008-04-25 16:22:10 UTC (rev 9117) +++ trunk/Products/ZenWin/zenwinmodeler.py 2008-04-28 13:16:09 UTC (rev 9118) @@ -143,6 +143,7 @@ self.sendEvent(evt) finally: + self.niceDoggie(self.cycleInterval()) self.client.stop() def checkCollection(self, device): |
From: <sv...@ze...> - 2008-04-25 16:22:23
|
Author: jstevens Date: 2008-04-25 12:22:10 -0400 (Fri, 25 Apr 2008) New Revision: 9117 Modified: trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py Log: refs #3046 * fixing typo in HttpMonitorDataSource.py Modified: trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py 2008-04-25 14:43:00 UTC (rev 9116) +++ trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py 2008-04-25 16:22:10 UTC (rev 9117) @@ -101,7 +101,7 @@ def getCommand(self, context): parts = ['check_http'] - if self.hostname6770888: + if self.hostname: parts.append('-H %s' % self.hostname) if self.ipAddress: parts.append('-I %s' % self.ipAddress) |
From: <sv...@ze...> - 2008-04-25 14:42:59
|
Author: ecn Date: 2008-04-25 10:43:00 -0400 (Fri, 25 Apr 2008) New Revision: 9116 Modified: trunk/Products/ZenModel/tests/testWinService.py Log: * fix unit test for get/setServiceClass Modified: trunk/Products/ZenModel/tests/testWinService.py =================================================================== --- trunk/Products/ZenModel/tests/testWinService.py 2008-04-25 13:34:03 UTC (rev 9115) +++ trunk/Products/ZenModel/tests/testWinService.py 2008-04-25 14:43:00 UTC (rev 9116) @@ -33,14 +33,11 @@ def testSetServiceClass(self): - """Bogus test needs to have winservices.xml loaded""" - pass - #self.wsvc.setServiceClass({'name':'ALG','description':'testsvc'}) - #self.assert_(self.wsvc.name() == 'ALG') - #self.assert_(self.wsvc.caption() == 'Application Layer Gateway Service') - #self.assert_(self.wsvc.getInstDescription() == \ - # "'%s' StartMode: StartName:" % (self.wsvc.caption())\ - # ) + """Short test of basic set/get working""" + svc = {'name':'ALG','description':'testsvc'} + self.wsvc.setServiceClass(svc) + self.assert_(self.wsvc.name() == 'ALG') + self.assert_(self.wsvc.getServiceClass() == svc) def testSetManageIp(self): |
From: <sv...@ze...> - 2008-04-25 13:33:58
|
Author: ian Date: 2008-04-25 09:34:03 -0400 (Fri, 25 Apr 2008) New Revision: 9115 Modified: trunk/Products/ZenModel/WinService.py Log: getServiceClass has got to return what setServiceClass takes in Modified: trunk/Products/ZenModel/WinService.py =================================================================== --- trunk/Products/ZenModel/WinService.py 2008-04-24 23:18:42 UTC (rev 9114) +++ trunk/Products/ZenModel/WinService.py 2008-04-25 13:34:03 UTC (rev 9115) @@ -103,7 +103,11 @@ def getServiceClass(self): """Return a dict like one set by zenwinmodeler for services. """ - return {'name': self.name, 'description': self.description } + desc = self.description + if not desc: + svccl = self.serviceclass() + if svccl: desc = svccl.description + return {'name': self.name(), 'description': desc } def setServiceClass(self, kwargs): |
From: <sv...@ze...> - 2008-04-24 23:18:40
|
Author: jplouis Date: 2008-04-24 19:18:42 -0400 (Thu, 24 Apr 2008) New Revision: 9114 Added: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/migrate/__init__.py trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/ZenPacks.zenoss.JabberMonitor/ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/ZenPacks.zenoss.JabberMonitor/editJabberMonitorDataSource.pt trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/ZenPacks.zenoss.JabberMonitor/placeholder.txt Removed: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/JabberMonitor/editJabberMonitorDataSource.pt Modified: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/JabberMonitorDataSource.py trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/__init__.py trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/objects/objects.xml trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/setup.py Log: fixing non working zenpack refs #3025 Modified: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/JabberMonitorDataSource.py =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/JabberMonitorDataSource.py 2008-04-24 21:45:30 UTC (rev 9113) +++ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/JabberMonitorDataSource.py 2008-04-24 23:18:42 UTC (rev 9114) @@ -36,7 +36,7 @@ sourcetype = JABBER_MONITOR timeout = 60 - eventClass = '/Status/Net' + eventClass = '/Status/Jabber' hostname = '${dev/id}' port = 5223 @@ -107,7 +107,7 @@ def addDataPoints(self): - if not hasattr(self.datapoints, 'time'): + if not self.datapoints._getOb('time', None): self.manage_addRRDDataPoint('time') Modified: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/__init__.py =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/__init__.py 2008-04-24 21:45:30 UTC (rev 9113) +++ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/datasources/__init__.py 2008-04-24 23:18:42 UTC (rev 9114) @@ -0,0 +1,2 @@ +# __init__.py + Added: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/migrate/__init__.py Modified: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/objects/objects.xml =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/objects/objects.xml 2008-04-24 21:45:30 UTC (rev 9113) +++ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/objects/objects.xml 2008-04-24 23:18:42 UTC (rev 9114) @@ -1,6 +1,103 @@ <?xml version="1.0"?> <objects> -<!-- ('', 'zport', 'dmd', 'Events', 'Status', 'App', 'Jabber') --> -<object id='/zport/dmd/Events/Status/App/Jabber' module='Products.ZenEvents.EventClass' class='EventClass'> +<!-- ('', 'zport', 'dmd', 'Devices', 'rrdTemplates', 'JabberMonitor') --> +<object id='/zport/dmd/Devices/rrdTemplates/JabberMonitor' module='Products.ZenModel.RRDTemplate' class='RRDTemplate'> +<tomanycont id='datasources'> +<object id='JabberMonitor' module='ZenPacks.zenoss.JabberMonitor.datasources.JabberMonitorDataSource' class='JabberMonitorDataSource'> +<property select_variable="sourcetypes" type="selection" id="sourcetype" mode="w" > +JabberMonitor +</property> +<property type="boolean" id="enabled" mode="w" > +True +</property> +<property type="string" id="eventClass" mode="w" > +/Status/Jabber +</property> +<property type="int" id="severity" mode="w" > +3 +</property> +<property type="int" id="cycletime" mode="w" > +300 +</property> +<property type="string" id="hostname" mode="w" > +${dev/id} +</property> +<property type="int" id="port" mode="w" > +5223 +</property> +<property type="string" id="sendString" mode="w" > +<stream:stream to='${dev/id}' xmlns:stream='http://etherx.jabber.org/streams'> +</property> +<property type="string" id="expectString" mode="w" > +<stream +</property> +<tomanycont id='datapoints'> +<object id='time' module='Products.ZenModel.RRDDataPoint' class='RRDDataPoint'> +<property select_variable="rrdtypes" type="selection" id="rrdtype" mode="w" > +GAUGE +</property> +<property type="boolean" id="isrow" mode="w" > +True +</property> </object> +</tomanycont> +</object> +</tomanycont> +<tomanycont id='graphDefs'> +<object id='time' module='Products.ZenModel.GraphDefinition' class='GraphDefinition'> +<property type="int" id="height" mode="w" > +100 +</property> +<property type="int" id="width" mode="w" > +500 +</property> +<property type="boolean" id="log" mode="w" > +False +</property> +<property type="boolean" id="base" mode="w" > +False +</property> +<property type="int" id="miny" mode="w" > +-1 +</property> +<property type="int" id="maxy" mode="w" > +-1 +</property> +<property type="boolean" id="hasSummary" mode="w" > +True +</property> +<tomanycont id='graphPoints'> +<object id='time' module='Products.ZenModel.DataPointGraphPoint' class='DataPointGraphPoint'> +<property select_variable="lineTypes" type="selection" id="lineType" mode="w" > +LINE +</property> +<property type="long" id="lineWidth" mode="w" > +1 +</property> +<property type="boolean" id="stacked" mode="w" > +False +</property> +<property type="string" id="format" mode="w" > +%5.2lf%s +</property> +<property type="string" id="legend" mode="w" > +${graphPoint/id} +</property> +<property type="long" id="limit" mode="w" > +-1 +</property> +<property type="string" id="dpName" mode="w" > +JabberMonitor_time +</property> +<property type="string" id="cFunc" mode="w" > +AVERAGE +</property> +</object> +</tomanycont> +</object> +</tomanycont> +</object> +<!-- ('', 'zport', 'dmd', 'Events', 'Status', 'Jabber') --> +<object id='/zport/dmd/Events/Status/Jabber' module='Products.ZenEvents.EventClass' class='EventClass'> +</object> </objects> Deleted: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/JabberMonitor/editJabberMonitorDataSource.pt Added: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/ZenPacks.zenoss.JabberMonitor/editJabberMonitorDataSource.pt Added: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks/zenoss/JabberMonitor/skins/ZenPacks.zenoss.JabberMonitor/placeholder.txt Modified: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/setup.py =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/setup.py 2008-04-24 21:45:30 UTC (rev 9113) +++ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/setup.py 2008-04-24 23:18:42 UTC (rev 9114) @@ -1,28 +1,16 @@ -########################################################################### -# -# This program is part of Zenoss Core, an open source monitoring platform. -# Copyright (C) 2008, Zenoss Inc. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 as published by -# the Free Software Foundation. -# -# For complete information please visit: http://www.zenoss.com/oss/ -# -########################################################################### - ################################ # These variables are overwritten by Zenoss when the ZenPack is exported # or saved. Do not modify them directly here. +# NB: PACKAGES is deprecated NAME = 'ZenPacks.zenoss.JabberMonitor' -VERSION = '2.2.0' -AUTHOR = 'Zenoss Team' +VERSION = '1.0' +AUTHOR = 'Zenoss' LICENSE = '' NAMESPACE_PACKAGES = ['ZenPacks', 'ZenPacks.zenoss'] PACKAGES = ['ZenPacks', 'ZenPacks.zenoss', 'ZenPacks.zenoss.JabberMonitor'] INSTALL_REQUIRES = [] -COMPAT_ZENOSS_VERS = '>=2.1.70' -PREV_ZENPACK_NAME = 'JabberMonitor' +COMPAT_ZENOSS_VERS = '>=2.1' +PREV_ZENPACK_NAME = '' # STOP_REPLACEMENTS ################################ # Zenoss will not overwrite any changes you make below here. @@ -52,7 +40,7 @@ namespace_packages = NAMESPACE_PACKAGES, # Tell setuptools what packages this zenpack provides. - packages = PACKAGES, + packages = find_packages(), # Tell setuptools to figure out for itself which files to include # in the binary egg when it is built. @@ -81,4 +69,4 @@ # All ZenPack eggs must be installed in unzipped form. zip_safe = False, -) \ No newline at end of file +) |
Author: jstevens Date: 2008-04-24 17:45:30 -0400 (Thu, 24 Apr 2008) New Revision: 9113 Added: trunk/zenpacks/svnignores.txt Removed: trunk/zenpacks/ZenPacks.zenoss.HelloWorldZenPack/ZenPacks.zenoss.HelloWorldZenPack.egg-info/ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ZenPacks.zenoss.JabberMonitor.egg-info/ Modified: trunk/zenpacks/GNUmakefile trunk/zenpacks/ZenPacks.zenoss.ApacheMonitor/ trunk/zenpacks/ZenPacks.zenoss.DellMonitor/ trunk/zenpacks/ZenPacks.zenoss.DigMonitor/ trunk/zenpacks/ZenPacks.zenoss.DnsMonitor/ trunk/zenpacks/ZenPacks.zenoss.FtpMonitor/ trunk/zenpacks/ZenPacks.zenoss.HPMonitor/ trunk/zenpacks/ZenPacks.zenoss.HelloWorldZenPack/ trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py trunk/zenpacks/ZenPacks.zenoss.IRCDMonitor/ trunk/zenpacks/ZenPacks.zenoss.JabberMonitor/ trunk/zenpacks/ZenPacks.zenoss.LDAPMonitor/ trunk/zenpacks/ZenPacks.zenoss.MySqlMonitor/ trunk/zenpacks/ZenPacks.zenoss.NNTPMonitor/ trunk/zenpacks/ZenPacks.zenoss.NtpMonitor/ trunk/zenpacks/ZenPacks.zenoss.RPCMonitor/ Log: * converted HelloWorldZenPack to egg * set the svn:ignore attribute * new makefile targets to install, etc * svnignores.txt to set svn:ignore easily on new zenpacks Modified: trunk/zenpacks/GNUmakefile =================================================================== --- trunk/zenpacks/GNUmakefile 2008-04-24 21:26:22 UTC (rev 9112) +++ trunk/zenpacks/GNUmakefile 2008-04-24 21:45:30 UTC (rev 9113) @@ -20,8 +20,26 @@ always: +# I would like to change the name of this target, which just builds and +# doesn't actually install. Is this used anywhere in the rpath or rpm +# build processes? -jrs install: build mkdir -p $(DESTDIR)/$(ZENHOME)/packs for p in $(OLD_PACKS) ; do cp $$p*.zip $(DESTDIR)/$(ZENHOME)/packs ; done for p in $(EGG_PACKS) ; do cp $$p*.egg $(DESTDIR)/$(ZENHOME)/packs ; done + +install-linked: build + for p in $(OLD_PACKS) ; do zenpack --link --install $$p ; done + for p in $(EGG_PACKS) ; do zenpack --link --install $$p ; done + +install-normal: build + for p in $(OLD_PACKS) ; do zenpack --install $$p ; done + for p in $(EGG_PACKS) ; do zenpack --install $$p ; done + +clean: + for f in $(wildcard *.egg) ; do rm -f $$f ; done + for f in $(wildcard *.zip) ; do rm -f $$f ; done + for pat in "build dist temp *.egg-info" ; do \ + for d in $(wildcard */$$pat) ; do rm -rf $$d ; done ; \ + done Property changes on: trunk/zenpacks/ZenPacks.zenoss.ApacheMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.DellMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.DigMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.DnsMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.FtpMonitor ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.HPMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.HelloWorldZenPack ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.HttpMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Modified: trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py =================================================================== --- trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py 2008-04-24 21:26:22 UTC (rev 9112) +++ trunk/zenpacks/ZenPacks.zenoss.HttpMonitor/ZenPacks/zenoss/HttpMonitor/datasources/HttpMonitorDataSource.py 2008-04-24 21:45:30 UTC (rev 9113) @@ -135,9 +135,9 @@ def addDataPoints(self): - if not hasattr(self.datapoints, 'time'): + if not self.datapoints._getOb('time', None): self.manage_addRRDDataPoint('time') - if not hasattr(self.datapoints, 'size'): + if not self.datapoints._getOb('size', None): self.manage_addRRDDataPoint('size') Property changes on: trunk/zenpacks/ZenPacks.zenoss.IRCDMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.JabberMonitor ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.LDAPMonitor ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.MySqlMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.NNTPMonitor ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.NtpMonitor ___________________________________________________________________ Name: svn:ignore - build dist temp *.egg-info + build dist temp *.egg-info Property changes on: trunk/zenpacks/ZenPacks.zenoss.RPCMonitor ___________________________________________________________________ Name: svn:ignore + build dist temp *.egg-info Added: trunk/zenpacks/svnignores.txt |