[
https://issues.apache.org/jira/browse/CLOUDSTACK-9299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15273991#comment-15273991
]
ASF GitHub Bot commented on CLOUDSTACK-9299:
--------------------------------------------
Github user jburwell commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1502#discussion_r62325553
--- Diff:
utils/src/main/java/org/apache/cloudstack/utils/process/ProcessRunner.java ---
@@ -0,0 +1,111 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package org.apache.cloudstack.utils.process;
+
+import org.apache.log4j.Logger;
+
+import java.io.IOException;
+import java.util.List;
+
+public class ProcessRunner {
+ public static final Logger LOG = Logger.getLogger(ProcessRunner.class);
+
+ private String stdOutput;
+ private String stdError;
+ private int returnCode = -1;
+
+ public String getStdOutput() {
+ return stdOutput;
+ }
+
+ public void setStdOutput(String stdOutput) {
+ this.stdOutput = stdOutput;
+ }
+
+ public String getStdError() {
+ return stdError;
+ }
+
+ public void setStdError(String stdError) {
+ this.stdError = stdError;
+ }
+
+ public int getReturnCode() {
+ return returnCode;
+ }
+
+ public void setReturnCode(int returnCode) {
+ this.returnCode = returnCode;
+ }
+
+ public static ProcessRunner executeCommands(List<String> commands,
long timeOutSeconds) {
+ ProcessRunner result = new ProcessRunner();
+ try {
+ Process process = new
ProcessBuilder().command(commands).start();
+ StreamGobbler stdInputGobbler = new
StreamGobbler(process.getInputStream());
+ StreamGobbler stdErrorGobbler = new
StreamGobbler(process.getErrorStream());
+ stdInputGobbler.start();
+ stdErrorGobbler.start();
+
+ if (timeOutSeconds > 0) {
+ ProcessWaitForThread worker = new
ProcessWaitForThread(process);
--- End diff --
I am concerned about unbounded thread growth here. Please consider using a
bounded ``Executor`` and a
[``ListenableFuture``](https://github.com/google/guava/wiki/ListenableFutureExplained)
here. It would also remove the need for the ``ProcessWaitForThread`` class.
> Out-of-band Management for CloudStack
> -------------------------------------
>
> Key: CLOUDSTACK-9299
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9299
> Project: CloudStack
> Issue Type: New Feature
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Reporter: Rohit Yadav
> Assignee: Rohit Yadav
> Fix For: 4.9.0, Future
>
>
> Support access to a host’s out-of-band management interface (e.g. IPMI, iLO,
> DRAC, etc.) to manage host power operations (on/off etc.) and querying
> current power state.
> FS:
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Out-of-band+Management+for+CloudStack
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)