This is an automated email from the ASF dual-hosted git repository.

duncangrant pushed a commit to branch winrmtaskfactory
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit f0586759c5099d93f07611319d71c26fe71ea190
Author: Duncan Grant <duncan.gr...@cloudsoft.io>
AuthorDate: Tue Nov 10 08:19:49 2020 +0000

    installTo for winrm supports urls
---
 .../brooklyn/api/location/MachineLocation.java     | 12 ------
 .../brooklyn/location/ssh/SshMachineLocation.java  |  6 ---
 .../brooklyn/core/location/SimulatedLocation.java  | 30 ---------------
 .../location/winrm/WinRmMachineLocation.java       | 42 +++-----------------
 .../core/internal/winrm/winrm4j/Winrm4jTool.java   | 45 +++++++++-------------
 5 files changed, 24 insertions(+), 111 deletions(-)

diff --git 
a/api/src/main/java/org/apache/brooklyn/api/location/MachineLocation.java 
b/api/src/main/java/org/apache/brooklyn/api/location/MachineLocation.java
index 508c5d4..d207886 100644
--- a/api/src/main/java/org/apache/brooklyn/api/location/MachineLocation.java
+++ b/api/src/main/java/org/apache/brooklyn/api/location/MachineLocation.java
@@ -48,19 +48,7 @@ public interface MachineLocation extends 
AddressableLocation, HasNetworkAddresse
 
     String getUser();
 
-    int execCommands(String summaryForLogging, List<String> commands);
-
-    int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands);
-
-    int execCommands(String summaryForLogging, List<String> commands, 
Map<String, ?> env);
-
     int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env);
 
-    int execScript(String summaryForLogging, List<String> commands);
-
-    int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands);
-
-    int execScript(String summaryForLogging, List<String> commands, 
Map<String, ?> env);
-
     int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env);
 }
diff --git 
a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java 
b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
index 14df87d..d5ed481 100644
--- 
a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
+++ 
b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
@@ -699,15 +699,12 @@ public class SshMachineLocation extends 
AbstractMachineLocation implements Machi
      * and/or {@code commandPrepend} and {@code commandAppend} similar to
      * (currently supported in SshjTool) {@code separator}.)
      */
-    @Override
     public int execCommands(String summaryForLogging, List<String> commands) {
         return execCommands(MutableMap.<String,Object>of(), summaryForLogging, 
commands, MutableMap.<String,Object>of());
     }
-    @Override
     public int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands) {
         return execCommands(props, summaryForLogging, commands, 
MutableMap.<String,Object>of());
     }
-    @Override
     public int execCommands(String summaryForLogging, List<String> commands, 
Map<String, ?> env) {
         return execCommands(MutableMap.<String,Object>of(), summaryForLogging, 
commands, env);
     }
@@ -723,15 +720,12 @@ public class SshMachineLocation extends 
AbstractMachineLocation implements Machi
      * flags 'noStdoutLogging' and 'noStderrLogging' are set. To set a logging 
prefix, use
      * the flag 'logPrefix'.
      */
-    @Override
     public int execScript(String summaryForLogging, List<String> commands) {
         return execScript(MutableMap.<String,Object>of(), summaryForLogging, 
commands, MutableMap.<String,Object>of());
     }
-    @Override
     public int execScript(Map<String,?> props, String summaryForLogging, 
List<String> commands) {
         return execScript(props, summaryForLogging, commands, 
MutableMap.<String,Object>of());
     }
-    @Override
     public int execScript(String summaryForLogging, List<String> commands, 
Map<String,?> env) {
         return execScript(MutableMap.<String,Object>of(), summaryForLogging, 
commands, env);
     }
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/location/SimulatedLocation.java 
b/core/src/test/java/org/apache/brooklyn/core/location/SimulatedLocation.java
index 41be3f5..83faa97 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/location/SimulatedLocation.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/location/SimulatedLocation.java
@@ -170,41 +170,11 @@ public class SimulatedLocation extends AbstractLocation 
implements MachineProvis
     }
 
     @Override
-    public int execCommands(String summaryForLogging, List<String> commands) {
-        return 0;
-    }
-
-    @Override
-    public int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands) {
-        return 0;
-    }
-
-    @Override
-    public int execCommands(String summaryForLogging, List<String> commands, 
Map<String, ?> env) {
-        return 0;
-    }
-
-    @Override
     public int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env) {
         return 0;
     }
 
     @Override
