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...> - 2007-04-13 20:15:03
|
Author: ecn Date: 2007-04-13 16:15:04 -0400 (Fri, 13 Apr 2007) New Revision: 4670 Modified: trunk/Products/ZenStatus/zenstatus.py Log: fix heartbeat Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 20:11:23 UTC (rev 4669) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 20:15:04 UTC (rev 4670) @@ -14,6 +14,7 @@ from Products.ZenHub.PBDaemon import PBDaemon as Base from Products.ZenUtils.Driver import drive, driveLater from Products.ZenStatus.ZenTcpClient import ZenTcpClient +from Products.ZenEvents.ZenEventClasses import Heartbeat class Status: _running = 0 @@ -183,7 +184,7 @@ heartbeatevt = dict(eventClass=Heartbeat, component='ZenStatus', device=getfqdn()) - self.sendEvent(heartbeat, timeout=self.cycleInterval*3) + self.sendEvent(heartbeatevt, timeout=self.cycleInterval*3) def runSomeJobs(self): |
From: <sv...@ze...> - 2007-04-13 20:11:29
|
Author: ecn Date: 2007-04-13 16:11:23 -0400 (Fri, 13 Apr 2007) New Revision: 4669 Modified: trunk/Products/ZenStatus/zenstatus.py Log: * set stop time on trivial cases Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:54:44 UTC (rev 4668) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 20:11:23 UTC (rev 4669) @@ -31,6 +31,7 @@ self._start = time.time() self._defer = defer.Deferred() if not self._remaining: + self._stop = time.time() self._defer.callback(self) return self._defer |
From: <sv...@ze...> - 2007-04-13 19:54:57
|
Author: ecn Date: 2007-04-13 15:54:44 -0400 (Fri, 13 Apr 2007) New Revision: 4668 Modified: trunk/Products/ZenStatus/zenstatus.py Log: * name conflict on _stop Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:43:54 UTC (rev 4667) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:54:44 UTC (rev 4668) @@ -40,7 +40,7 @@ self._running += 1 return d - def _stop(self, result): + def testStop(self, result): self._running -= 1 if self.done(): self._stop = time.time() @@ -50,11 +50,11 @@ def success(self, result): self._success += 1 - return self._stop(result) + return self.testStop(result) def failure(self, result): self._failure += 1 - return self._stop(result) + return self.testStop(result) def done(self): return self._running == 0 and not self._remaining |
From: <sv...@ze...> - 2007-04-13 19:43:56
|
Author: ecn Date: 2007-04-13 15:43:54 -0400 (Fri, 13 Apr 2007) New Revision: 4667 Modified: trunk/Products/ZenStatus/zenstatus.py Log: fix status fetching (again) Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:41:53 UTC (rev 4666) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:43:54 UTC (rev 4667) @@ -134,7 +134,7 @@ self.log.debug("Getting service status") yield self.configService().callRemote('serviceStatus') self.counts = {} - for device, component, count in driver.next(): + for (device, component), count in driver.next(): self.counts[device, component] = count self.log.debug("Getting services") |
From: <sv...@ze...> - 2007-04-13 19:41:59
|
Author: ecn Date: 2007-04-13 15:41:53 -0400 (Fri, 13 Apr 2007) New Revision: 4666 Modified: trunk/Products/ZenHub/services/StatusConfig.py Log: fix status fetching Modified: trunk/Products/ZenHub/services/StatusConfig.py =================================================================== --- trunk/Products/ZenHub/services/StatusConfig.py 2007-04-13 19:31:08 UTC (rev 4665) +++ trunk/Products/ZenHub/services/StatusConfig.py 2007-04-13 19:41:53 UTC (rev 4666) @@ -42,7 +42,7 @@ zem = self.dmd.ZenEventManager status = zem.getAllComponentStatus(Status_IpService) devices = Set([d.id for d in self.config.devices()]) - return [x for x in status if status[0] in devices] + return [x for x in status.items() if x[0][0] in devices] def remote_services(self, configpath): smc = self.dmd.getObjByPath(configpath.lstrip('/')) |
From: <sv...@ze...> - 2007-04-13 19:31:30
|
Author: ecn Date: 2007-04-13 15:31:08 -0400 (Fri, 13 Apr 2007) New Revision: 4665 Modified: trunk/Products/ZenStatus/zenstatus.py Log: use the correct name for tracking counts Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:29:32 UTC (rev 4664) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 19:31:08 UTC (rev 4665) @@ -82,7 +82,7 @@ def __init__(self): Base.__init__(self, keeproot=True) self.clients = {} - self.count = 0 + self.counts = {} self.status = Status() def configService(self): @@ -202,11 +202,11 @@ evt = job.getEvent() if evt: self.sendEvent(evt) - self.count.setdefault(key, 0) - self.count[key] += 1 + self.counts.setdefault(key, 0) + self.counts[key] += 1 else: if key in self.counts: - del self.count[key] + del self.counts[key] def processError(self, error): self.log.warn(error.getErrorMessage()) |
From: <sv...@ze...> - 2007-04-13 19:29:32
|
Author: ecn Date: 2007-04-13 15:29:32 -0400 (Fri, 13 Apr 2007) New Revision: 4664 Modified: trunk/Products/ZenStatus/ZenTcpClient.py Log: renamed hostname to device Modified: trunk/Products/ZenStatus/ZenTcpClient.py =================================================================== --- trunk/Products/ZenStatus/ZenTcpClient.py 2007-04-13 19:10:59 UTC (rev 4663) +++ trunk/Products/ZenStatus/ZenTcpClient.py 2007-04-13 19:29:32 UTC (rev 4664) @@ -78,15 +78,15 @@ if self.msg == "pass" and self.status > 0: sev = 0 self.msg = "device:%s service:%s back up" % ( - self.cfg.hostname, self.cfg.component) + self.cfg.device, self.cfg.component) log.info(self.msg) elif self.msg != "pass": sev = self.cfg.failSeverity log.warn("device:%s service:%s down", - self.cfg.hostname, self.cfg.component) + self.cfg.device, self.cfg.component) else: return None - return dict(device=self.cfg.hostname, + return dict(device=self.cfg.device, component=self.cfg.component, ipAddress=self.cfg.ip, summary=self.msg, |
From: <sv...@ze...> - 2007-04-13 19:11:12
|
Author: jstevens Date: 2007-04-13 15:10:59 -0400 (Fri, 13 Apr 2007) New Revision: 4663 Modified: branches/zenoss-1.1.x/bin/zenbackup.py Log: Attempting to connect to zeo was a bad idea since we check to make sure zeo isn't running before a restore. Also fixed issue with attempting to copy perf during a restore when there was nothing in /perf. Modified: branches/zenoss-1.1.x/bin/zenbackup.py =================================================================== --- branches/zenoss-1.1.x/bin/zenbackup.py 2007-04-13 19:05:09 UTC (rev 4662) +++ branches/zenoss-1.1.x/bin/zenbackup.py 2007-04-13 19:10:59 UTC (rev 4663) @@ -20,9 +20,6 @@ from datetime import date import getpass -# This is written in Python because in was originally a subclass of ZCmdBase. -# Since that is no longer the case this would probably be cleaner now if done -# as a shell script. class ZenBackup(CmdBase): @@ -32,7 +29,7 @@ def __init__(self, noopts=0): - self.z = ZCmdBase(noopts=True) + #self.z = ZCmdBase(noopts=True) CmdBase.__init__(self, noopts) self.zenhome = os.getenv('ZENHOME') @@ -61,7 +58,8 @@ """basic options setup sub classes can add more options here""" CmdBase.buildOptions(self) - em = self.z.dmd.ZenEventManager + #em = self.z.dmd.ZenEventManager + em = None self.parser.add_option('--dbname', dest='dbname', @@ -221,9 +219,12 @@ if os.system(cmd): return -1 # Copy perf files - cmd = 'cp -r %s %s' % (os.path.join(tempDir, 'perf', '*'), - os.path.join(self.zenhome, 'perf')) - if os.system(cmd): return -1 + if os.listdir(os.path.join(tempDir, 'perf')): + cmd = 'cp -r %s %s' % (os.path.join(tempDir, 'perf', '*'), + os.path.join(self.zenhome, 'perf')) + if os.system(cmd): + print 'Error restoring perf data' + #return -1 # Create the mysql db if it doesn't exist already if self.createMySqlDb(): return -1 |
From: <sv...@ze...> - 2007-04-13 19:05:35
|
Author: marc Date: 2007-04-13 15:05:09 -0400 (Fri, 13 Apr 2007) New Revision: 4662 Added: trunk/Products/ZenModel/skins/zenmodel/dialog_changeClass.pt trunk/Products/ZenModel/skins/zenmodel/dialog_deleteDevice.pt trunk/Products/ZenModel/skins/zenmodel/dialog_renameDevice.pt trunk/Products/ZenModel/skins/zenmodel/dialog_resetIp.pt Modified: trunk/Products/ZenModel/migrate/menus.py trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt Log: #1214 * migrated manage items to menu items, new dialogs Modified: trunk/Products/ZenModel/migrate/menus.py =================================================================== --- trunk/Products/ZenModel/migrate/menus.py 2007-04-13 18:45:28 UTC (rev 4661) +++ trunk/Products/ZenModel/migrate/menus.py 2007-04-13 19:05:09 UTC (rev 4662) @@ -175,6 +175,10 @@ id='deviceManagement_os', permissions=('Change Device',) ), + + + + dict(action='serviceOrganizerManage', allowed_classes=['ServiceOrganizer'], description='Manage', @@ -807,7 +811,55 @@ isdialog=True, permissions=('Change Device',), ), - ], + ], + 'Manage': [ + dict( + id= 'changeClass', + description='Change Class', + action= 'dialog_changeClass', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + dict( + id= 'modelDevice', + description='Model Device', + action= 'collectDevice', + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + dict( + id= 'resetIp', + description='Reset IP', + action= 'dialog_resetIp', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + dict( + id= 'resetCommunity', + description='Reset Community', + action= 'manage_snmpCommunity', + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + dict( + id= 'renameDevice', + description='Rename Device', + action= 'dialog_renameDevice', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + dict( + id= 'deleteDevice', + description='Delete Device', + action= 'dialog_deleteDevice', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('Device','OperatingSystem'), + ), + ], 'Add': [ dict( id= 'addIpInterface', Added: trunk/Products/ZenModel/skins/zenmodel/dialog_changeClass.pt Added: trunk/Products/ZenModel/skins/zenmodel/dialog_deleteDevice.pt Added: trunk/Products/ZenModel/skins/zenmodel/dialog_renameDevice.pt Added: trunk/Products/ZenModel/skins/zenmodel/dialog_resetIp.pt Modified: trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt 2007-04-13 18:45:28 UTC (rev 4661) +++ trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt 2007-04-13 19:05:09 UTC (rev 4662) @@ -1,6 +1,5 @@ <h2>Edit Lock</h2> -<form method="post" tal:attributes="action here/absolute_url" - name="lockableForm"> +<form method="post" name="_" tal:attributes="action here/absolute_url"> <p> Which lock status would you like to set on this object?<br/><br/> <input tal:attributes="name string:sendEventWhenBlocked; Modified: trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-04-13 18:45:28 UTC (rev 4661) +++ trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-04-13 19:05:09 UTC (rev 4662) @@ -2,7 +2,7 @@ tal:condition="python:hasattr(here, 'getMenus')"> <div class="menu" tal:define=" - menu_ids menu_ids | python:['Edit','Actions', 'Add']; + menu_ids menu_ids | python:['Edit','Actions', 'Add', 'Manage']; basepath here/absolute_url_path" tal:condition="python:here.getMenus(menu_ids, here)"> <div tal:attributes="id string:contextmenu_btn"> |
From: <sv...@ze...> - 2007-04-13 18:45:28
|
Author: chris Date: 2007-04-13 14:45:28 -0400 (Fri, 13 Apr 2007) New Revision: 4661 Added: trunk/inst/autoinstall/centos50.py trunk/inst/autoinstall/rhel50.py Modified: trunk/inst/autoinstall/centos43.py trunk/inst/autoinstall/constants.py trunk/inst/autoinstall/rhel43.py trunk/inst/autoinstall/steps.py Log: updated for version 1.2.0 as well as rhel5 Modified: trunk/inst/autoinstall/centos43.py =================================================================== --- trunk/inst/autoinstall/centos43.py 2007-04-13 18:38:58 UTC (rev 4660) +++ trunk/inst/autoinstall/centos43.py 2007-04-13 18:45:28 UTC (rev 4661) @@ -26,7 +26,7 @@ DIST_VERS = '4.3' # packages zenoss depends on that are available in yum -YUM_PACKAGES = ['net-snmp', 'net-snmp-utils', 'perl-Digest-HMAC', 'perl-DBI'] +YUM_PACKAGES = ['net-snmp', 'mysql', 'mysql-server'] # services that zenoss needs in order to function properly REQUIRED_SERVICES = ['mysql', 'snmpd', 'zenoss'] @@ -40,21 +40,12 @@ opts.DIST_NAME = DIST_NAME opts.DIST_VERS = DIST_VERS.replace('.', '') opts.DIST_PRETTY_VERS = DIST_VERS - opts.SE_LINUX_CONFIG = '/etc/selinux/config' + opts.DIST = '%s%s' % (opts.DIST_NAME, opts.DIST_VERS) def install(opts): # install the dependent packages available in yum steps.yum_install(YUM_PACKAGES) - # fix to workaround the RPM packaging bug in vanilla MySQL - utils.run('restorecon -R -v /var/lib') - - # download the "zenoss-deps" distribution - steps.rpm_install_deps(opts) - - # disable SELinux - steps.disable_selinux() - # install via rpm steps.rpm_install_zenoss(opts) Added: trunk/inst/autoinstall/centos50.py Modified: trunk/inst/autoinstall/constants.py =================================================================== --- trunk/inst/autoinstall/constants.py 2007-04-13 18:38:58 UTC (rev 4660) +++ trunk/inst/autoinstall/constants.py 2007-04-13 18:45:28 UTC (rev 4661) @@ -39,4 +39,4 @@ DEPS_TEMPLATE = "zenoss-deps-%(DIST_NAME)s%(DIST_VERS)s-%(VERSION)s.%(ARCH)s.tar.bz2" # format of the zenoss rpm file -RPM_TEMPLATE = "zenoss-%(VERSION)s-0.%(ARCH)s.rpm" +RPM_TEMPLATE = "zenoss-%(VERSION)s-0.%(DISTRO).%(ARCH)s.rpm" Modified: trunk/inst/autoinstall/rhel43.py =================================================================== --- trunk/inst/autoinstall/rhel43.py 2007-04-13 18:38:58 UTC (rev 4660) +++ trunk/inst/autoinstall/rhel43.py 2007-04-13 18:45:28 UTC (rev 4661) @@ -20,6 +20,10 @@ import utils, steps from options import opts +# this script works on this distribution and version +DIST_NAME = 'rhel' +DIST_VERS = '4.3' + # rhel 4.3 and centos 4.3 are exactly the same from centos43 import * Added: trunk/inst/autoinstall/rhel50.py Modified: trunk/inst/autoinstall/steps.py =================================================================== --- trunk/inst/autoinstall/steps.py 2007-04-13 18:38:58 UTC (rev 4660) +++ trunk/inst/autoinstall/steps.py 2007-04-13 18:45:28 UTC (rev 4661) @@ -12,30 +12,6 @@ utils.run(command) -def rpm_install_deps(opts): - '''downloads the zenoss-deps tarball, expands it, and installs the - rpms contained within it. the zenoss-deps tarball that is - downloaded is based on the options provided, which includes - distribution name and version.''' - - # download - TEMP_FILE = 'deps.tar.bz' - deps = constants.DEPS_TEMPLATE % opts.__dict__ - location = '%s/%s' % (opts.PREFIX, deps) - utils.download(location, TEMP_FILE) - - # install - utils.run('tar xjf %s' % TEMP_FILE) - utils.run('rpm --replacefiles --replacepkgs -Uvh zenoss-deps/*.rpm') - - -def disable_selinux(): - '''completely disable selinux''' - if utils.run('/usr/sbin/selinuxenabled'): - utils.run('setenforce 0') - utils.replace("^SELINUX=.*", "SELINUX=disabled", opts.SE_LINUX_CONFIG) - - def rpm_install_zenoss(opts): '''installs zenoss via rpm''' |
From: <sv...@ze...> - 2007-04-13 18:39:01
|
Author: chris Date: 2007-04-13 14:38:58 -0400 (Fri, 13 Apr 2007) New Revision: 4660 Modified: trunk/inst/docs/INSTALL_CentOS43.txt Log: updated for the latest release Modified: trunk/inst/docs/INSTALL_CentOS43.txt =================================================================== --- trunk/inst/docs/INSTALL_CentOS43.txt 2007-04-13 18:29:43 UTC (rev 4659) +++ trunk/inst/docs/INSTALL_CentOS43.txt 2007-04-13 18:38:58 UTC (rev 4660) @@ -19,53 +19,22 @@ packages Zenoss depends on in order to properly function. To run yum, issue the following command: - # yum -y install net-snmp net-snmp-utils perl-Digest-HMAC perl-DBI + # yum -y install mysql mysql-server net-snmp -2. A bug exists in MySQL's RPM packaging on systems where SE Linux is - enabled. To work around the bug disable SE Linux file - restrictions on /var/lib by running the following command: - - # restorecon -R -v /var/lib - - -3. Zenoss also depends on some RPMs that are not included in YUM - distributions. These dependencies are bundled together in the - "zenoss-deps" distribution for your convenience. Download the - zenoss-deps from the Zenoss downloads page under "Zenoss Red Hat - RPM Dependencies", and install them using the following command: - - # wget http://dev.zenoss.org/downloads/zenoss-deps-centos43-1.1.0.i386.tar.bz2 - # tar xjf zenoss-deps-centos43-1.1.0.i386.tar.bz2 - # cd zenoss-deps; rpm -Uvh *.rpm - - -4. Download the latest Zenoss RPM from the SourceForge downloads +2. Download the latest Zenoss RPM from the SourceForge downloads page, and install it using the following command: - # rpm -ivh zenoss-1.1.0-0.i386.rpm + # rpm -ivh zenoss-1.2.0-0.centos43.i386.rpm -5. In order to allow the SNMP Daemon to read CPU information SE Linux - must be disabled. This can be achieved using the following - command (Note: if you have a better alternative please share it - with us by emailing su...@ze...) +3. Start Zenoss using the command: - # setenforce 0 - - -6. Restart external daemons using the command: - - # /etc/init.d/snmpd restart - # /etc/init.d/mysql restart - - -7. Start Zenoss using the command: - + # /etc/init.d/mysqld restart # /etc/init.d/zenoss start -8. Open a hole in the firewall policy to allow inbound TCP traffic to +4. Open a hole in the firewall policy to allow inbound TCP traffic to port 8080. This allows you to view the Zenoss Console. # iptables -I RH-Firewall-1-INPUT -p tcp --dport 8080 -j ACCEPT |
From: <sv...@ze...> - 2007-04-13 18:29:48
|
Author: ecn Date: 2007-04-13 14:29:43 -0400 (Fri, 13 Apr 2007) New Revision: 4659 Modified: trunk/Products/DataCollector/plugins/zenoss/snmp/InterfaceMap.py Log: * use ifalias id if it's available (Pulled in by Bob from CP engangement) Modified: trunk/Products/DataCollector/plugins/zenoss/snmp/InterfaceMap.py =================================================================== --- trunk/Products/DataCollector/plugins/zenoss/snmp/InterfaceMap.py 2007-04-13 18:15:22 UTC (rev 4658) +++ trunk/Products/DataCollector/plugins/zenoss/snmp/InterfaceMap.py 2007-04-13 18:29:43 UTC (rev 4659) @@ -47,6 +47,7 @@ # Interface Description GetTableMap('ifalias', '.1.3.6.1.2.1.31.1.1.1', { + '.1': 'id', '.18' : 'description', '.15' : 'highSpeed', } @@ -71,6 +72,10 @@ for ifidx, data in ifalias.items(): if not iftable.has_key(ifidx): continue iftable[ifidx]['description'] = data.get('description', '') + id = data.get('id', None) + if id: + iftable[ifidx]['id'] = id + iftable[ifidx]['description'] = data.get('description', '') # handle 10GB interfaces using IF-MIB::ifHighSpeed if iftable[ifidx].get('speed',0) == 4294967295L: try: iftable[ifidx]['speed'] = data['highSpeed']*1e6 @@ -97,7 +102,7 @@ log.warn("ip points to missing ifindex %s skipping", strindex) continue if not hasattr(om, 'setIpAddresses'): om.setIpAddresses = [] - ip = iprow['ipAddress'].strip()+"/"+str(self.maskToBits(iprow['netmask'].strip())) + ip = iprow['ipAddress']+"/"+str(self.maskToBits(iprow['netmask'])) om.setIpAddresses.append(ip) #om.ifindex = iprow.ifindex #FIXME ifindex is not set! @@ -113,7 +118,6 @@ om.id = cleanstring(om.id) #take off \x00 at end of string # Left in interfaceName, but added title for # the sake of consistency - if not om.id: om.id = '%s' % iface['ifindex'] om.interfaceName = om.id om.title = om.id om.id = self.prepId(om.interfaceName) |
From: <sv...@ze...> - 2007-04-13 18:15:27
|
Author: chris Date: 2007-04-13 14:15:22 -0400 (Fri, 13 Apr 2007) New Revision: 4658 Modified: trunk/inst/docs/INSTALL_CentOS5.txt Log: updated for CentOS 5 Modified: trunk/inst/docs/INSTALL_CentOS5.txt =================================================================== --- trunk/inst/docs/INSTALL_CentOS5.txt 2007-04-13 18:09:04 UTC (rev 4657) +++ trunk/inst/docs/INSTALL_CentOS5.txt 2007-04-13 18:15:22 UTC (rev 4658) @@ -19,32 +19,23 @@ packages Zenoss depends on in order to properly function. To run yum, issue the following command: - # yum -y install mysql mysql-server net-snmp perl-Digest-HMAC + # yum -y install mysql mysql-server net-snmp -2. Zenoss also depends on some RPMs that are not included in YUM - distributions. These dependencies are bundled together in the - "zenoss-deps" distribution for your convenience. Download the - zenoss-deps from the Zenoss downloads page under "Zenoss Red Hat - RPM Dependencies", and install them using the following command: - # wget http://dev.zenoss.org/downloads/zenoss-deps-centos5-1.2.0.i386.tar.bz2 - # tar xjf zenoss-deps-centos5-1.2.0.i386.tar.bz2 - # cd zenoss-deps; rpm -Uvh *.rpm - - -3. Download the latest Zenoss RPM from the SourceForge downloads +2. Download the latest Zenoss RPM from the SourceForge downloads page, and install it using the following command: - # rpm -ivh zenoss-1.2.0-0.rhel5.i386.rpm + # rpm -ivh zenoss-1.2.0-0.centos5.i386.rpm -4. Start Zenoss using the command: +3. Start Zenoss using the command: + # /etc/init.d/mysqld restart # /etc/init.d/zenoss start -5. Open a hole in the firewall policy to allow inbound TCP traffic to +4. Open a hole in the firewall policy to allow inbound TCP traffic to port 8080. This allows you to view the Zenoss Console. # iptables -I RH-Firewall-1-INPUT -p tcp --dport 8080 -j ACCEPT |
From: <sv...@ze...> - 2007-04-13 18:09:04
|
Author: chris Date: 2007-04-13 14:09:04 -0400 (Fri, 13 Apr 2007) New Revision: 4657 Modified: trunk/inst/docs/INSTALL_RHEL5.txt Log: added mysqld Modified: trunk/inst/docs/INSTALL_RHEL5.txt =================================================================== --- trunk/inst/docs/INSTALL_RHEL5.txt 2007-04-13 18:05:52 UTC (rev 4656) +++ trunk/inst/docs/INSTALL_RHEL5.txt 2007-04-13 18:09:04 UTC (rev 4657) @@ -22,6 +22,7 @@ 3. Start Zenoss using the command: + # /etc/init.d/mysqld restart # /etc/init.d/zenoss start |
From: <sv...@ze...> - 2007-04-13 18:05:52
|
Author: ecn Date: 2007-04-13 14:05:52 -0400 (Fri, 13 Apr 2007) New Revision: 4656 Added: trunk/Products/ZenHub/services/StatusConfig.py Modified: trunk/Products/ZenEvents/EventManagerBase.py trunk/Products/ZenHub/zenhub.py trunk/Products/ZenStatus/ZenTcpClient.py trunk/Products/ZenStatus/zenstatus.py Log: #1202 re-write zenstatus to use PB and not a direct connection Modified: trunk/Products/ZenEvents/EventManagerBase.py =================================================================== --- trunk/Products/ZenEvents/EventManagerBase.py 2007-04-13 15:12:16 UTC (rev 4655) +++ trunk/Products/ZenEvents/EventManagerBase.py 2007-04-13 18:05:52 UTC (rev 4656) @@ -658,6 +658,35 @@ return statusCache + def getAllComponentStatus(self, + statclass, + countField=None, + severity=3, + state=1, + where=""): + "Fetch the counts on all components matching statClass" + if countField == None: countField = self.countField + select = "select %s, %s, %s from %s where "\ + % (self.deviceField, self.componentField, countField, + self.statusTable) + where = self._wand(where, "%s = '%s'", self.eventClassField, statclass) + where = self._wand(where, "%s >= %s", self.severityField, severity) + where = self._wand(where, "%s <= %s", self.stateField, state) + select += where + conn = self.connect() + try: + curs = conn.cursor() + curs.execute(select) + result = {} + for dev, comp, count in curs.fetchall(): + dev = self.cleanstring(dev) + comp = self.cleanstring(comp) + result[dev,comp] = 0 + return result + finally: + self.close(conn) + + def getComponentStatus(self, device, component, statclass=None, countField=None, severity=3, state=1, where=""): """see IEventStatus Added: trunk/Products/ZenHub/services/StatusConfig.py Modified: trunk/Products/ZenHub/zenhub.py =================================================================== --- trunk/Products/ZenHub/zenhub.py 2007-04-13 15:12:16 UTC (rev 4655) +++ trunk/Products/ZenHub/zenhub.py 2007-04-13 18:05:52 UTC (rev 4656) @@ -223,7 +223,7 @@ try: ctor = importClass(name) except ImportError: - ctor = importClass('services.%s' % name, name) + ctor = importClass('Products.ZenHub.services.%s' % name, name) svc = ctor(self.dmd, instance) self.services[name, instance] = svc return svc Modified: trunk/Products/ZenStatus/ZenTcpClient.py =================================================================== --- trunk/Products/ZenStatus/ZenTcpClient.py 2007-04-13 15:12:16 UTC (rev 4655) +++ trunk/Products/ZenStatus/ZenTcpClient.py 2007-04-13 18:05:52 UTC (rev 4656) @@ -6,31 +6,32 @@ """ Error types: -1. timeout (no connection) -2. connection refused - port not available on remote end -3. bad value - value returned did not match expectRegex + 1. timeout (no connection) + 2. connection refused - port not available on remote end + 3. bad value - value returned did not match expectRegex """ -import sys -import re -import socket import logging log = logging.getLogger("zen.ZenTcpClient") from twisted.internet import reactor, protocol, defer -from Products.ZenEvents.Event import Event from Products.ZenEvents.ZenEventClasses import Status_IpService -hostname = socket.getfqdn() +from socket import getfqdn +hostname = getfqdn() +# this is needed to do the setUnjellyableForClass +from Products.ZenHub.services.StatusConfig import ServiceConfig + class ZenTcpTest(protocol.Protocol): def connectionMade(self): log.debug("connect to: %s" % self.transport.getPeer().host) - if self.factory.sendString: - log.debug("sending: %s" % self.factory.sendString) - self.transport.write(self.factory.sendString) + sendString = self.factory.cfg.sendString + if sendString: + log.debug("sending: %s" % sendString) + self.transport.write(sendString) reactor.callLater(self.factory.timeout, self.transport.loseConnection) else: @@ -46,66 +47,55 @@ protocol = ZenTcpTest msg = "pass" - def __init__(self, svc, timeout=15.0): - self.svc = svc - self.ip = svc.getManageIp() - self.port = svc.getPort() - self.sendString = svc.getSendString() - self.expectRegex = svc.getExpectRegex() - self.timeout=timeout + def __init__(self, svc, status): + self.cfg = svc self.deferred = defer.Deferred() + self.status = status - def expect(self, data): - if self.expectRegex and not re.search(self.expectRegex, data): + import re + if self.cfg.expectRegex and not re.search(self.cfg.expectRegex, data): self.msg = "bad return expected:'%s' received:'%s'" % ( - self.expectRegex, data) + self.cfg.expectRegex, data) log.debug(self.msg) def clientConnectionLost(self, connector, reason): log.debug("lost: %s", reason.getErrorMessage()) - evt = self.mkevent() - self.deferred.callback((self.svc.key(), evt)) + self.deferred.callback(self) + self.deferred = None def clientConnectionFailed(self, connector, reason): log.debug("failed: %s", reason.getErrorMessage()) log.debug(reason.type) - self.msg = "ip service '%s' is down" % self.svc.name() - evt = self.mkevent() - self.deferred.callback((self.svc.key(), evt)) + self.msg = "ip service '%s' is down" % self.cfg.component + self.deferred.callback(self) + self.deferred = None - def mkevent(self): - if self.msg == "pass" and self.svc.getStatus() > 0: + def getEvent(self): + if self.msg == "pass" and self.status > 0: sev = 0 self.msg = "device:%s service:%s back up" % ( - self.svc.hostname(), self.svc.name()) + self.cfg.hostname, self.cfg.component) log.info(self.msg) elif self.msg != "pass": - sev = self.svc.getFailSeverity() + sev = self.cfg.failSeverity log.warn("device:%s service:%s down", - self.svc.hostname(), self.svc.name()) + self.cfg.hostname, self.cfg.component) else: return None - return Event( - device=self.svc.hostname(), - component=self.svc.name(), - ipAddress=self.ip, - summary=self.msg, - severity=sev, - eventClass=Status_IpService, - eventGroup="TCPTest", - agent="ZenTCP", - manager=hostname) + return dict(device=self.cfg.hostname, + component=self.cfg.component, + ipAddress=self.cfg.ip, + summary=self.msg, + severity=sev, + eventClass=Status_IpService, + eventGroup="TCPTest", + agent="ZenStatus", + manager=hostname) - - -def test(svc, timeout=15): - """Pass a Service object and return a deferred that will call back - with results of service test. - """ - client = ZenTcpClient(svc, timeout=timeout) - reactor.connectTCP(client.ip, client.port, client, client.timeout) - return client.deferred + def start(self): + reactor.connectTCP(self.cfg.ip, self.cfg.port, self, self.cfg.timeout) + return self.deferred Modified: trunk/Products/ZenStatus/zenstatus.py =================================================================== --- trunk/Products/ZenStatus/zenstatus.py 2007-04-13 15:12:16 UTC (rev 4655) +++ trunk/Products/ZenStatus/zenstatus.py 2007-04-13 18:05:52 UTC (rev 4656) @@ -4,186 +4,232 @@ # ################################################################# -import socket import os import time import sys -from twisted.internet import reactor -from _mysql_exceptions import OperationalError +from twisted.internet import reactor, defer import Globals # make zope imports work +from Products.ZenHub.PBDaemon import PBDaemon as Base +from Products.ZenUtils.Driver import drive, driveLater +from Products.ZenStatus.ZenTcpClient import ZenTcpClient -from Products.ZenEvents.ZenEventClasses import App_Start, App_Stop -from Products.ZenEvents.Event import Event, EventHeartbeat -from Products.ZenUtils.ZCmdBase import ZCmdBase -import ZenTcpClient +class Status: + _running = 0 + _fail = 0 + _success = 0 + _start = 0 + _stop = 0 + _defer = None -class ZenStatus(ZCmdBase): + def __init__(self): + self._remaining = [] - agent = "ZenTCP" - eventGroup = "TCPTest" - stopping = False + def start(self, jobs): + self._remaining = jobs + self._start = time.time() + self._defer = defer.Deferred() + if not self._remaining: + self._defer.callback(self) + return self._defer + def next(self): + d = self._remaining.pop().start() + d.addCallbacks(self.success, self.failure) + self._running += 1 + return d + + def _stop(self, result): + self._running -= 1 + if self.done(): + self._stop = time.time() + self._defer, d = None, self._defer + d.callback(self) + return result + + def success(self, result): + self._success += 1 + return self._stop(result) + + def failure(self, result): + self._failure += 1 + return self._stop(result) + + def done(self): + return self._running == 0 and not self._remaining + + def stats(self): + return (len(self._remaining), + self._running, + self._success, + self._fail) + + def duration(self): + if self.done(): + return self._stop - self._start + return time.time() - self._start + + +class ZenStatus(Base): + + agent = "ZenStatus" + initialServices = ['EventService', 'StatusConfig'] + cycleInterval = 300 + configCycleInterval = 20 + properties = ('cycleInterval', 'configCycleInterval') + def __init__(self): - ZCmdBase.__init__(self, keeproot=True) + Base.__init__(self, keeproot=True) self.clients = {} self.count = 0 - self.hostname = socket.getfqdn() - self.configpath = self.options.configpath - if self.configpath.startswith("/"): - self.configpath = self.configpath[1:] - self.smc = self.dmd.getObjByPath(self.configpath) - self.zem = self.dmd.ZenEventManager - self.sendEvent(Event(device=socket.getfqdn(), - eventClass=App_Start, - summary="zenstatus started", - severity=0, component="zenstatus")) - self.log.info("started") + self.status = Status() + def configService(self): + class FakeService: + def callRemote(self, *args): + return defer.fail("Config Service is down") + try: + return self.services['StatusConfig'] + except KeyError: + return FakeService() - def cycleLoop(self): - """Our own reactor loop so we can control timeout. - """ - start = time.time() - self.log.debug("starting cycle loop") - self.startTests() - reactor.startRunning(installSignalHandlers=False) - while 1: - try: - reactor.runUntilCurrent() - if not self.clients or self.stopping: - break - secs = reactor.timeout() - if secs is None: break - reactor.doIteration(secs) - except (SystemExit, KeyboardInterrupt): raise - except: - self.log.exception("unexpected error in reactorLoop") - self.log.debug("ended cycle loop runtime=%s", time.time()-start) + def startScan(self, ignored=None): + d = drive(self.scanCycle) + if not self.options.cycle: + d.addBoth(lambda x: self.stop()) - - def startTests(self): - self.svcgen = self.smc.getSubComponents("IpService") - count = 0 - while self.nextService() and self.count < self.options.parallel: pass + def connected(self): + d = drive(self.configCycle) + d.addCallbacks(self.startScan, self.configError) + def configError(self, why): + self.log.error(why.getErrorMessage()) + self.stop() - def nextService(self): - while True: - try: - svc = self.svcgen.next() - except StopIteration: return False - dev = svc.device() - if dev.getPingStatus() > 0: - self.log.debug("skipping service %s on %s bad ping status.", - svc.name(), dev.getId()) - continue - if not dev.monitorDevice(): - self.log.debug("skipping service %s on %s prod state too low.", - svc.name(), dev.getId()) - continue - if svc.getProtocol() != "tcp": - self.log.debug("skipping service %s on %s it is not TCP.", - svc.name(), dev.getId()) - continue - self.log.debug("adding service:%s on:%s", svc.name(), dev.getId()) - self.count += 1 - timeout = getattr(dev, 'zStatusConnectTimeout', 15.0) - d = ZenTcpClient.test(svc, timeout=timeout) - d.addCallback(self.processTest) - d.addErrback(self.processError) - key = (svc.getManageIp(), svc.name()) - self.clients[key] = 1 - return True + def remote_setPropertyItems(self, items): + self.log.debug("Async update of collection properties") + self.setPropertyItems(items) + def setPropertyItems(self, items): + 'extract configuration elements used by this server' + table = dict(items) + for name in self.properties: + value = table.get(name, None) + if value is not None: + if getattr(self, name) != value: + self.log.debug('Updated %s config to %s' % (name, value)) + setattr(self, name, value) - def processTest(self, result): - key, evt = result - if evt: self.sendEvent(evt) - self.nextService() - if self.clients.has_key(key): - del self.clients[key] + def remote_deleteDevice(self, device): + self.ipservices = [s for s in self.ipservices if s.cfg.device != device] - - def processError(self, error): - self.log.warn(error.getErrorMessage()) + def configCycle(self, driver): + self.log.info("fetching property items") + yield self.configService().callRemote('propertyItems') + self.setPropertyItems(driver.next()) - - def mainLoop(self): - # for the first run, quit on failure - try: - if self.options.cycle: - while not self.stopping: - start = time.time() - self.count = 0 - try: - self.syncdb() - self.log.debug("starting zenstatus cycle") - self.cycleLoop() - self.log.info("tested %d in %3.2f seconds" % - (self.count, (time.time() - start))) - self.sendHeartbeat() - except (SystemExit, KeyboardInterrupt): raise - except: - self.log.exception("unknown exception in main loop") - runtime = time.time() - start - if runtime < self.options.cycletime: - time.sleep(self.options.cycletime - runtime) - else: - self.cycleLoop() - self.sendHeartbeat() - finally: - self._stop() - self.log.info("stopped") + driveLater(self.configCycleInterval * 60, self.configCycle) + self.log.debug("Getting service status") + yield self.configService().callRemote('serviceStatus') + self.counts = {} + for device, component, count in driver.next(): + self.counts[device, component] = count - def stop(self): - """Stop zenstatus and its child threads. - """ - self.stopping = True + self.log.debug("Getting services") + yield self.configService().callRemote('services', + self.options.configpath) + self.ipservices = [] + for s in driver.next(): + count = self.counts.get((s.device, s.component), 0) + self.ipservices.append(ZenTcpClient(s, count)) + self.log.debug("ZenStatus configured") - def _stop(self): - self.log.info("stopping...") - if hasattr(self,"pingThread"): - self.pingThread.stop() - self.log.info("stopped") + def scanCycle(self, driver): + driveLater(self.cycleInterval, self.scanCycle) + if not self.status.done(): + duration = self.status.duration() + self.log.warning("Scan cycle not complete in %.2f seconds", + duration) + if duration < self.cycleInterval * 2: + self.log.warning("Waiting for the cycle to complete") + return + self.log.warning("Ditching this cycle") - def sendEvent(self, evt): - """Send an event for this monitor. - """ - try: - self.zem.sendEvent(evt) - except OperationalError, e: - self.log.warn("failed sending event: %s", e) + self.log.debug("Getting down devices") + yield self.eventService().callRemote('getDevicePingIssues') + self.pingStatus = driver.next() + self.log.debug("Starting scan") + d = self.status.start(self.ipservices) + self.log.debug("Running jobs") + self.runSomeJobs() + yield d + driver.next() + self.log.debug("Scan complete") + self.heartbeat() + + def heartbeat(self): + _, _, success, fail = self.status.stats() + self.log.info("Finished %d jobs (%d good, %d bad) in %.2f seconds", + (success + fail), success, fail, self.status.duration()) + if not self.options.cycle: + self.stop + return + from socket import getfqdn + heartbeatevt = dict(eventClass=Heartbeat, + component='ZenStatus', + device=getfqdn()) + self.sendEvent(heartbeat, timeout=self.cycleInterval*3) - def sendHeartbeat(self): - """Send a heartbeat event for this monitor. - """ - timeout = self.options.cycletime*3 - evt = EventHeartbeat(socket.getfqdn(), "zenstatus", timeout) - self.sendEvent(evt) + def runSomeJobs(self): + while 1: + left, running, good, bad = self.status.stats() + self.log.debug("Status: left %d running %d good %d bad %d", + left, running, good, bad) + if not left or running >= self.options.parallel: + break + d = self.status.next() + d.addCallbacks(self.processTest, self.processError) + self.log.debug("Started job") + def processTest(self, job): + self.runSomeJobs() + key = job.cfg.device, job.cfg.component + evt = job.getEvent() + if evt: + self.sendEvent(evt) + self.count.setdefault(key, 0) + self.count[key] += 1 + else: + if key in self.counts: + del self.count[key] + + def processError(self, error): + self.log.warn(error.getErrorMessage()) + def buildOptions(self): - ZCmdBase.buildOptions(self) - self.parser.add_option('--configpath', dest='configpath', - default="/Devices/Server", - help="path to our monitor config ie: " - "/Devices/Server") - self.parser.add_option('--parallel', dest='parallel', - default=50, type='int', - help="number of devices to collect at one time") - self.parser.add_option('--cycletime', - dest='cycletime', default=60, type="int", - help="check events every cycletime seconds") + Base.buildOptions(self) + p = self.parser + p.add_option('--configpath', + dest='configpath', + default="/Devices/Server", + help="path to our monitor config ie: /Devices/Server") + p.add_option('--parallel', + dest='parallel', + type='int', + default=50, + help="number of devices to collect at one time") + p.add_option('--cycletime', + dest='cycletime', + type="int", + default=60, + help="check events every cycletime seconds") - if __name__=='__main__': - if sys.platform == 'win32': - time.time = time.clock pm = ZenStatus() - pm.mainLoop() + pm.run() |
From: <sv...@ze...> - 2007-04-13 15:12:17
|
Author: chris Date: 2007-04-13 11:12:16 -0400 (Fri, 13 Apr 2007) New Revision: 4655 Modified: tags/zenoss-1.1.2/inst/rpm/zenoss.spec Log: * synchronized with tagname by zenpkg Modified: tags/zenoss-1.1.2/inst/rpm/zenoss.spec =================================================================== --- tags/zenoss-1.1.2/inst/rpm/zenoss.spec 2007-04-13 15:09:16 UTC (rev 4654) +++ tags/zenoss-1.1.2/inst/rpm/zenoss.spec 2007-04-13 15:12:16 UTC (rev 4655) @@ -27,7 +27,7 @@ # set to 1 if the version of the software to be built is the trunk # if trunk is set to 0 the version will be extrapolated from the # rpm information contained in the %{version} and %{release} vars -%define trunk 1 +%define trunk 0 # the name of the ctl file for zenoss (in /etc/rc.d/rc#.d) %define S_zenoss S99zenoss @@ -41,8 +41,8 @@ # the RPM meta information Name: zenoss Summary: The Open Source Network Management System -Version: 1.1.0 -Release: 0 +Version: 1.1.2 +Release: 0 License: GPL Vendor: Zenoss, Inc. Packager: Christopher Blunck <ch...@ze...> |
From: <sv...@ze...> - 2007-04-13 15:09:21
|
Author: chris Date: 2007-04-13 11:09:16 -0400 (Fri, 13 Apr 2007) New Revision: 4654 Added: tags/zenoss-1.1.2/ Log: * auto-build of zenoss-1.1.2 by zenpkg Copied: tags/zenoss-1.1.2 (from rev 4653, branches/zenoss-1.1.x) |
From: <sv...@ze...> - 2007-04-13 15:09:00
|
Author: chris Date: 2007-04-13 11:08:58 -0400 (Fri, 13 Apr 2007) New Revision: 4653 Removed: tags/zenoss-1.1.2/ Log: removed. another slide... |
From: <sv...@ze...> - 2007-04-13 15:08:34
|
Author: chris Date: 2007-04-13 11:08:28 -0400 (Fri, 13 Apr 2007) New Revision: 4652 Modified: branches/zenoss-1.1.x/inst/rpm/zenoss.spec Log: backported fix from trunk Modified: branches/zenoss-1.1.x/inst/rpm/zenoss.spec =================================================================== --- branches/zenoss-1.1.x/inst/rpm/zenoss.spec 2007-04-13 15:07:56 UTC (rev 4651) +++ branches/zenoss-1.1.x/inst/rpm/zenoss.spec 2007-04-13 15:08:28 UTC (rev 4652) @@ -121,9 +121,9 @@ DIRNAME=${RPM_BUILD_ROOT}/${ZENHOME}/libexec for file in \ - `grep perl $DIRNAME | awk '{print $1}' | cut -d: -f1 | sort -u` + `grep perl $DIRNAME/* | awk '{print $1}' | cut -d: -f1 | sort -u` do - rm -f $DIRNAME/$file + rm -f $file done |
From: <sv...@ze...> - 2007-04-13 15:07:59
|
Author: marc Date: 2007-04-13 11:07:56 -0400 (Fri, 13 Apr 2007) New Revision: 4651 Modified: trunk/Products/ZenModel/migrate/menus.py Log: * Changed Add IpRouteEntry menu item Modified: trunk/Products/ZenModel/migrate/menus.py =================================================================== --- trunk/Products/ZenModel/migrate/menus.py 2007-04-13 14:54:13 UTC (rev 4650) +++ trunk/Products/ZenModel/migrate/menus.py 2007-04-13 15:07:56 UTC (rev 4651) @@ -602,7 +602,7 @@ 'IpRouteEntry':[ dict( id= 'addIpRouteEntry', - description='Add Route...', + description='Add IpRouteEntry...', action= 'dialog_addIpRouteEntry', isdialog=True, permissions=('Change Device',), |
From: <sv...@ze...> - 2007-04-13 14:54:24
|
Author: marc Date: 2007-04-13 10:54:13 -0400 (Fri, 13 Apr 2007) New Revision: 4650 Modified: trunk/Products/ZenEvents/skins/zenevents/viewHistoryEvents.pt trunk/Products/ZenModel/migrate/menus.py trunk/Products/ZenModel/skins/zenmodel/deviceOsDetail.pt trunk/Products/ZenModel/skins/zenmodel/deviceStatus.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addFileSystem.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addIpInterface.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addIpRouteEntry.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addIpService.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addOSProcess.pt trunk/Products/ZenModel/skins/zenmodel/dialog_addWinService.pt trunk/Products/ZenModel/skins/zenmodel/dialog_deleteComponent.pt trunk/Products/ZenModel/skins/zenmodel/ipServiceDetail.pt trunk/Products/ZenModel/skins/zenmodel/osProcessDetail.pt trunk/Products/ZenModel/skins/zenmodel/viewFileSystem.pt trunk/Products/ZenModel/skins/zenmodel/viewHistory.pt trunk/Products/ZenModel/skins/zenmodel/viewIpInterface.pt trunk/Products/ZenModel/skins/zenmodel/winServiceDetail.pt trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt Log: #1195 * Cleaned up menus.py * Added new Add menu * Moved forms for locks and deletes into dialog boxes Modified: trunk/Products/ZenEvents/skins/zenevents/viewHistoryEvents.pt =================================================================== --- trunk/Products/ZenEvents/skins/zenevents/viewHistoryEvents.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenEvents/skins/zenevents/viewHistoryEvents.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,5 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> + <span metal:define-macro="body"> <script type="text/javascript"> var djConfig = { isDebug: true }; </script> <script type="text/javascript" src="/zport/js/zenutils.js"></script> Modified: trunk/Products/ZenModel/migrate/menus.py =================================================================== --- trunk/Products/ZenModel/migrate/menus.py 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/migrate/menus.py 2007-04-13 14:54:13 UTC (rev 4650) @@ -25,7 +25,7 @@ description='Add to ZenPack...', action= 'dialog_addToZenPack', permissions=('View',), - isdialog = True, + isdialog=True, ) class MenuRelations(Migrate.Step): @@ -68,237 +68,255 @@ dmd.buildMenus( { 'Edit':[ - {'action': 'objRRDTemplate', - 'allowed_classes': ['Device', - 'FileSystem', - 'HardDisk', - 'IpInterface', - 'OSProcess'], - 'description': 'PerfConf', - 'id': 'objRRDTemplate', - 'permissions': ('Change Device',)}, - dict( - id= 'addToZenPack', - description='Add to ZenPack...', - action= 'dialog_addToZenPack', - permissions=('View',), - isdialog = True, - allowed_classes = ['ZenPackable'], - ), - {'action': 'dialog_lock', - 'allowed_classes': ['Device', - 'WinService', - 'FileSystem', - 'HardDisk', - 'IpInterface', - 'IpService', - 'OSProcess', - 'IpRouteEntry'], - 'description': 'Lock', - 'id': 'lockObject', - 'isdialog': True, - 'permissions': ('Change Device',)}, - {'action': 'dialog_deleteComponent', - 'allowed_classes': ['WinService', - 'FileSystem', - 'HardDisk', - 'IpInterface', - 'IpService', - 'OSProcess', - 'IpRouteEntry'], - 'description': 'Delete', - 'id': 'deleteObject', - 'isdialog': True, - 'permissions': ('Change Device',)}, - {'action': 'editStatusMonitorConf', - 'allowed_classes': ['StatusMonitorConf'], - 'description': 'Edit', - 'id': 'editStatusMonitorConf', - 'permissions': ('Manage DMD',)}, - {'action': 'pushConfig', - 'allowed_classes': ['DeviceClass', 'Device'], - 'description': 'Push Changes to Collectors', - 'id': 'pushConfig', - 'permissions': ('Change Device',)}, - {'action': 'deviceCustomEdit', - 'allowed_classes': ['Device'], - 'description': 'Custom', - 'id': 'deviceCustomEdit', - 'permissions': ('View',)}, - {'action': 'eventClassInstEdit', - 'allowed_classes': ['EventClassInst'], - 'description': 'Edit', - 'id': 'eventClassInstEdit', - 'permissions': ('Manage DMD',)}, - {'action': 'ipServiceClassEdit', - 'allowed_classes': ['IpServiceClass'], - 'description': 'Edit', - 'id': 'ipServiceClassEdit', - 'permissions': ('Manage DMD',)}, - {'action': 'deviceManagement', - 'allowed_classes': ['Device'], - 'description': 'Manage', - 'id': 'deviceManagement', - 'permissions': ('Change Device',)}, - {'action': 'serviceOrganizerManage', - 'allowed_classes': ['ServiceOrganizer'], - 'description': 'Manage', - 'id': 'serviceOrganizerManage', - 'permissions': ('Manage DMD',)}, - {'action': 'osProcessOrganizerManage', - 'allowed_classes': ['OSProcessOrganizer'], - 'description': 'Manage', - 'id': 'osProcessOrganizerManage', - 'permissions': ('Manage DMD',)}, - {'action': 'ipServiceClassManage', - 'allowed_classes': ['IpServiceClass'], - 'description': 'Manage', - 'id': 'ipServiceClassManage', - 'permissions': ('Manage DMD',)}, - {'action': 'editManufacturer', - 'allowed_classes': ['Manufacturer'], - 'description': 'Edit', - 'id': 'editManufacturer', - 'permissions': ('Manage DMD',)}, - {'action': 'osProcessManage', - 'allowed_classes': ['OSProcess'], - 'description': 'Manage', - 'id': 'osProcessManage', - 'permissions': ('Manage DMD',)}, - {'action': 'serviceClassManage', - 'allowed_classes': ['ServiceClass'], - 'description': 'Manage', - 'id': 'serviceClassManage', - 'permissions': ('Manage DMD',)}, - {'action': 'editPerformanceConf', - 'allowed_classes': ['PerformanceConf'], - 'description': 'Edit', - 'id': 'editPerformanceConf', - 'permissions': ('Manage DMD',)}, - {'action': 'ipServiceManage', - 'allowed_classes': ['IpService'], - 'description': 'Manage', - 'id': 'ipServiceManage', - 'permissions': ('Manage DMD',)}, - {'action': 'editProductClass', - 'allowed_classes': ['ProductClass'], - 'description': 'Edit', - 'id': 'editProductClass', - 'permissions': ('Manage DMD',)}, - {'action': 'osProcessClassManage', - 'allowed_classes': ['OSProcessClass'], - 'description': 'Manage', - 'id': 'osProcessClassManage', - 'permissions': ('Manage DMD',)}, - {'action': 'deviceOrganizerManage', - 'allowed_classes': ['DeviceOrganizer', - 'DeviceGroup', - 'Location', - 'DeviceClass', - 'System'], - 'description': 'Manage', - 'id': 'deviceOrganizerManage', - 'permissions': ('Manage DMD',)}, - {'action': 'editDevice', - 'allowed_classes': ['Device'], - 'description': 'Edit', - 'id': 'editDevice', - 'permissions': ('Change Device',)}, - {'action': 'winServiceManage', - 'allowed_classes': ['WinService'], - 'description': 'Manage', - 'id': 'winServiceManage', - 'permissions': ('Manage DMD',)}, - {'action': 'eventClassInstSequence', - 'allowed_classes': ['EventClassInst'], - 'description': 'Sequence', - 'id': 'eventClassInstSequence', - 'permissions': ('View',)}, - {'action': 'osProcessClassEdit', - 'allowed_classes': ['OSProcessClass'], - 'description': 'Edit', - 'id': 'osProcessClassEdit', - 'permissions': ('Manage DMD',)}, - {'action': 'performanceTemplates', - 'allowed_classes': ['DeviceClass'], - 'description': 'All Performance Templates', - 'id': 'performanceTemplates', - 'permissions': ('View Device',)}, - {'action': 'perfConfig', - 'allowed_classes': ['DeviceClass'], - 'description': 'Perf Config', - 'id': 'perfConfig', - 'permissions': ('Change Device',)}, - {'action': 'zPropertyEdit', - 'allowed_classes': ['Device', - 'DeviceClass', - 'IpNetwork', - 'IpServiceClass', - 'Manufacturer', - 'OSProcessClass', - 'OSProcessOrganizer', - 'ProductClass', - 'ServiceClass', - 'ServiceOrganizer', - 'EventClassInst', - 'EventClass'], - 'description': 'zProperties', - 'id': 'zPropertyEdit', - 'permissions': ('View',)}, - {'action': 'serviceClassEdit', - 'allowed_classes': ['ServiceClass'], - 'description': 'Edit', - 'id': 'serviceClassEdit', - 'permissions': ('Manage DMD',)}, - dict( - id= 'addIpInterface', - description='Add IpInterface...', - action= 'dialog_addIpInterface', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), - dict( - id= 'addOSProcess', - description='Add OSProcess...', - action= 'dialog_addOSProcess', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), - dict( - id= 'addFileSystem', - description='Add File System...', - action= 'dialog_addFileSystem', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), - dict( - id= 'addIpRouteEntry', - description='Add Route...', - action= 'dialog_addIpRouteEntry', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), - dict( - id= 'addIpService', - description='Add IpService...', - action= 'dialog_addIpService', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), - dict( - id= 'addWinService', - description='Add WinService...', - action= 'dialog_addWinService', - isdialog = True, - permissions=('Change Device',), - allowed_classes = ['OperatingSystem'], - ), -], + dict(action='objRRDTemplate', + allowed_classes=['Device', + 'FileSystem', + 'HardDisk', + 'IpInterface', + 'OSProcess'], + description='PerfConf', + id='objRRDTemplate', + permissions=('Change Device',) + ), + dict(action='../objRRDTemplate', + allowed_classes=['OperatingSystem'], + description='PerfConf', + id='objRRDTemplate_os', + permissions=('Change Device',) + ), + dict( + id= 'addToZenPack', + description='Add to ZenPack...', + action= 'dialog_addToZenPack', + permissions=('View',), + isdialog=True, + allowed_classes = ['ZenPackable'], + ), + dict(action='dialog_lock', + allowed_classes=['Device', + 'OperatingSystem', + 'WinService', + 'FileSystem', + 'HardDisk', + 'IpInterface', + 'IpService', + 'OSProcess', + 'IpRouteEntry'], + description='Lock', + id='lockObject', + isdialog=True, + permissions=('Change Device',) + ), + dict(action='dialog_deleteComponent', + allowed_classes=['WinService', + 'FileSystem', + 'HardDisk', + 'IpInterface', + 'IpService', + 'OSProcess', + 'IpRouteEntry'], + description='Delete', + id='deleteObject', + isdialog=True, + permissions=('Change Device',) + ), + dict(action='editStatusMonitorConf', + allowed_classes=['StatusMonitorConf'], + description='Edit', + id='editStatusMonitorConf', + permissions=('Manage DMD',) + ), + dict(action='pushConfig', + allowed_classes=['DeviceClass', + 'Device'], + description='Push Changes to Collectors', + id='pushConfig', + permissions=('Change Device',) + ), + dict(action='../pushConfig', + allowed_classes=['OperatingSystem'], + description='Push Changes to Collectors', + id='pushConfig_os', + permissions=('Change Device',) + ), + dict(action='deviceCustomEdit', + allowed_classes=['Device'], + description='Custom', + id='deviceCustomEdit', + permissions=('View',) + ), + dict(action='../deviceCustomEdit', + allowed_classes=['OperatingSystem'], + description='Custom', + id='deviceCustomEdit_os', + permissions=('View',) + ), + dict(action='eventClassInstEdit', + allowed_classes=['EventClassInst'], + description='Edit', + id='eventClassInstEdit', + permissions=('Manage DMD',) + ), + dict(action='ipServiceClassEdit', + allowed_classes=['IpServiceClass'], + description='Edit', + id='ipServiceClassEdit', + permissions=('Manage DMD',) + ), + dict(action='deviceManagement', + allowed_classes=['Device'], + description='Manage', + id='deviceManagement', + permissions=('Change Device',) + ), + dict(action='../deviceManagement', + allowed_classes=['OperatingSystem'], + description='Manage', + id='deviceManagement_os', + permissions=('Change Device',) + ), + dict(action='serviceOrganizerManage', + allowed_classes=['ServiceOrganizer'], + description='Manage', + id='serviceOrganizerManage', + permissions=('Manage DMD',) + ), + dict(action='osProcessOrganizerManage', + allowed_classes=['OSProcessOrganizer'], + description='Manage', + id='osProcessOrganizerManage', + permissions=('Manage DMD',) + ), + dict(action='ipServiceClassManage', + allowed_classes=['IpServiceClass'], + description='Manage', + id='ipServiceClassManage', + permissions=('Manage DMD',) + ), + dict(action='editManufacturer', + allowed_classes=['Manufacturer'], + description='Edit', + id='editManufacturer', + permissions=('Manage DMD',) + ), + dict(action='osProcessManage', + allowed_classes=['OSProcess'], + description='Manage', + id='osProcessManage', + permissions=('Manage DMD',) + ), + dict(action='serviceClassManage', + allowed_classes=['ServiceClass'], + description='Manage', + id='serviceClassManage', + permissions=('Manage DMD',) + ), + dict(action='editPerformanceConf', + allowed_classes=['PerformanceConf'], + description='Edit', + id='editPerformanceConf', + permissions=('Manage DMD',) + ), + dict(action='ipServiceManage', + allowed_classes=['IpService'], + description='Manage', + id='ipServiceManage', + permissions=('Manage DMD',) + ), + dict(action='editProductClass', + allowed_classes=['ProductClass'], + description='Edit', + id='editProductClass', + permissions=('Manage DMD',) + ), + dict(action='osProcessClassManage', + allowed_classes=['OSProcessClass'], + description='Manage', + id='osProcessClassManage', + permissions=('Manage DMD',) + ), + dict(action='deviceOrganizerManage', + allowed_classes=['DeviceOrganizer', + 'DeviceGroup', + 'Location', + 'DeviceClass', + 'System'], + description='Manage', + id='deviceOrganizerManage', + permissions=('Manage DMD',) + ), + dict(action='editDevice', + allowed_classes=['Device'], + description='Edit', + id='editDevice', + permissions=('Change Device',) + ), + dict(action='../editDevice', + allowed_classes=['OperatingSystem'], + description='Edit', + id='editDevice_os', + permissions=('Change Device',) + ), + dict(action='winServiceManage', + allowed_classes=['WinService'], + description='Manage', + id='winServiceManage', + permissions=('Manage DMD',) + ), + dict(action='eventClassInstSequence', + allowed_classes=['EventClassInst'], + description='Sequence', + id='eventClassInstSequence', + permissions=('View',) + ), + dict(action='osProcessClassEdit', + allowed_classes=['OSProcessClass'], + description='Edit', + id='osProcessClassEdit', + permissions=('Manage DMD',) + ), + dict(action='performanceTemplates', + allowed_classes=['DeviceClass'], + description='All Performance Templates', + id='performanceTemplates', + permissions=('View Device',) + ), + dict(action='perfConfig', + allowed_classes=['DeviceClass'], + description='Perf Config', + id='perfConfig', + permissions=('Change Device',) + ), + dict(action='zPropertyEdit', + allowed_classes=['Device', + 'DeviceClass', + 'IpNetwork', + 'IpServiceClass', + 'Manufacturer', + 'OSProcessClass', + 'OSProcessOrganizer', + 'ProductClass', + 'ServiceClass', + 'ServiceOrganizer', + 'EventClassInst', + 'EventClass'], + description='zProperties', + id='zPropertyEdit', + permissions=('View',) + ), + dict(action='../zPropertyEdit', + allowed_classes=['OperatingSystem'], + description='zProperties', + id='zPropertyEdit_os', + permissions=('View',) + ), + dict(action='serviceClassEdit', + allowed_classes=['ServiceClass'], + description='Edit', + id='serviceClassEdit', + permissions=('Manage DMD',) + ), + ], 'Organizer_list': [ ZenPackItems, dict( @@ -320,7 +338,7 @@ description='Delete Organizers...', action= 'dialog_removeOrganizer', permissions=('Manage DMD',), - isdialog = True + isdialog=True ), ], 'Service_list': [ @@ -458,7 +476,7 @@ description='Create a new ZenPack...', action= 'dialog_addZenPack', permissions=('Manage DMD',), - isdialog = True, + isdialog=True, ), dict( id= 'removeZenPack', @@ -474,42 +492,42 @@ description='Move to Class...', action= 'dialog_moveDevices', permissions=('Change Device',), - isdialog = True + isdialog=True ), dict( id= 'setGroups', description='Set Groups...', action= 'dialog_setGroups', permissions=('Change Device',), - isdialog = True + isdialog=True ), dict( id= 'setSystems', description='Set Systems...', action= 'dialog_setSystems', permissions=('Change Device',), - isdialog = True + isdialog=True ), dict( id= 'setLocation', description='Set Location...', action= 'dialog_setLocation', permissions=('Change Device',), - isdialog = True + isdialog=True ), dict( id= 'removeDevices', description='Delete devices...', action= 'dialog_removeDevices', permissions=('Change Device',), - isdialog = True + isdialog=True ), dict( id= 'lockDevices', description='Lock devices...', action= 'dialog_lockDevices', permissions=('Change Device',), - isdialog = True + isdialog=True ) ], 'IpInterface':[ @@ -517,21 +535,21 @@ id= 'addIpInterface', description='Add IpInterface...', action= 'dialog_addIpInterface', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteIpInterfaces', description='Delete IpInterfaces...', action= 'dialog_deleteIpInterfaces', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockIpInterfaces', description='Lock IpInterfaces...', action= 'dialog_lockIpInterfaces', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -540,21 +558,21 @@ id= 'addOSProcess', description='Add OSProcess...', action= 'dialog_addOSProcess', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteOSProcesses', description='Delete OSProcesses...', action= 'dialog_deleteOSProcesses', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockOSProcesses', description='Lock OSProcesses...', action= 'dialog_lockOSProcesses', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -563,21 +581,21 @@ id= 'addFileSystem', description='Add File System...', action= 'dialog_addFileSystem', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteFileSystems', description='Delete FileSystems...', action= 'dialog_deleteFileSystems', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockFileSystems', description='Lock FileSystems...', action= 'dialog_lockFileSystems', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -586,21 +604,21 @@ id= 'addIpRouteEntry', description='Add Route...', action= 'dialog_addIpRouteEntry', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteIpRouteEntries', description='Delete IpRouteEntries...', action= 'dialog_deleteIpRouteEntries', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockIpRouteEntries', description='Lock IpRouteEntries...', action= 'dialog_lockIpRouteEntries', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -609,21 +627,21 @@ id= 'addIpService', description='Add IpService...', action= 'dialog_addIpService', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteIpServices', description='Delete IpServices...', action= 'dialog_deleteIpServices', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockIpServices', description='Lock IpServices...', action= 'dialog_lockIpServices', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -632,21 +650,21 @@ id= 'addWinService', description='Add WinService...', action= 'dialog_addWinService', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'deleteWinServices', description='Delete WinServices...', action= 'dialog_deleteWinServices', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), dict( id= 'lockWinServices', description='Lock WinServices...', action= 'dialog_lockWinServices', - isdialog = True, + isdialog=True, permissions=('Change Device',), ) ], @@ -698,7 +716,7 @@ description='Undelete Events...', action= 'dialog_undeleteHistoryEvents', permissions=('Manage DMD',), - isdialog = True + isdialog=True ) ], 'DataSource_list':[ @@ -707,14 +725,14 @@ description = 'Add DataSource...', action = 'dialog_addDataSource', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), dict( id = 'deleteDataSource', description = 'Delete DataSource...', action = 'dialog_deleteDataSource', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), ], 'DataPoint_list':[ @@ -723,14 +741,14 @@ description = 'Add DataPoint...', action = 'dialog_addDataPoint', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), dict( id = 'deleteDataPoint', description = 'Delete DataPoint...', action = 'dialog_deleteDataPoint', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), ], 'Threshold_list':[ @@ -739,14 +757,14 @@ description = 'Add Threshold...', action = 'dialog_addThreshold', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), dict( id = 'deleteThreshold', description = 'Delete Threshold...', action = 'dialog_deleteThreshold', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), ], 'Graph_list':[ @@ -755,21 +773,21 @@ description = 'Add Graph...', action = 'dialog_addGraph', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), dict( id = 'deleteGraph', description = 'Delete Graph...', action = 'dialog_deleteGraph', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), dict( id = 'resequenceGraphs', description = 'Re-sequence Graphs', action = 'manage_resequenceRRDGraphs', permissions= ('Change Device',), - isdialog = True, + isdialog=True, ), ], 'Subnetworks':[ @@ -777,7 +795,7 @@ id= 'deleteNetwork', description='Delete Networks...', action= 'dialog_deleteNetwork', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), ], @@ -786,13 +804,62 @@ id= 'deleteIpAddress', description='Delete IpAddresses...', action= 'dialog_deleteIpAddress', - isdialog = True, + isdialog=True, permissions=('Change Device',), ), ], + 'Add': [ + dict( + id= 'addIpInterface', + description='Add IpInterface...', + action= 'dialog_addIpInterface', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + dict( + id= 'addOSProcess', + description='Add OSProcess...', + action= 'dialog_addOSProcess', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + dict( + id= 'addFileSystem', + description='Add File System...', + action= 'dialog_addFileSystem', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + dict( + id= 'addIpRouteEntry', + description='Add Route...', + action= 'dialog_addIpRouteEntry', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + dict( + id= 'addIpService', + description='Add IpService...', + action= 'dialog_addIpService', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + dict( + id= 'addWinService', + description='Add WinService...', + action= 'dialog_addWinService', + isdialog=True, + permissions=('Change Device',), + allowed_classes = ('OperatingSystem',), + ), + ] }) - - + dmd.Networks.buildMenus( {'Actions':[ dict( Modified: trunk/Products/ZenModel/skins/zenmodel/deviceOsDetail.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceOsDetail.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/deviceOsDetail.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url" - name="addComponent"/> - <form method="post" tal:attributes="action here/absolute_url" name="ipInterfaceListForm"> Modified: trunk/Products/ZenModel/skins/zenmodel/deviceStatus.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceStatus.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/deviceStatus.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <tal:block metal:define-macro="deviceStatusInfo" tal:define=" tabletitle string:Status;"> <tal:block metal:use-macro="here/zenuimacros/macros/zentable"> Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addFileSystem.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addFileSystem.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addFileSystem.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,5 @@ <h2>Add FileSystem</h2> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <p> What would you like to name your FileSystem?<br/> </p> @@ -9,9 +10,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addFileSystem:method" - value="Yes, Create this FileSystem" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this FileSystem" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addIpInterface.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addIpInterface.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addIpInterface.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,5 @@ <h2>Add IpInterface</h2> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <p> What would you like to name your IpInterface?<br/> </p> @@ -8,9 +9,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addIpInterface:method" - value="Yes, Create this IpInterface" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this IpInterface" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addIpRouteEntry.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addIpRouteEntry.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addIpRouteEntry.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,5 +1,6 @@ <h2>Add IpRouteEntry</h2> <br/> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <input type="hidden" name="userCreated" value="True"> <p style="text-align:right;"> Destination: <input name="dest"><br/><br/> @@ -25,9 +26,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addIpRouteEntry:method" - value="Yes, Create this Route" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this Route" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addIpService.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addIpService.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addIpService.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,5 @@ <h2>Add IpService</h2> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <p> What would you like to name your IpService?<br/> </p> @@ -13,9 +14,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addIpService:method" - value="Yes, Create this IpService" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this IpService" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addOSProcess.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addOSProcess.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addOSProcess.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,5 @@ <h2>Add OSProcess</h2> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <p> What would you like to name your OSProcess?<br/> </p> @@ -15,9 +16,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addOSProcess:method" - value="Yes, Create this OSProcess" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this OSProcess" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_addWinService.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_addWinService.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_addWinService.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,5 @@ <h2>Add WinService</h2> +<form method="post" tal:attributes="action here/absolute_url" name="addComponent"> <p> What would you like to name your WinService?<br/> </p> @@ -10,9 +11,8 @@ </p> <div id="dialog_buttons"> <input type="submit" name="addWinService:method" - value="Yes, Create this WinService" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}', 'addComponent')" /> + value="Yes, Create this WinService" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> -</div> \ No newline at end of file +</div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/dialog_deleteComponent.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/dialog_deleteComponent.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/dialog_deleteComponent.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,12 +1,12 @@ <h2>Delete component</h2> +<form method="post" name="deleteForm"> <p> Are you sure you want to delete this component?<br/> </p> <div id="dialog_buttons"> <input type="submit" name="manage_deleteComponent:method" - value="Yes, Delete this object" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}','lockableForm')" /> + value="Yes, Delete this object" /> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> </div> +</form> \ No newline at end of file Modified: trunk/Products/ZenModel/skins/zenmodel/ipServiceDetail.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/ipServiceDetail.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/ipServiceDetail.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <form method=post tal:attributes="action string:${here/absolute_url_path}"> <input type="hidden" name="zenScreenName" Modified: trunk/Products/ZenModel/skins/zenmodel/osProcessDetail.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/osProcessDetail.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/osProcessDetail.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <form method=post tal:attributes="action string:${here/absolute_url_path}"> <input type="hidden" name="zenScreenName" Modified: trunk/Products/ZenModel/skins/zenmodel/viewFileSystem.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewFileSystem.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/viewFileSystem.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <form method=post tal:attributes="action string:${here/absolute_url_path}"> <input type="hidden" name="zenScreenName" Modified: trunk/Products/ZenModel/skins/zenmodel/viewHistory.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewHistory.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/viewHistory.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,7 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> - <tal:block tal:define=" tabletitle string:Changes for ${here/getId} "> Modified: trunk/Products/ZenModel/skins/zenmodel/viewIpInterface.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewIpInterface.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/viewIpInterface.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <form method=post tal:attributes="action string:${here/absolute_url_path}"> <input type="hidden" name="zenScreenName" Modified: trunk/Products/ZenModel/skins/zenmodel/winServiceDetail.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/winServiceDetail.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenModel/skins/zenmodel/winServiceDetail.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,9 +1,6 @@ <tal:block metal:use-macro="here/templates/macros/page2"> <tal:block metal:fill-slot="contentPane"> -<form method="post" tal:attributes="action here/absolute_url_path" - name="lockableForm"/> - <form method=post tal:attributes="action string:${here/absolute_url_path}"> <input type="hidden" name="zenScreenName" Modified: trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenWidgets/skins/zenui/dialog_lock.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -1,4 +1,6 @@ <h2>Edit Lock</h2> +<form method="post" tal:attributes="action here/absolute_url" + name="lockableForm"> <p> Which lock status would you like to set on this object?<br/><br/> <input tal:attributes="name string:sendEventWhenBlocked; @@ -6,19 +8,14 @@ checked here/sendEventWhenBlocked" />Send event when actions are blocked by a lock<br/> </p> -<p alight="right"> +<p align="right"> <input type="submit" name="lockFromUpdates:method" - value="Lock from deletion and updates" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}','lockableForm')" /><br/> -<input type="submit" name="lockFromDeletion:method" - value="Lock from deletion" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}','lockableForm')" /><br/> + value="Lock from deletion and updates" /><br/> +<input type="submit" name="lockFromDeletion:method" + value="Lock from deletion" /><br/> <input type="submit" name="unlock:method" - value="Unlock" - tal:attributes="onclick string:return $$('dialog').submit_form( - '${here/absolute_url_path}','lockableForm')" /><br/> + value="Unlock"/><br/> <input id="dialog_cancel" type="button" value="Cancel" onclick="$('dialog').hide()"/> </p> +</form> Modified: trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-04-13 14:43:24 UTC (rev 4649) +++ trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-04-13 14:54:13 UTC (rev 4650) @@ -2,7 +2,7 @@ tal:condition="python:hasattr(here, 'getMenus')"> <div class="menu" tal:define=" - menu_ids menu_ids | python:['Edit','Actions']; + menu_ids menu_ids | python:['Edit','Actions', 'Add']; basepath here/absolute_url_path" tal:condition="python:here.getMenus(menu_ids, here)"> <div tal:attributes="id string:contextmenu_btn"> |
From: <sv...@ze...> - 2007-04-13 14:43:24
|
Author: chris Date: 2007-04-13 10:43:24 -0400 (Fri, 13 Apr 2007) New Revision: 4649 Modified: trunk/inst/rpm/zenoss.spec Log: no need to prepend the DIRNAME to the rm command. already has the fully qualified path Modified: trunk/inst/rpm/zenoss.spec =================================================================== --- trunk/inst/rpm/zenoss.spec 2007-04-13 14:18:30 UTC (rev 4648) +++ trunk/inst/rpm/zenoss.spec 2007-04-13 14:43:24 UTC (rev 4649) @@ -123,7 +123,7 @@ for file in \ `grep perl $DIRNAME/* | awk '{print $1}' | cut -d: -f1 | sort -u` do - rm -f $DIRNAME/$file + rm -f $file done |
From: <sv...@ze...> - 2007-04-13 14:18:32
|
Author: chris Date: 2007-04-13 10:18:30 -0400 (Fri, 13 Apr 2007) New Revision: 4648 Modified: trunk/inst/rpm/zenoss.spec Log: forgot the exceptionally important asterick Modified: trunk/inst/rpm/zenoss.spec =================================================================== --- trunk/inst/rpm/zenoss.spec 2007-04-13 13:58:51 UTC (rev 4647) +++ trunk/inst/rpm/zenoss.spec 2007-04-13 14:18:30 UTC (rev 4648) @@ -121,7 +121,7 @@ DIRNAME=${RPM_BUILD_ROOT}/${ZENHOME}/libexec for file in \ - `grep perl $DIRNAME | awk '{print $1}' | cut -d: -f1 | sort -u` + `grep perl $DIRNAME/* | awk '{print $1}' | cut -d: -f1 | sort -u` do rm -f $DIRNAME/$file done |
From: <sv...@ze...> - 2007-04-13 13:58:51
|
Author: chris Date: 2007-04-13 09:58:51 -0400 (Fri, 13 Apr 2007) New Revision: 4647 Modified: tags/zenoss-1.1.2/inst/rpm/zenoss.spec Log: * synchronized with tagname by zenpkg Modified: tags/zenoss-1.1.2/inst/rpm/zenoss.spec =================================================================== --- tags/zenoss-1.1.2/inst/rpm/zenoss.spec 2007-04-13 13:55:40 UTC (rev 4646) +++ tags/zenoss-1.1.2/inst/rpm/zenoss.spec 2007-04-13 13:58:51 UTC (rev 4647) @@ -27,7 +27,7 @@ # set to 1 if the version of the software to be built is the trunk # if trunk is set to 0 the version will be extrapolated from the # rpm information contained in the %{version} and %{release} vars -%define trunk 1 +%define trunk 0 # the name of the ctl file for zenoss (in /etc/rc.d/rc#.d) %define S_zenoss S99zenoss @@ -41,8 +41,8 @@ # the RPM meta information Name: zenoss Summary: The Open Source Network Management System -Version: 1.1.0 -Release: 0 +Version: 1.1.2 +Release: 0 License: GPL Vendor: Zenoss, Inc. Packager: Christopher Blunck <ch...@ze...> |
From: <sv...@ze...> - 2007-04-13 13:55:40
|
Author: chris Date: 2007-04-13 09:55:40 -0400 (Fri, 13 Apr 2007) New Revision: 4646 Added: tags/zenoss-1.1.2/ Log: * auto-build of zenoss-1.1.2 by zenpkg Copied: tags/zenoss-1.1.2 (from rev 4645, branches/zenoss-1.1.x) |