You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whirr.apache.org by as...@apache.org on 2012/03/21 16:56:39 UTC
svn commit: r1303452 - in /whirr/trunk: CHANGES.txt
core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
Author: asavu
Date: Wed Mar 21 15:56:39 2012
New Revision: 1303452
URL: http://svn.apache.org/viewvc?rev=1303452&view=rev
Log:
WHIRR-464. Do not fail if whirr.cluster-user already exists on the remote machine (Rodrigo Duarte Sousa via Andrei Savu)
Modified:
whirr/trunk/CHANGES.txt
whirr/trunk/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
Modified: whirr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/whirr/trunk/CHANGES.txt?rev=1303452&r1=1303451&r2=1303452&view=diff
==============================================================================
--- whirr/trunk/CHANGES.txt (original)
+++ whirr/trunk/CHANGES.txt Wed Mar 21 15:56:39 2012
@@ -73,6 +73,9 @@ Trunk (unreleased changes)
WHIRR-551. Upgrade to jclouds 1.3.2 (Andrei Savu)
+ WHIRR-464. Do not fail if whirr.cluster-user already exists on the
+ remote machine (Rodrigo Duarte Sousa via Andrei Savu)
+
BUG FIXES
WHIRR-555. Fix java install script: $(...) -> `...` (kve)
Modified: whirr/trunk/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
URL: http://svn.apache.org/viewvc/whirr/trunk/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java?rev=1303452&r1=1303451&r2=1303452&view=diff
==============================================================================
--- whirr/trunk/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java (original)
+++ whirr/trunk/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java Wed Mar 21 15:56:39 2012
@@ -42,6 +42,7 @@ import java.net.MalformedURLException;
import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
import static org.jclouds.scriptbuilder.domain.Statements.appendFile;
+import static org.jclouds.scriptbuilder.domain.Statements.createOrOverwriteFile;
import static org.jclouds.scriptbuilder.domain.Statements.interpret;
import static org.jclouds.scriptbuilder.domain.Statements.newStatementList;
@@ -88,7 +89,7 @@ public class BootstrapTemplate {
"/tmp/logs",// location of stdout.log and stderr.log
ImmutableMap.of("newUser", user, "defaultHome", "/home/users"), // variables
ImmutableList.<Statement> of(
- createUserWithPublicAndPrivateKey(user, publicKey, privateKey),
+ ensureUserExistsWithPublicAndPrivateKey(user, publicKey, privateKey),
makeSudoersOnlyPermitting(user),
statement)
);
@@ -123,22 +124,27 @@ public class BootstrapTemplate {
}
// must be used inside InitBuilder, as this sets the shell variables used in this statement
- private static Statement createUserWithPublicAndPrivateKey(String username,
+ private static Statement ensureUserExistsWithPublicAndPrivateKey(String username,
String publicKey, String privateKey) {
// note directory must be created first
return newStatementList(
interpret(
- "mkdir -p $DEFAULT_HOME/$NEW_USER/.ssh",
- "useradd --shell /bin/bash -d $DEFAULT_HOME/$NEW_USER $NEW_USER\n"),
+ "USER_HOME=$DEFAULT_HOME/$NEW_USER",
+ "mkdir -p $USER_HOME/.ssh",
+ "useradd --shell /bin/bash -d $USER_HOME $NEW_USER",
+ "[ $? -ne 0 ] && USER_HOME=$(grep $NEW_USER /etc/passwd | cut -d \":\" -f6)\n"),
appendFile(
- "$DEFAULT_HOME/$NEW_USER/.ssh/authorized_keys",
+ "$USER_HOME/.ssh/authorized_keys",
Splitter.on('\n').split(publicKey)),
- appendFile(
- "$DEFAULT_HOME/$NEW_USER/.ssh/id_rsa",
+ createOrOverwriteFile(
+ "$USER_HOME/.ssh/id_rsa.pub",
+ Splitter.on('\n').split(publicKey)),
+ createOrOverwriteFile(
+ "$USER_HOME/.ssh/id_rsa",
Splitter.on('\n').split(privateKey)),
interpret(
- "chmod 400 $DEFAULT_HOME/$NEW_USER/.ssh/*",
- "chown -R $NEW_USER $DEFAULT_HOME/$NEW_USER\n"));
+ "chmod 400 $USER_HOME/.ssh/*",
+ "chown -R $NEW_USER $USER_HOME\n"));
}
// must be used inside InitBuilder, as this sets the shell variables used in this statement