Merge "Improve logging of persister and netconf client."
[controller.git] / opendaylight / commons / controller-maven-plugin / src / main / java / org / opendaylight / controller / maven / plugin / util / VMProcessMonitor.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.maven.plugin.util;
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.Set;
14
15 import sun.jvmstat.monitor.HostIdentifier;
16 import sun.jvmstat.monitor.MonitoredHost;
17 import sun.jvmstat.monitor.MonitoredVm;
18 import sun.jvmstat.monitor.MonitoredVmUtil;
19 import sun.jvmstat.monitor.VmIdentifier;
20
21 public class VMProcessMonitor extends ProcessMonitor {
22
23     @Override
24     public List<JavaProcess> getProcesses() {
25         Set<Integer> activeVmPids = null;
26         List<JavaProcess> result = new ArrayList<JavaProcess>();
27         MonitoredHost monitoredHost = null;
28         MonitoredVm mvm = null;
29         try {
30             monitoredHost = MonitoredHost.getMonitoredHost(
31                     new HostIdentifier((String) null));
32             activeVmPids = monitoredHost.activeVms();
33         } catch (Exception e) {
34             throw new IllegalStateException("Error accessing VM", e);
35         }
36         for (Integer vmPid : activeVmPids) {
37             try {
38                 mvm = monitoredHost.getMonitoredVm(
39                         new VmIdentifier(vmPid.toString()));
40                 JavaProcess proc = new JavaProcess(vmPid,
41                         MonitoredVmUtil.mainClass(mvm, true));
42                 proc.setSystemProperties(MonitoredVmUtil.jvmArgs(mvm));
43                 proc.setSystemProperties(MonitoredVmUtil.jvmFlags(mvm));
44                 result.add(proc);
45             } catch(Exception e2) {
46                 log("Error connecting to pid: " + vmPid + " reason:"
47                     + e2.getMessage());
48                 e2.printStackTrace();
49             } finally {
50                 if (mvm != null) {
51                     mvm.detach();
52                 }
53             }
54         }
55         return result;
56     }
57
58
59 }