Add sudo to setup of hosts file.

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/7e97a26b
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/7e97a26b
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/7e97a26b

Branch: refs/heads/master
Commit: 7e97a26b9e79ab8e04c4052d4a2a5658f6f4d62d
Parents: cf65e18
Author: Geoff Macartney <geoff.macart...@cloudsoftcorp.com>
Authored: Fri Mar 11 22:35:36 2016 +0000
Committer: Geoff Macartney <geoff.macart...@cloudsoftcorp.com>
Committed: Fri Mar 11 22:35:36 2016 +0000

----------------------------------------------------------------------
 .../entity/cm/ansible/AnsiblePlaybookTasks.java | 25 ++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/7e97a26b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
----------------------------------------------------------------------
diff --git 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
index d22ccab..0589ee7 100644
--- 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
+++ 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsiblePlaybookTasks.java
@@ -19,10 +19,10 @@
 package org.apache.brooklyn.entity.cm.ansible;
 
 import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.mgmt.TaskAdaptable;
 import org.apache.brooklyn.api.mgmt.TaskFactory;
 import org.apache.brooklyn.core.effector.EffectorTasks;
 import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks;
+import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.apache.brooklyn.util.core.task.system.ProcessTaskFactory;
@@ -35,7 +35,6 @@ import org.yaml.snakeyaml.DumperOptions;
 import org.yaml.snakeyaml.Yaml;
 
 import static org.apache.brooklyn.core.effector.ssh.SshEffectorTasks.ssh;
-import static org.apache.brooklyn.util.ssh.BashCommands.pipeTextToFile;
 import static org.apache.brooklyn.util.ssh.BashCommands.sudo;
 
 public class AnsiblePlaybookTasks {
@@ -110,7 +109,25 @@ public class AnsiblePlaybookTasks {
     }
 
     public static TaskFactory<?> setUpHostsFile(String installDir, boolean 
force) {
-        return ssh(pipeTextToFile("localhost ansible_connection=local", 
"/etc/ansible/hosts"))
-            .summary("write hosts file");    }
+        final String hostsFile = "/etc/ansible/hosts";
+        final String tempFile = "/tmp/hosts";
+        String checkInstalled = !force ? "which ansible || " : "";
+        return sshCommands(
+                checkInstalled + " {",
+                sudo("rm -f " + hostsFile),
+                "echo 'localhost ansible_connection=local' > " + tempFile,
+                sudo("mv " + tempFile + " " + hostsFile),
+                "}"
+            )
+            .requiringExitCodeZero()
+            .summary("write hosts file");
+    }
+
+
+    public static SshEffectorTasks.SshEffectorTaskFactory<Integer> 
sshCommands(String line, String... lines) {
+        final MutableList.Builder<String> builder = 
MutableList.<String>builder().add(line);
+        builder.addAll(lines);
+        return ssh(Strings.join(builder.build(), "\n"));
+    }
 }
 

Reply via email to