Repository: jclouds Updated Branches: refs/heads/1.9.x a5ce5983a -> bdbed1ced
UserAdd: guard groupadd with check if group exists On SUSE, the â-fâ force option is not available for groupadd, so `groupadd -f wheel` returns exit code 9 if the group already exists. To avoid this, first check if the group exists. In normal usage, this doesnât matter: the script continues with the next command anyway. However, if the statements generated by UserAdd or AdminAccess are used outside of that context (e.g. by code external to jclouds), then this can cause them to fail. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/bdbed1ce Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/bdbed1ce Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/bdbed1ce Branch: refs/heads/1.9.x Commit: bdbed1ced57ba24975198be2896affd0db8c59f8 Parents: ac732a0 Author: Aled Sage <[email protected]> Authored: Thu Oct 22 23:30:26 2015 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Sun Oct 25 22:31:33 2015 +0100 ---------------------------------------------------------------------- compute/src/test/resources/initscript_with_java.sh | 2 +- compute/src/test/resources/initscript_with_jetty.sh | 2 +- compute/src/test/resources/runscript_adminUpdate.sh | 2 +- .../org/jclouds/scriptbuilder/statements/login/UserAdd.java | 2 +- .../jclouds/scriptbuilder/statements/login/UserAddTest.java | 6 +++--- scriptbuilder/src/test/resources/test_adminaccess_flipped.sh | 2 +- scriptbuilder/src/test/resources/test_adminaccess_params.sh | 2 +- .../src/test/resources/test_adminaccess_params_and_fullname.sh | 2 +- scriptbuilder/src/test/resources/test_adminaccess_standard.sh | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/compute/src/test/resources/initscript_with_java.sh ---------------------------------------------------------------------- diff --git a/compute/src/test/resources/initscript_with_java.sh b/compute/src/test/resources/initscript_with_java.sh index 0766e80..6c2d077 100644 --- a/compute/src/test/resources/initscript_with_java.sh +++ b/compute/src/test/resources/initscript_with_java.sh @@ -212,7 +212,7 @@ END_OF_JCLOUDS_SCRIPT chmod 0440 /etc/sudoers mkdir -p /home/users chmod 0755 /home/users - groupadd -f wheel + getent group wheel || groupadd -f wheel useradd -c 'defaultAdminUsername' -s /bin/bash -g wheel -m -d /home/users/defaultAdminUsername -p 'crypt(randompassword)' defaultAdminUsername mkdir -p /home/users/defaultAdminUsername/.ssh cat >> /home/users/defaultAdminUsername/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/compute/src/test/resources/initscript_with_jetty.sh ---------------------------------------------------------------------- diff --git a/compute/src/test/resources/initscript_with_jetty.sh b/compute/src/test/resources/initscript_with_jetty.sh index 87ee905..1e66242 100644 --- a/compute/src/test/resources/initscript_with_jetty.sh +++ b/compute/src/test/resources/initscript_with_jetty.sh @@ -212,7 +212,7 @@ END_OF_JCLOUDS_SCRIPT chmod 0440 /etc/sudoers mkdir -p /home/users chmod 0755 /home/users - groupadd -f wheel + getent group wheel || groupadd -f wheel useradd -c 'web' -s /bin/bash -g wheel -m -d /home/users/web -p 'crypt(randompassword)' web mkdir -p /home/users/web/.ssh cat >> /home/users/web/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/compute/src/test/resources/runscript_adminUpdate.sh ---------------------------------------------------------------------- diff --git a/compute/src/test/resources/runscript_adminUpdate.sh b/compute/src/test/resources/runscript_adminUpdate.sh index d7ebedc..eca129a 100644 --- a/compute/src/test/resources/runscript_adminUpdate.sh +++ b/compute/src/test/resources/runscript_adminUpdate.sh @@ -93,7 +93,7 @@ END_OF_JCLOUDS_SCRIPT chmod 0440 /etc/sudoers mkdir -p /over/ridden chmod 0755 /over/ridden - groupadd -f wheel + getent group wheel || groupadd -f wheel useradd -c 'foo' -s /bin/bash -g wheel -m -d /over/ridden/foo -p 'crypt(randompassword)' foo mkdir -p /over/ridden/foo/.ssh cat >> /over/ridden/foo/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/main/java/org/jclouds/scriptbuilder/statements/login/UserAdd.java ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/main/java/org/jclouds/scriptbuilder/statements/login/UserAdd.java b/scriptbuilder/src/main/java/org/jclouds/scriptbuilder/statements/login/UserAdd.java index a134120..fe48d66 100644 --- a/scriptbuilder/src/main/java/org/jclouds/scriptbuilder/statements/login/UserAdd.java +++ b/scriptbuilder/src/main/java/org/jclouds/scriptbuilder/statements/login/UserAdd.java @@ -205,7 +205,7 @@ public class UserAdd implements Statement { userAddOptions.put("-s", shell); if (!groups.isEmpty()) { for (String group : groups) - statements.add(Statements.exec("groupadd -f " + group)); + statements.add(Statements.exec("getent group " + group + " || groupadd -f " + group)); List<String> groups = Lists.newArrayList(this.groups); String primaryGroup = groups.remove(0); http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/test/java/org/jclouds/scriptbuilder/statements/login/UserAddTest.java ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/test/java/org/jclouds/scriptbuilder/statements/login/UserAddTest.java b/scriptbuilder/src/test/java/org/jclouds/scriptbuilder/statements/login/UserAddTest.java index 5322cca..76d64e6 100644 --- a/scriptbuilder/src/test/java/org/jclouds/scriptbuilder/statements/login/UserAddTest.java +++ b/scriptbuilder/src/test/java/org/jclouds/scriptbuilder/statements/login/UserAddTest.java @@ -45,13 +45,13 @@ public class UserAddTest { public void testWithGroupUNIX() { assertEquals(UserAdd.builder().login("me").group("wheel").build().render(OsFamily.UNIX), - "mkdir -p /home/users\nchmod 0755 /home/users\ngroupadd -f wheel\nuseradd -c me -s /bin/bash -g wheel -m -d /home/users/me me\nchown -R me /home/users/me\n"); + "mkdir -p /home/users\nchmod 0755 /home/users\ngetent group wheel || groupadd -f wheel\nuseradd -c me -s /bin/bash -g wheel -m -d /home/users/me me\nchown -R me /home/users/me\n"); } public void testWithGroupsUNIX() { assertEquals(UserAdd.builder().login("me").groups(ImmutableList.of("wheel", "candy")).build().render( OsFamily.UNIX), - "mkdir -p /home/users\nchmod 0755 /home/users\ngroupadd -f wheel\ngroupadd -f candy\nuseradd -c me -s /bin/bash -g wheel -G candy -m -d /home/users/me me\nchown -R me /home/users/me\n"); + "mkdir -p /home/users\nchmod 0755 /home/users\ngetent group wheel || groupadd -f wheel\ngetent group candy || groupadd -f candy\nuseradd -c me -s /bin/bash -g wheel -G candy -m -d /home/users/me me\nchown -R me /home/users/me\n"); } Function<String, String> crypt = new Function<String, String>() { @@ -63,7 +63,7 @@ public class UserAddTest { public void testWithPasswordUNIX() { String userAdd = UserAdd.builder().cryptFunction(crypt).login("me").password("password").group("wheel").build().render(OsFamily.UNIX); - assert userAdd.startsWith("mkdir -p /home/users\nchmod 0755 /home/users\ngroupadd -f wheel\nuseradd -c me -s /bin/bash -g wheel -m -d /home/users/me -p 'CRYPT'") : userAdd; + assert userAdd.startsWith("mkdir -p /home/users\nchmod 0755 /home/users\ngetent group wheel || groupadd -f wheel\nuseradd -c me -s /bin/bash -g wheel -m -d /home/users/me -p 'CRYPT'") : userAdd; assert userAdd.endsWith("' me\nchown -R me /home/users/me\n") : userAdd; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/test/resources/test_adminaccess_flipped.sh ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/test/resources/test_adminaccess_flipped.sh b/scriptbuilder/src/test/resources/test_adminaccess_flipped.sh index 5fec29a..cd2695f 100644 --- a/scriptbuilder/src/test/resources/test_adminaccess_flipped.sh +++ b/scriptbuilder/src/test/resources/test_adminaccess_flipped.sh @@ -8,7 +8,7 @@ END_OF_FILE chmod 0440 /etc/sudoers mkdir -p /home/users chmod 0755 /home/users -groupadd -f wheel +getent group wheel || groupadd -f wheel useradd -c defaultAdminUsername -s /bin/bash -g wheel -d /home/users/defaultAdminUsername -p 'crypt(0)' defaultAdminUsername mkdir -p /home/users/defaultAdminUsername/.ssh cat >> /home/users/defaultAdminUsername/.ssh/authorized_keys <<'END_OF_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/test/resources/test_adminaccess_params.sh ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/test/resources/test_adminaccess_params.sh b/scriptbuilder/src/test/resources/test_adminaccess_params.sh index 61ef3ad..42d4852 100644 --- a/scriptbuilder/src/test/resources/test_adminaccess_params.sh +++ b/scriptbuilder/src/test/resources/test_adminaccess_params.sh @@ -7,7 +7,7 @@ END_OF_JCLOUDS_FILE chmod 0440 /etc/sudoers mkdir -p /over/ridden chmod 0755 /over/ridden -groupadd -f wheel +getent group wheel || groupadd -f wheel useradd -c 'foo' -s /bin/bash -g wheel -m -d /over/ridden/foo -p 'crypt(bar)' foo mkdir -p /over/ridden/foo/.ssh cat >> /over/ridden/foo/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/test/resources/test_adminaccess_params_and_fullname.sh ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/test/resources/test_adminaccess_params_and_fullname.sh b/scriptbuilder/src/test/resources/test_adminaccess_params_and_fullname.sh index 1481337..20b1ee6 100644 --- a/scriptbuilder/src/test/resources/test_adminaccess_params_and_fullname.sh +++ b/scriptbuilder/src/test/resources/test_adminaccess_params_and_fullname.sh @@ -7,7 +7,7 @@ END_OF_JCLOUDS_FILE chmod 0440 /etc/sudoers mkdir -p /over/ridden chmod 0755 /over/ridden -groupadd -f wheel +getent group wheel || groupadd -f wheel useradd -c 'JClouds Foo' -s /bin/bash -g wheel -m -d /over/ridden/foo -p 'crypt(bar)' foo mkdir -p /over/ridden/foo/.ssh cat >> /over/ridden/foo/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE' http://git-wip-us.apache.org/repos/asf/jclouds/blob/bdbed1ce/scriptbuilder/src/test/resources/test_adminaccess_standard.sh ---------------------------------------------------------------------- diff --git a/scriptbuilder/src/test/resources/test_adminaccess_standard.sh b/scriptbuilder/src/test/resources/test_adminaccess_standard.sh index 25fca5f..db10e19 100644 --- a/scriptbuilder/src/test/resources/test_adminaccess_standard.sh +++ b/scriptbuilder/src/test/resources/test_adminaccess_standard.sh @@ -7,7 +7,7 @@ END_OF_JCLOUDS_FILE chmod 0440 /etc/sudoers mkdir -p /home/users chmod 0755 /home/users -groupadd -f wheel +getent group wheel || groupadd -f wheel useradd -c 'defaultAdminUsername' -s /bin/bash -g wheel -m -d /home/users/defaultAdminUsername -p 'crypt(0)' defaultAdminUsername mkdir -p /home/users/defaultAdminUsername/.ssh cat >> /home/users/defaultAdminUsername/.ssh/authorized_keys <<-'END_OF_JCLOUDS_FILE'
