You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by m4...@apache.org on 2017/05/19 17:04:21 UTC

[02/12] brooklyn-server git commit: Delete ShellUtils (unused & deprecated since 0.7)

Delete ShellUtils (unused & deprecated since 0.7)

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/093a8d19
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/093a8d19
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/093a8d19

Branch: refs/heads/master
Commit: 093a8d1968d5c9adb8b6b2021ff7c3b40568dd70
Parents: 3c35a1e
Author: Aled Sage <al...@gmail.com>
Authored: Wed May 17 20:25:56 2017 +0200
Committer: Aled Sage <al...@gmail.com>
Committed: Fri May 19 10:46:35 2017 +0100

----------------------------------------------------------------------
 .../org/apache/brooklyn/util/ShellUtils.java    | 185 -------------------
 1 file changed, 185 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/093a8d19/utils/common/src/main/java/org/apache/brooklyn/util/ShellUtils.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/ShellUtils.java b/utils/common/src/main/java/org/apache/brooklyn/util/ShellUtils.java
deleted file mode 100644
index 792d8d6..0000000
--- a/utils/common/src/main/java/org/apache/brooklyn/util/ShellUtils.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * 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.brooklyn.util;
-
-import groovy.io.GroovyPrintStream;
-import groovy.time.TimeDuration;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.stream.StreamGobbler;
-import org.apache.brooklyn.util.stream.Streams;
-import org.apache.brooklyn.util.text.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Maps;
-import com.google.common.io.Closer;
-
-/**
- * @deprecated since 0.7; does not return exit status, stderr, etc, so utility is of very limited use; and is not used in core brooklyn at all!;
- * use ProcessTool or SystemProcessTaskFactory.
- */
-@Deprecated
-public class ShellUtils {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ShellUtils.class);
-
-    public static long TIMEOUT = 60*1000;
-
-    /**
-     * Executes the given command.
-     * <p>
-     * Uses {@code bash -l -c cmd} (to have a good PATH set), and defaults for other fields.
-     * <p>
-     * requires a logger and a context object (whose toString is used in the logger and in error messages)
-     * optionally takes a string to use as input to the command
-     *
-     * @see {@link #exec(String, String, Logger, Object)}
-     */
-    public static String[] exec(String cmd, Logger log, Object context) {
-        return exec(cmd, null, log, context);
-    }
-    /** @see {@link #exec(String[], String[], File, String, Logger, Object)} */
-    public static String[] exec(String cmd, String input, Logger log, Object context) {
-        return exec(new String[] { "bash", "-l", "-c", cmd }, null, null, input, log, context);
-    }
-    /** @see {@link #exec(Map, String[], String[], File, String, Logger, Object)} */
-    public static String[] exec(Map<?,?> flags, String cmd, Logger log, Object context) {
-        return exec(flags, new String[] { "bash", "-l", "-c", cmd }, null, null, null, log, context);
-    }
-    /** @see {@link #exec(Map, String[], String[], File, String, Logger, Object)} */
-    public static String[] exec(Map<?,?> flags, String cmd, String input, Logger log, Object context) {
-        return exec(flags, new String[] { "bash", "-l", "-c", cmd }, null, null, input, log, context);
-    }
-    /** @see {@link #exec(Map, String[], String[], File, String, Logger, Object)} */
-    public static String[] exec(String[] cmd, String[] envp, File dir, String input, Logger log, Object context) {
-        return exec(Maps.newLinkedHashMap(), cmd, envp, dir, input, log, context);
-    }
-
-    private static long getTimeoutMs(Map<?,?> flags) {
-        long timeout = TIMEOUT;
-
-        Object tf = flags.get("timeout");
-
-        if (tf instanceof Number) {
-            timeout = ((Number) tf).longValue();
-        } else if (tf instanceof TimeDuration) {
-            LOG.warn("Use of groovy.time.TimeuDuration is deprecated in ShellUtils, for configuring timeout");
-            timeout = ((TimeDuration) tf).toMilliseconds();
-        }
-
-        //if (tf != null) timeout = tf;
-
-        return timeout;
-    }
-
-    /**
-     * Executes the given command.
-     * <p>
-     * Uses the given environmnet (inherited if null) and cwd ({@literal .} if null),
-     * feeding it the given input stream (if not null) and logging I/O at debug (if not null).
-     * <p>
-     * flags:  timeout (Duration), 0 for forever; default 60 seconds
-     *
-     * @throws IllegalStateException if return code non-zero
-     * @return lines from stdout.
-     */
-    public static String[] exec(Map<?,?> flags, final String[] cmd, String[] envp, File dir, String input, final Logger log, final Object context) {
-        if (log.isDebugEnabled()) {
-            log.debug("Running local command: {}% {}", context, Strings.join(cmd, " "));
-        }
-        Closer closer = Closer.create();
-        try {
-            final Process proc = Runtime.getRuntime().exec(cmd, envp, dir); // Call *execute* on the string
-            ByteArrayOutputStream stdoutB = new ByteArrayOutputStream();
-            ByteArrayOutputStream stderrB = new ByteArrayOutputStream();
-            PrintStream stdoutP = new GroovyPrintStream(stdoutB);
-            PrintStream stderrP = new GroovyPrintStream(stderrB);
-            @SuppressWarnings("resource")
-            StreamGobbler stdoutG = new StreamGobbler(proc.getInputStream(), stdoutP, log).setLogPrefix("["+context+":stdout] ");
-            stdoutG.start();
-            closer.register(stdoutG);
-            @SuppressWarnings("resource")
-            StreamGobbler stderrG = new StreamGobbler(proc.getErrorStream(), stderrP, log).setLogPrefix("["+context+":stderr] ");
-            stderrG.start();
-            closer.register(stderrG);
-            if (input!=null && input.length()>0) {
-                proc.getOutputStream().write(input.getBytes());
-                proc.getOutputStream().flush();
-            }
-
-            final long timeout = getTimeoutMs(flags);
-            final AtomicBoolean ended = new AtomicBoolean(false);
-            final AtomicBoolean killed = new AtomicBoolean(false);
-
-            //if a timeout was specified, this thread will kill the process. This is a work around because the process.waitFor'
-            //doesn't accept a timeout.
-            Thread timeoutThread = new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    if (timeout <= 0) return;
-                    try { 
-                        Thread.sleep(timeout);
-                        if (!ended.get()) {
-                            if (log.isDebugEnabled()) {
-                                log.debug("Timeout exceeded for "+context+"% "+Strings.join(cmd, " "));
-                            }
-                            proc.destroy();
-                            killed.set(true);
-                        }
-                    } catch (Exception e) { }
-                }
-            });
-            if (timeout > 0) timeoutThread.start();
-            int exitCode = proc.waitFor();
-            ended.set(true);
-            if (timeout > 0) timeoutThread.interrupt();
-
-            stdoutG.blockUntilFinished();
-            stderrG.blockUntilFinished();
-            if (exitCode!=0 || killed.get()) {
-                String message = killed.get() ? "terminated after timeout" : "exit code "+exitCode;
-                if (log.isDebugEnabled()) {
-                    log.debug("Completed local command (problem, throwing): "+context+"% "+Strings.join(cmd, " ")+" - "+message);
-                }
-                String e = "Command failed ("+message+"): "+Strings.join(cmd, " ");
-                log.warn(e+"\n"+stdoutB+(stderrB.size()>0 ? "\n--\n"+stderrB : ""));
-                throw new IllegalStateException(e+" (details logged)");
-            }
-            if (log.isDebugEnabled()) {
-                log.debug("Completed local command: "+context+"% "+Strings.join(cmd, " ")+" - exit code 0");
-            }
-            return stdoutB.toString().split("\n");
-        } catch (IOException e) {
-            throw Exceptions.propagate(e);
-        } catch (InterruptedException e) {
-            throw Exceptions.propagate(e);
-        } finally {
-            Streams.closeQuietly(closer);
-        }
-    }
-
-}