--- projects/cms/source/server/uk/org/iscream/cms/server/client/monitors/Disk__Monitor.java 2001/03/09 01:22:46 1.1 +++ projects/cms/source/server/uk/org/iscream/cms/server/client/monitors/Disk__Monitor.java 2001/03/09 03:30:55 1.2 @@ -16,7 +16,7 @@ import uk.ac.ukc.iscream.componentmanager.*; * This Monitor watches the Disks for all machines * * @author $Author: ajm $ - * @version $Id: Disk__Monitor.java,v 1.1 2001/03/09 01:22:46 ajm Exp $ + * @version $Id: Disk__Monitor.java,v 1.2 2001/03/09 03:30:55 ajm Exp $ */ public class Disk__Monitor extends MonitorSkeleton { @@ -25,7 +25,7 @@ public class Disk__Monitor extends MonitorSkeleton { /** * The current CVS revision of this class */ - public final String REVISION = "$Revision: 1.1 $"; + public final String REVISION = "$Revision: 1.2 $"; public final String DESC = "Monitors all host disks."; @@ -39,10 +39,10 @@ public class Disk__Monitor extends MonitorSkeleton { if (packet.getParam("packet.attributes.type").equals("data")) { String source = packet.getParam("packet.attributes.machine_name"); if (!_hosts.containsKey(source)) { - _hosts.put(source, new Register(source, _name, 1)); + _hosts.put(source, new HashMap()); } - Register reg = (Register) _hosts.get(source); + HashMap diskRegisters = (HashMap) _hosts.get(source); // a tempory holder for all the disk attributes we find ArrayList disks = new ArrayList(); @@ -86,6 +86,15 @@ public class Disk__Monitor extends MonitorSkeleton { // *** now process this disk *** + // check if we've seen this disk before on a previous run + // if not, we need to create a register for it + if(!diskRegisters.containsKey(diskNumber)) { + diskRegisters.put(diskNumber, new Register(source, _name)); + } + + // get the register for this disk + Register reg = (Register) diskRegisters.get(diskNumber); + // get the packet data double diskTotal, diskAvail; try { @@ -114,7 +123,7 @@ public class Disk__Monitor extends MonitorSkeleton { // say which disk had the problem String attributeName = "Disk in use % on " + mount + " (" + device + ")"; - processAlert(newThreshold, 0, attributeName, reg, source, strDiskInUse); + processAlert(newThreshold, attributeName, reg, source, strDiskInUse); } } }