-    public int execScript(String summaryForLogging, List<String> commands) {
-        return 0;
-    }
-
-    @Override
-    public int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands) {
-        return 0;
-    }
-
-    @Override
-    public int execScript(String summaryForLogging, List<String> commands, 
Map<String, ?> env) {
-        return 0;
-    }
-
-    @Override
     public int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env) {
         return 0;
     }
diff --git 
a/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java
 
b/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java
index 1198697..37898f3 100644
--- 
a/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java
+++ 
b/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java
@@ -205,42 +205,12 @@ public class WinRmMachineLocation extends 
AbstractMachineLocation implements Mac
     }
 
     @Override
-    public int execCommands(String summaryForLogging, List<String> commands) {
-        return executeCommand(commands).getStatusCode();
-    }
-
-    @Override
-    public int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands) {
-        return executeCommand(props, commands).getStatusCode();
-    }
-
-    @Override
-    public int execCommands(String summaryForLogging, List<String> commands, 
Map<String, ?> env) {
-        return executeCommand(ImmutableMap.of(Winrm4jTool.ENVIRONMENT, 
env),commands).getStatusCode();
-    }
-
-    @Override
     public int execCommands(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env) {
         ImmutableMap<Object, Object> properties = 
ImmutableMap.builder().putAll(props).put(Winrm4jTool.ENVIRONMENT, env).build();
         return executeCommand(properties, commands).getStatusCode();
     }
 
     @Override
