Algin labs providers with the new NodeAndTemplateOptionsToStatement interface
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/88ef0a22 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/88ef0a22 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/88ef0a22 Branch: refs/heads/master Commit: 88ef0a2210afb5a079b59f03899d18141cdc5acc Parents: 03f72d5 Author: Ignasi Barrera <[email protected]> Authored: Fri Jun 17 22:22:35 2016 +0200 Committer: Ignasi Barrera <[email protected]> Committed: Fri Jun 17 22:52:44 2016 +0200 ---------------------------------------------------------------------- .../CloudSigma2ComputeServiceContextModule.java | 36 +++++----- ...plateOptionsToStatementWithoutPublicKey.java | 59 --------------- ...eOptionsToStatementWithoutPublicKeyTest.java | 75 -------------------- 3 files changed, 19 insertions(+), 151 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/88ef0a22/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/config/CloudSigma2ComputeServiceContextModule.java ---------------------------------------------------------------------- diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/config/CloudSigma2ComputeServiceContextModule.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/config/CloudSigma2ComputeServiceContextModule.java index 84497e4..cd9e5d8 100644 --- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/config/CloudSigma2ComputeServiceContextModule.java +++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/config/CloudSigma2ComputeServiceContextModule.java @@ -16,18 +16,21 @@ */ package org.jclouds.cloudsigma2.compute.config; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableMap; -import com.google.inject.Provides; -import com.google.inject.TypeLiteral; +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.cloudsigma2.config.CloudSigma2Properties.TIMEOUT_DRIVE_CLONED; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; +import static org.jclouds.util.Predicates2.retry; + +import java.util.Map; + +import javax.inject.Named; +import javax.inject.Singleton; + import org.jclouds.cloudsigma2.CloudSigma2Api; import org.jclouds.cloudsigma2.compute.functions.LibraryDriveToImage; import org.jclouds.cloudsigma2.compute.functions.NICToAddress; import org.jclouds.cloudsigma2.compute.functions.ServerDriveToVolume; import org.jclouds.cloudsigma2.compute.functions.ServerInfoToNodeMetadata; -import org.jclouds.cloudsigma2.compute.functions.TemplateOptionsToStatementWithoutPublicKey; import org.jclouds.cloudsigma2.compute.options.CloudSigma2TemplateOptions; import org.jclouds.cloudsigma2.compute.strategy.CloudSigma2ComputeServiceAdapter; import org.jclouds.cloudsigma2.domain.DriveInfo; @@ -43,21 +46,20 @@ import org.jclouds.compute.domain.Hardware; import org.jclouds.compute.domain.Image; import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.domain.Volume; -import org.jclouds.compute.functions.TemplateOptionsToStatement; +import org.jclouds.compute.functions.NodeAndTemplateOptionsToStatement; +import org.jclouds.compute.functions.NodeAndTemplateOptionsToStatementWithoutPublicKey; import org.jclouds.compute.options.TemplateOptions; import org.jclouds.compute.reference.ComputeServiceConstants.PollPeriod; import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts; import org.jclouds.domain.Location; import org.jclouds.functions.IdentityFunction; -import javax.inject.Named; -import javax.inject.Singleton; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.jclouds.cloudsigma2.config.CloudSigma2Properties.TIMEOUT_DRIVE_CLONED; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; -import static org.jclouds.util.Predicates2.retry; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableMap; +import com.google.inject.Provides; +import com.google.inject.TypeLiteral; public class CloudSigma2ComputeServiceContextModule extends ComputeServiceAdapterContextModule<ServerInfo, Hardware, LibraryDrive, Location> { @@ -84,7 +86,7 @@ public class CloudSigma2ComputeServiceContextModule extends }).to(NICToAddress.class); bind(TemplateOptions.class).to(CloudSigma2TemplateOptions.class); - bind(TemplateOptionsToStatement.class).to(TemplateOptionsToStatementWithoutPublicKey.class); + bind(NodeAndTemplateOptionsToStatement.class).to(NodeAndTemplateOptionsToStatementWithoutPublicKey.class); } @VisibleForTesting http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/88ef0a22/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKey.java ---------------------------------------------------------------------- diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKey.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKey.java deleted file mode 100644 index 077917b..0000000 --- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKey.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.cloudsigma2.compute.functions; - -import com.google.common.collect.ImmutableList; -import org.jclouds.compute.functions.TemplateOptionsToStatement; -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.scriptbuilder.InitScript; -import org.jclouds.scriptbuilder.domain.Statement; -import org.jclouds.scriptbuilder.domain.StatementList; -import org.jclouds.scriptbuilder.statements.ssh.InstallRSAPrivateKey; - -import javax.inject.Singleton; - -/** - * Convert the template options into a statement, but ignoring the public key. - * <p/> - * The {@link org.jclouds.cloudsigma2.compute.strategy.CloudSigma2ComputeServiceAdapter} already takes care of - * installing it using the server metadata. - */ -@Singleton -public class TemplateOptionsToStatementWithoutPublicKey extends TemplateOptionsToStatement { - - @Override - public Statement apply(TemplateOptions options) { - ImmutableList.Builder<Statement> builder = ImmutableList.builder(); - if (options.getRunScript() != null) { - builder.add(options.getRunScript()); - } - if (options.getPrivateKey() != null) { - builder.add(new InstallRSAPrivateKey(options.getPrivateKey())); - } - - ImmutableList<Statement> bootstrap = builder.build(); - if (bootstrap.isEmpty()) { - return null; - } - - if (options.getTaskName() == null && !(options.getRunScript() instanceof InitScript)) { - options.nameTask("bootstrap"); - } - return bootstrap.size() == 1 ? bootstrap.get(0) : new StatementList(bootstrap); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/88ef0a22/cloudsigma2/src/test/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKeyTest.java ---------------------------------------------------------------------- diff --git a/cloudsigma2/src/test/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKeyTest.java b/cloudsigma2/src/test/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKeyTest.java deleted file mode 100644 index 93caac0..0000000 --- a/cloudsigma2/src/test/java/org/jclouds/cloudsigma2/compute/functions/TemplateOptionsToStatementWithoutPublicKeyTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.cloudsigma2.compute.functions; - -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.scriptbuilder.domain.OsFamily; -import org.jclouds.scriptbuilder.domain.Statement; -import org.jclouds.scriptbuilder.domain.StatementList; -import org.jclouds.scriptbuilder.statements.ssh.InstallRSAPrivateKey; -import org.jclouds.ssh.SshKeys; -import org.testng.annotations.Test; - -import java.util.Map; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; - -/** - * Unit tests for the {@link TemplateOptionsToStatementWithoutPublicKey} class. - */ -@Test(groups = "unit", testName = "TemplateOptionsToStatementWithoutPublicKeyTest") -public class TemplateOptionsToStatementWithoutPublicKeyTest { - - @Test - public void testPublicKeyDoesNotGenerateAuthorizePublicKeyStatementIfOnlyPublicKeyOptionsConfigured() { - Map<String, String> keys = SshKeys.generate(); - TemplateOptions options = TemplateOptions.Builder.authorizePublicKey(keys.get("public")); - - TemplateOptionsToStatementWithoutPublicKey function = new TemplateOptionsToStatementWithoutPublicKey(); - assertNull(function.apply(options)); - } - - @Test - public void testPublicAndRunScriptKeyDoesNotGenerateAuthorizePublicKeyStatementIfRunScriptPresent() { - Map<String, String> keys = SshKeys.generate(); - TemplateOptions options = TemplateOptions.Builder.authorizePublicKey(keys.get("public")).runScript("uptime"); - - TemplateOptionsToStatementWithoutPublicKey function = new TemplateOptionsToStatementWithoutPublicKey(); - Statement statement = function.apply(options); - - assertEquals(statement.render(OsFamily.UNIX), "uptime\n"); - } - - @Test - public void testPublicAndPrivateKeyAndRunScriptDoesNotGenerateAuthorizePublicKeyStatementIfOtherOptionsPresent() { - Map<String, String> keys = SshKeys.generate(); - TemplateOptions options = TemplateOptions.Builder.authorizePublicKey(keys.get("public")) - .installPrivateKey(keys.get("private")).runScript("uptime"); - - TemplateOptionsToStatementWithoutPublicKey function = new TemplateOptionsToStatementWithoutPublicKey(); - Statement statement = function.apply(options); - - assertTrue(statement instanceof StatementList); - StatementList statements = (StatementList) statement; - - assertEquals(statements.size(), 2); - assertEquals(statements.get(0).render(OsFamily.UNIX), "uptime\n"); - assertTrue(statements.get(1) instanceof InstallRSAPrivateKey); - } -}
