private List<ProcessInfo> getProcessInfos() { SystemInfo systemInfo = SystemInfoFactory.createSystemInfo(); log.debug("Retrieving process table..."); long startTime = System.currentTimeMillis(); List<ProcessInfo> processInfos = null; try { processInfos = systemInfo.getAllProcesses(); } catch (UnsupportedOperationException uoe) { log.debug("Cannot perform process scan - not supported on this platform. (" + systemInfo.getClass() + ")"); } long elapsedTime = System.currentTimeMillis() - startTime; if (log.isDebugEnabled()) { log.debug("Retrieval of process table took " + elapsedTime + " ms."); } return processInfos; }
/** * Enables or disables the native layer. * @param tokens tokenized command line tokens[0] is the command itself */ private void doNative(String[] tokens) { String what = tokens[1]; if (what.startsWith("e")) { SystemInfoFactory.enableNativeSystemInfo(); System.out.println("Native layer enabled."); } else if (what.startsWith("d")) { SystemInfoFactory.disableNativeSystemInfo(); System.out.println("Native layer disabled."); } else if (what.startsWith("s")) { System.out.println("Native layer is:"); System.out.println(SystemInfoFactory.isNativeSystemInfoDisabled() ? "Disabled" : "Enabled"); if (!SystemInfoFactory.isNativeSystemInfoDisabled()) { System.out.println(SystemInfoFactory.isNativeSystemInfoAvailable() ? "Available" : "Not Available"); System.out.println(SystemInfoFactory.isNativeSystemInfoInitialized() ? "Initialized" : "Not initialized"); } } else { System.err.println("Unknown option. Only 'e', 'd' and 's' are applicable (enable/disable/status)"); return; } }
public ProcessExecutionResults executeProcess(ProcessExecution processExecution) { // TODO: doesn't look like SIGAR has an API to fork/execute processes? fallback to using the Java way return SystemInfoFactory.createJavaSystemInfo().executeProcess(processExecution); }
public static boolean isSigarAvailable() { if (!SystemInfoFactory.isNativeSystemInfoDisabled() && SystemInfoFactory.isNativeSystemInfoAvailable()) { // its available, but it may not yet have been initialized. If it has not been initialized, // make a call that forces it to be initialized and loaded. 99% of the time, the native layer // will already be initialized and this check will be very fast. if (!SystemInfoFactory.isNativeSystemInfoInitialized()) { SystemInfoFactory.getNativeSystemInfoVersion(); } return true; } else { return false; } }
/** * If the native system is both {@link #isNativeSystemInfoAvailable() available} and * {@link #isNativeSystemInfoDisabled() enabled}, this will return the native system's version string. Otherwise, a * generic Java version message is returned. * * @return native system version string */ public static synchronized String getNativeSystemInfoVersion() { String version = null; Throwable error = null; initialize(); // make sure we've loaded the native libraries, if appropriate if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { try { version = "Version=" + invokeApi(NativeApi.VERSION_STRING) + " (" + invokeApi(NativeApi.BUILD_DATE) + "); Native version=" + invokeApi(NativeApi.NATIVE_VERSION_STRING) + " (" + invokeApi(NativeApi.NATIVE_BUILD_DATE) + ")"; } catch (Throwable t) { error = t; } } if (version == null) { version = "Native system not supported - Java version is " + System.getProperty("java.version"); if (error != null) { version += " : " + error; } } return version; }
/** * Returns the appropriate {@link SystemInfo} implementation based on the platform/operating system the JVM is * running on. * * @return a {@link NativeSystemInfo} implementation or a {@link JavaSystemInfo} if the native libraries are * {@link #isNativeSystemInfoAvailable() not available for the platform} or have been * {@link #disableNativeSystemInfo() disabled}. */ public static synchronized SystemInfo createSystemInfo() { if (cachedSystemInfo == null) { initialize(); // make sure we've loaded the native libraries, if appropriate SystemInfo nativePlatform = null; if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { // we could use SIGAR here, but this should be enough if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) { nativePlatform = new WindowsNativeSystemInfo(); } else { // we either don't know what OS it is or we don't have a specific native subclass for it; // but we know we have a native library for it! so just create the generic NativePlatform to represent it. nativePlatform = new NativeSystemInfo(); } } if (nativePlatform == null) { nativePlatform = javaSystemInfo; } cachedSystemInfo = nativePlatform; } return cachedSystemInfo; }
if (!isNativeSystemInfoDisabled()) { try { Class<?> clazz = Class.forName(NATIVE_LIBRARY_CLASS_NAME); nativeApis.put(NativeApi.NATIVE_BUILD_DATE, clazz.getField(NativeApi.NATIVE_BUILD_DATE.name())); invokeApi(NativeApi.load);
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (SystemInfoFactory.isNativeSystemInfoDisabled()) { throw new SystemInfoException("Native system has been disabled");
URL jarLocation; if (isNativeSystemInfoAvailable()) { rootDir = System.getProperty("rhq.native-libraries-root-directory"); if (rootDir == null) {
public CassandraClusterManager(DeploymentOptions deploymentOptions) { // Disabling native layer because according to // https://docs.jboss.org/author/display/MODULES/Native+Libraries more work than I // prefer is needed in order to properly deploy sigar's native libraries. We do not // need the native layer as we are only using the rhq-core-native-system apis for // starting cassandra nodes. // // jsanda SystemInfoFactory.disableNativeSystemInfo(); this.deploymentOptions = deploymentOptions; try { this.deploymentOptions.load(); } catch (IOException e) { log.error("Failed to load deployment options", e); throw new IllegalStateException("An initialization error occurred.", e); } }
public static boolean isSigarAvailable() { if (!SystemInfoFactory.isNativeSystemInfoDisabled() && SystemInfoFactory.isNativeSystemInfoAvailable()) { // its available, but it may not yet have been initialized. If it has not been initialized, // make a call that forces it to be initialized and loaded. 99% of the time, the native layer // will already be initialized and this check will be very fast. if (!SystemInfoFactory.isNativeSystemInfoInitialized()) { SystemInfoFactory.getNativeSystemInfoVersion(); } return true; } else { return false; } }
/** * If the native system is both {@link #isNativeSystemInfoAvailable() available} and * {@link #isNativeSystemInfoDisabled() enabled}, this will return the native system's version string. Otherwise, a * generic Java version message is returned. * * @return native system version string */ public static synchronized String getNativeSystemInfoVersion() { String version = null; Throwable error = null; initialize(); // make sure we've loaded the native libraries, if appropriate if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { try { version = "Version=" + invokeApi(NativeApi.VERSION_STRING) + " (" + invokeApi(NativeApi.BUILD_DATE) + "); Native version=" + invokeApi(NativeApi.NATIVE_VERSION_STRING) + " (" + invokeApi(NativeApi.NATIVE_BUILD_DATE) + ")"; } catch (Throwable t) { error = t; } } if (version == null) { version = "Native system not supported - Java version is " + System.getProperty("java.version"); if (error != null) { version += " : " + error; } } return version; }
/** * Returns the appropriate {@link SystemInfo} implementation based on the platform/operating system the JVM is * running on. * * @return a {@link NativeSystemInfo} implementation or a {@link JavaSystemInfo} if the native libraries are * {@link #isNativeSystemInfoAvailable() not available for the platform} or have been * {@link #disableNativeSystemInfo() disabled}. */ public static synchronized SystemInfo createSystemInfo() { if (cachedSystemInfo == null) { initialize(); // make sure we've loaded the native libraries, if appropriate SystemInfo nativePlatform = null; if (!isNativeSystemInfoDisabled() && isNativeSystemInfoAvailable()) { // we could use SIGAR here, but this should be enough if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) { nativePlatform = new WindowsNativeSystemInfo(); } else { // we either don't know what OS it is or we don't have a specific native subclass for it; // but we know we have a native library for it! so just create the generic NativePlatform to represent it. nativePlatform = new NativeSystemInfo(); } } if (nativePlatform == null) { nativePlatform = javaSystemInfo; } cachedSystemInfo = nativePlatform; } return cachedSystemInfo; }
if (!isNativeSystemInfoDisabled()) { try { Class<?> clazz = Class.forName(NATIVE_LIBRARY_CLASS_NAME); nativeApis.put(NativeApi.NATIVE_BUILD_DATE, clazz.getField(NativeApi.NATIVE_BUILD_DATE.name())); invokeApi(NativeApi.load);
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (SystemInfoFactory.isNativeSystemInfoDisabled()) { throw new SystemInfoException("Native system has been disabled");
URL jarLocation; if (isNativeSystemInfoAvailable()) { rootDir = System.getProperty("rhq.native-libraries-root-directory"); if (rootDir == null) {
private PluginContext createPluginContext(String pluginName) { SystemInfo sysInfo = SystemInfoFactory.createSystemInfo(); File dataDir = new File(pluginContainerConfiguration.getDataDirectory(), pluginName); File tmpDir = pluginContainerConfiguration.getTemporaryDirectory(); String pcName = pluginContainerConfiguration.getContainerName(); PluginContext context = new PluginContext(pluginName, sysInfo, tmpDir, dataDir, pcName); return context; }
boolean nativeSystemInfoDisabled = SystemInfoFactory.isNativeSystemInfoDisabled(); ResourceType resourceType = this.resourceContext.getResourceType(); List<String> logFilePaths = getLogFilePaths(enabledEventSources);
public ProcessExecutionResults executeProcess(ProcessExecution processExecution) { // TODO: doesn't look like SIGAR has an API to fork/execute processes? fallback to using the Java way return SystemInfoFactory.createJavaSystemInfo().executeProcess(processExecution); }
private ProcessExecutionResults startNode(File basedir) { if (log.isDebugEnabled()) { log.debug("Starting node at " + basedir); } File binDir = new File(basedir, "bin"); File startScript; SystemInfo systemInfo = SystemInfoFactory.createSystemInfo(); ProcessExecution startScriptExe; if (systemInfo.getOperatingSystemType() == OperatingSystemType.WINDOWS) { startScript = new File(binDir, "cassandra.bat"); startScriptExe = createProcessExecution(null, startScript); } else { startScript = new File(binDir, "cassandra"); startScriptExe = createProcessExecution(null, startScript); startScriptExe.addArguments(Arrays.asList("-p", "cassandra.pid")); } startScriptExe.setWaitForCompletion(0); ProcessExecutionResults results = systemInfo.executeProcess(startScriptExe); if (log.isDebugEnabled()) { log.debug(startScript + " returned with exit code [" + results.getExitCode() + "]"); } return results; }