|
From: <do...@hy...> - 2007-03-26 02:18:19
|
Author: dougm Date: 2007-03-25 18:18:16 -0800 (Sun, 25 Mar 2007) New Revision: 3902 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=3902 Modified: trunk/plugins/system/src/org/hyperic/hq/plugin/system/SystemLiveDataPlugin.java Log: add kill command Modified: trunk/plugins/system/src/org/hyperic/hq/plugin/system/SystemLiveDataPlugin.java =================================================================== --- trunk/plugins/system/src/org/hyperic/hq/plugin/system/SystemLiveDataPlugin.java 2007-03-26 02:17:41 UTC (rev 3901) +++ trunk/plugins/system/src/org/hyperic/hq/plugin/system/SystemLiveDataPlugin.java 2007-03-26 02:18:16 UTC (rev 3902) @@ -27,6 +27,7 @@ import org.hyperic.hq.product.LiveDataPlugin; import org.hyperic.hq.product.PluginException; +import org.hyperic.hq.product.ProcessControlPlugin; import org.hyperic.hq.product.SigarMeasurementPlugin; import org.hyperic.sigar.Sigar; import org.hyperic.sigar.SigarException; @@ -36,6 +37,7 @@ public class SystemLiveDataPlugin extends LiveDataPlugin { public static final String PROP_PID = "process.pid"; + public static final String PROP_SIGNAL = "process.signal"; private static final String CMD_CPUINFO = "cpuinfo"; private static final String CMD_CPU = "cpu"; @@ -43,6 +45,7 @@ private static final String CMD_FILESYSTEM = "filesystem"; private static final String CMD_TOP = "top"; private static final String CMD_PROCESS = "process"; + private static final String CMD_KILL = "kill"; private static final String CMD_NETSTAT = "netstat"; private static final String CMD_IFCONFIG = "ifconfig"; private static final String CMD_WHO = "who"; @@ -54,11 +57,26 @@ CMD_FILESYSTEM, CMD_TOP, CMD_PROCESS, + CMD_KILL, CMD_NETSTAT, CMD_IFCONFIG, CMD_WHO }; + private long getPid(ConfigResponse config) + throws PluginException { + + String pid = config.getValue(PROP_PID); + if (pid == null) { + throw new PluginException("Missing " + PROP_PID); + } + try { + return Long.parseLong(pid); + } catch (NumberFormatException e) { + throw new PluginException("Invalid pid: " + pid); + } + } + public Object getData(String command, ConfigResponse config) throws PluginException { @@ -86,6 +104,17 @@ return ProcessDetailData.gather(sigar, sigar.getPid()); } return ProcessDetailData.gather(sigar, pid); + } else if (command.equals(CMD_KILL)) { + String signame = config.getValue(PROP_SIGNAL); + if (signame == null) { + signame = ProcessControlPlugin.SIGKILL; + } + + long pid = getPid(config); + int signal = ProcessControlPlugin.getSignal(signame); + + sigar.kill(pid, signal); + return null; } else if (command.equals(CMD_NETSTAT)) { NetstatData data = new NetstatData(); String flags = config.getValue("netstat.flags"); |