-    public int execScript(String summaryForLogging, List<String> commands) {
-        return executePsScript(commands).getStatusCode();
-    }
-
-    @Override
-    public int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands) {
-        return executePsScript(props, commands).getStatusCode();
-    }
-
-    @Override
-    public int execScript(String summaryForLogging, List<String> commands, 
Map<String, ?> env) {
-        return executePsScript(ImmutableMap.of(Winrm4jTool.ENVIRONMENT,env), 
commands).getStatusCode();
-    }
-
-    @Override
     public int execScript(Map<String, ?> props, String summaryForLogging, 
List<String> commands, Map<String, ?> env) {
         ImmutableMap<Object, Object> properties = 
ImmutableMap.builder().putAll(props).put(Winrm4jTool.ENVIRONMENT, env).build();
         return executePsScript(properties, commands).getStatusCode();
@@ -556,12 +526,12 @@ public class WinRmMachineLocation extends 
AbstractMachineLocation implements Mac
             sgsO.setLogPrefix("[curl @ "+getAddress()+":stdout] ").start();
             sgsE.setLogPrefix("[curl @ "+getAddress()+":stderr] ").start();
             Map<String, ?> winrmProps = MutableMap.<String, 
Object>builder().putAll(props).put("out", outO).put("err", outE).build();
-//            int result = execScript(winrmProps,"",ImmutableList.of(
-//                    "$WebClient = New-Object System.Net.WebClient",
-//                    "$WebClient.DownloadFile(" + url + "," + destPath + ")"
-//            ));
-
-            int result = 1;
+            ImmutableList<String> commands = ImmutableList.of(
+                    "echo $WebClient = New-Object System.Net.WebClient > 
C:\\temp.ps1",
+                    "echo $WebClient.DownloadFile(" + url + "," + destPath + 
") >> C:\\temp.ps1",
+                    "powershell -c c:\\temp.ps1"
+            );
+            int result = execCommands(winrmProps,"", commands, 
ImmutableMap.of());
 
             if (result != 0) {
                 LOG.debug("installing {} to {} on {}, curl failed, attempting 
local fetch and copy", new Object[] { url, destPath, this });
diff --git 
a/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/winrm4j/Winrm4jTool.java
 
b/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/winrm4j/Winrm4jTool.java
index 784e7d1..4295168 100644
--- 
a/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/winrm4j/Winrm4jTool.java
+++ 
b/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/winrm4j/Winrm4jTool.java
@@ -115,19 +115,12 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
 
     @Override
     public org.apache.brooklyn.util.core.internal.winrm.WinRmToolResponse 
executeCommand(final List<String> commands) {
-        return exec(new Function<io.cloudsoft.winrm4j.winrm.WinRmTool, 
io.cloudsoft.winrm4j.winrm.WinRmToolResponse>() {
-            @Override public WinRmToolResponse 
apply(io.cloudsoft.winrm4j.winrm.WinRmTool tool) {
-                OutputStream outputStream = bag.get(ShellTool.PROP_OUT_STREAM);
-                OutputStream errorStream = bag.get(ShellTool.PROP_ERR_STREAM);
-                try(Writer out = outputStream != null ? new 
OutputStreamWriter(outputStream): new StringWriter();
-                Writer err = errorStream != null ? new 
OutputStreamWriter(errorStream): new StringWriter()) {
-                    return tool.executeCommand(commands, out, err);
-                } catch (IOException e) {
-                    // TODO Duncan
-                    e.printStackTrace();
-                    return null;
-                }
-            }
+        return exec(tool -> {
+            OutputStream outputStream = bag.get(ShellTool.PROP_OUT_STREAM);
+            OutputStream errorStream = bag.get(ShellTool.PROP_ERR_STREAM);
+            Writer out = outputStream != null ? new 
OutputStreamWriter(outputStream): new StringWriter();
+            Writer err = errorStream != null ? new 
OutputStreamWriter(errorStream): new StringWriter();
+            return tool.executeCommand(commands, out, err);
         });
     }
 
@@ -136,17 +129,15 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
     public org.apache.brooklyn.util.core.internal.winrm.WinRmToolResponse 
executeScript(final List<String> commands) {
         return executeCommand(commands);
     }
-    
+
     @Override
     public org.apache.brooklyn.util.core.internal.winrm.WinRmToolResponse 
executePs(final List<String> commands) {
-        return exec(new Function<io.cloudsoft.winrm4j.winrm.WinRmTool, 
io.cloudsoft.winrm4j.winrm.WinRmToolResponse>() {
-            @Override public WinRmToolResponse 
apply(io.cloudsoft.winrm4j.winrm.WinRmTool tool) {
-                OutputStream outputStream = bag.get(ShellTool.PROP_OUT_STREAM);
-                OutputStream errorStream = bag.get(ShellTool.PROP_ERR_STREAM);
-                Writer out = outputStream != null ? new 
OutputStreamWriter(outputStream): new StringWriter();
-                Writer err = errorStream != null ? new 
OutputStreamWriter(errorStream): new StringWriter();
-                return tool.executePs(commands, out, err);
-            }
+        return exec(tool -> {
+            OutputStream outputStream = bag.get(ShellTool.PROP_OUT_STREAM);
+            OutputStream errorStream = bag.get(ShellTool.PROP_ERR_STREAM);
+            Writer out = outputStream != null ? new 
OutputStreamWriter(outputStream): new StringWriter();
+            Writer err = errorStream != null ? new 
OutputStreamWriter(errorStream): new StringWriter();
+            return tool.executePs(commands, out, err);
         });
     }
 
@@ -161,9 +152,9 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
             int i=0;
             while ((bytesRead = source.read(inputData)) > 0) {
                 i++;
-                
+
                 LOG.debug("Copying chunk "+i+" to "+destination+" on "+host);
-                
+
                 byte[] chunk;
                 if (bytesRead == chunkSize) {
                     chunk = inputData;
@@ -176,7 +167,7 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
                 expectedFileSize += bytesRead;
             }
             LOG.debug("Finished copying to "+destination+" on "+host);
-            
+
             return new 
org.apache.brooklyn.util.core.internal.winrm.WinRmToolResponse("", "", 0);
         } catch (java.io.IOException e) {
             throw propagate(e, "Failed copying to server at "+destination);
@@ -186,7 +177,7 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
     private org.apache.brooklyn.util.core.internal.winrm.WinRmToolResponse 
exec(Function<io.cloudsoft.winrm4j.winrm.WinRmTool, 
io.cloudsoft.winrm4j.winrm.WinRmToolResponse> task) {
         Collection<Throwable> exceptions = Lists.newArrayList();
         Stopwatch totalStopwatch = Stopwatch.createStarted();
-        
+
         for (int i = 0; i < execTries; i++) {
             Stopwatch stopwatch = Stopwatch.createStarted();
             Duration connectTimestamp = null;
@@ -212,7 +203,7 @@ public class Winrm4jTool implements 
org.apache.brooklyn.util.core.internal.winrm
                 String timeMsg = "total time 
"+Duration.of(totalStopwatch).toStringRounded()
                         + ", this attempt failed after 
"+Duration.of(failTimestamp).toStringRounded()
                         + (connectTimestamp != null ? ", connected in 
"+Duration.of(connectTimestamp).toStringRounded() : "");
-                
+
                 if ((i + 1) == execTries) {
                     LOG.info("Propagating exception - WinRM failed on 
"+user+"@"+host+":"+port+" "
                             + (logCredentials ? "password=" + password : "")

Reply via email to