public String render(OsFamily family) { StringBuilder statementsBuilder = new StringBuilder(); for (Statement statement : delegate()) { statementsBuilder.append(statement.render(family)); } return statementsBuilder.toString(); }
@Override public String render(OsFamily family) { if (family == OsFamily.WINDOWS) { throw new UnsupportedOperationException("windows not yet implemented"); } Statement statement = version.isPresent() ? exec(String.format("gem install chef -v '%s' --no-rdoc --no-ri", version.get())) : exec("gem install chef --no-rdoc --no-ri"); return statement.render(family); }
private void addUnixRunScriptFooter(String runScript, StringBuilder builder) { builder.append("# add runscript footer\n"); Iterable<String> endScript = Splitter.on(ShellToken.LF.to(OsFamily.UNIX)).split( ShellToken.END_SCRIPT.to(OsFamily.UNIX)); builder.append(appendFile(runScript, endScript, DELIMITER).render(OsFamily.UNIX)); }
public String render(OsFamily family) { String linesToPrepend = Joiner.on('\n').withKeyValueSeparator(" ").join(params); Statement prependSshdConfig = exec(String.format( "exec 3<> %1$s && awk -v TEXT=\"%2$s\n\" 'BEGIN {print TEXT}{print}' %1$s >&3", sshdConfig, linesToPrepend)); Statement reloadSshdConfig = exec("hash service 2>&- && service ssh reload 2>&- || /etc/init.d/ssh* reload"); return newStatementList(prependSshdConfig, reloadSshdConfig).render(family); }
public void testWINDOWS() { assertEquals(statement.render(OsFamily.WINDOWS), "call :default\r\nif errorlevel 1 goto abort\r\necho started\r\n"); } }
public String render(OsFamily family) { String linesToPrepend = Joiner.on('\n').withKeyValueSeparator(" ").join(params); Statement prependSshdConfig = exec(String.format( "exec 3<> %1$s && awk -v TEXT=\"%2$s\n\" 'BEGIN {print TEXT}{print}' %1$s >&3", sshdConfig, linesToPrepend)); Statement reloadSshdConfig = exec("hash service 2>&- && service ssh reload 2>&- || /etc/init.d/ssh* reload"); return newStatementList(prependSshdConfig, reloadSshdConfig).render(family); }
@Test(expectedExceptions = UnsupportedOperationException.class) public void testCreateWheelWindowsNotSupported() { SudoStatements.createWheel().render(OsFamily.WINDOWS); } }
public void testCreateWheelUNIX() { assertEquals( SudoStatements.createWheel().render(OsFamily.UNIX), "cat > /etc/sudoers <<-'END_OF_JCLOUDS_FILE'\n"+ "\troot ALL = (ALL) ALL\n"+ "\t%wheel ALL = (ALL) NOPASSWD:ALL\n"+ "END_OF_JCLOUDS_FILE\n"+ "chmod 0440 /etc/sudoers\n"); }
public void testExtractTargzIntoDirectoryUNIX() { Statement save = Statements .extractTargzIntoDirectory( URI.create("https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.tar.gz"), "/opt/minecraft"); assertEquals( save.render(OsFamily.UNIX), "curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.tar.gz |(mkdir -p /opt/minecraft &&cd /opt/minecraft &&tar -xpzf -)\n"); }
public void testSaveHttpResponseToUNIX() { Statement save = Statements.saveHttpResponseTo( URI.create("https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar"), "/opt/minecraft", "minecraft_server.jar"); assertEquals( save.render(OsFamily.UNIX), "(mkdir -p /opt/minecraft && cd /opt/minecraft && [ ! -f minecraft_server.jar ] && curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -C - -X GET https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar >minecraft_server.jar)\n"); }
public void testLockSshdUNIX() { assertEquals(SshStatements.lockSshd().render(OsFamily.UNIX), new StringBuilder().append( "exec 3<> /etc/ssh/sshd_config && awk -v TEXT=\"")// .append("PasswordAuthentication no").append("\n")// .append("PermitRootLogin no").append("\n")// .append("\" 'BEGIN {print TEXT}{print}' /etc/ssh/sshd_config >&3").append("\n")// .append("hash service 2>&- && service ssh reload 2>&- || /etc/init.d/ssh* reload").append("\n").toString()); }
public void testSshdConfigUNIX() { assertEquals(SshStatements.sshdConfig(ImmutableMap.of("AddressFamily", "inet6")).render(OsFamily.UNIX), new StringBuilder().append("exec 3<> /etc/ssh/sshd_config && awk -v TEXT=\"")// .append("AddressFamily inet6").append("\n")// .append("\" 'BEGIN {print TEXT}{print}' /etc/ssh/sshd_config >&3").append("\n")// .append("hash service 2>&- && service ssh reload 2>&- || /etc/init.d/ssh* reload").append("\n").toString()); }
public void testCreateDefaultNodeConfiguration() { ImmutableList.Builder<Statement> statements = ImmutableList.builder(); ChefSolo solo = ChefSolo.builder().build(); solo.createNodeConfiguration(statements); ImmutableList<Statement> statementList = statements.build(); Statement expected = createOrOverwriteFile(ChefSolo.DEFAULT_SOLO_PATH + "/node.json", ImmutableSet.of("{\"run_list\":[]}")); assertEquals(statementList.size(), 1); assertEquals(statementList.get(0).render(OsFamily.UNIX), expected.render(OsFamily.UNIX)); }
public void testCreateNodeConfigurationWithJsonAttributes() { ImmutableList.Builder<Statement> statements = ImmutableList.builder(); ChefSolo solo = ChefSolo.builder().jsonAttributes("{\"foo\":\"bar\"}").build(); solo.createNodeConfiguration(statements); ImmutableList<Statement> statementList = statements.build(); Statement expected = createOrOverwriteFile(ChefSolo.DEFAULT_SOLO_PATH + "/node.json", ImmutableSet.of("{\"foo\":\"bar\",\"run_list\":[]}")); assertEquals(statementList.size(), 1); assertEquals(statementList.get(0).render(OsFamily.UNIX), expected.render(OsFamily.UNIX)); }
public void testCreateNodeConfigurationWithRunList() { ImmutableList.Builder<Statement> statements = ImmutableList.builder(); RunList runlist = RunList.builder().recipe("foo").role("bar").build(); ChefSolo solo = ChefSolo.builder().runlist(runlist).build(); solo.createNodeConfiguration(statements); ImmutableList<Statement> statementList = statements.build(); Statement expected = createOrOverwriteFile(ChefSolo.DEFAULT_SOLO_PATH + "/node.json", ImmutableSet.of("{\"run_list\":[\"recipe[foo]\",\"role[bar]\"]}")); assertEquals(statementList.size(), 1); assertEquals(statementList.get(0).render(OsFamily.UNIX), expected.render(OsFamily.UNIX)); }
public void testCreateNodeConfigurationWithJsonAttributesAndRunList() { ImmutableList.Builder<Statement> statements = ImmutableList.builder(); RunList runlist = RunList.builder().recipe("foo").role("bar").build(); ChefSolo solo = ChefSolo.builder().jsonAttributes("{\"foo\":\"bar\"}").runlist(runlist).build(); solo.createNodeConfiguration(statements); ImmutableList<Statement> statementList = statements.build(); Statement expected = createOrOverwriteFile(ChefSolo.DEFAULT_SOLO_PATH + "/node.json", ImmutableSet.of("{\"foo\":\"bar\",\"run_list\":[\"recipe[foo]\",\"role[bar]\"]}")); assertEquals(statementList.size(), 1); assertEquals(statementList.get(0).render(OsFamily.UNIX), expected.render(OsFamily.UNIX)); }
public void testCreateDatabagsIfNecessaryWithOneDatabagAndCustomPath() { ImmutableList.Builder<Statement> statements = ImmutableList.builder(); DataBag databag = DataBag.builder().name("foo").item("item", "{\"foo\":\"bar\"}").build(); ChefSolo solo = ChefSolo.builder().dataBagPath("/tmp/databags").defineDataBag(databag).build(); solo.createDatabagsIfNecessary(statements); ImmutableList<Statement> statementList = statements.build(); Statement expected = createOrOverwriteFile("/tmp/databags/foo/item.json", ImmutableSet.of("{\"foo\":\"bar\"}")); assertEquals(statementList.size(), 3); assertEquals(statementList.get(0), exec("{md} /tmp/databags")); assertEquals(statementList.get(1), exec("{md} /tmp/databags/" + databag.getName())); assertEquals(statementList.get(2).render(OsFamily.UNIX), expected.render(OsFamily.UNIX)); }
@Test public void testExecHttpResponse() { HttpRequest request = HttpRequest.builder() .method("GET") .endpoint("https://adriancolehappy.s3.amazonaws.com/java/install") .addHeader("Host", "adriancolehappy.s3.amazonaws.com") .addHeader("Date", "Sun, 12 Sep 2010 08:25:19 GMT") .addHeader("Authorization", "AWS 0ASHDJAS82:JASHFDA=").build(); assertEquals( ComputeServiceUtils.execHttpResponse(request).render(org.jclouds.scriptbuilder.domain.OsFamily.UNIX), "curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET -H \"Host: adriancolehappy.s3.amazonaws.com\" -H \"Date: Sun, 12 Sep 2010 08:25:19 GMT\" -H \"Authorization: AWS 0ASHDJAS82:JASHFDA=\" https://adriancolehappy.s3.amazonaws.com/java/install |(bash)\n"); }