mirror of https://github.com/apache/jclouds.git
Issue 452: removed need to base64
This commit is contained in:
parent
f0a4a23265
commit
48e9f6b7bb
|
@ -54,9 +54,11 @@ Here are the properties:
|
||||||
* tags - optional; list of arbitrary tags.
|
* tags - optional; list of arbitrary tags.
|
||||||
* note this list is not yet in jclouds NodeMetadata
|
* note this list is not yet in jclouds NodeMetadata
|
||||||
* username - primary login user to the os. ex. ubuntu, vcloud, root
|
* username - primary login user to the os. ex. ubuntu, vcloud, root
|
||||||
* sudo_password - optional; base 64 encoded sudo password (ex. input to sudo -S)
|
* sudo_password - optional; sudo password (ex. input to sudo -S)
|
||||||
|
* if not set and an sudo command is attempted, it will attempt
|
||||||
|
without a password
|
||||||
one of:
|
one of:
|
||||||
* credential - base 64 encoded RSA private key or password
|
* credential - RSA private key or password
|
||||||
* credential_url - location of plain-text RSA private key or password.
|
* credential_url - location of plain-text RSA private key or password.
|
||||||
ex. file:///home/me/.ssh/id_rsa
|
ex. file:///home/me/.ssh/id_rsa
|
||||||
classpath:///id_rsa
|
classpath:///id_rsa
|
||||||
|
@ -76,5 +78,10 @@ nodes:
|
||||||
tags:
|
tags:
|
||||||
- vanilla
|
- vanilla
|
||||||
username: myUser
|
username: myUser
|
||||||
credential: ZmFuY3lmb290
|
credential: |
|
||||||
sudo_password: c3Vkbw==
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAuzaE6azgUxwESX1rCGdJ5xpdrc1XC311bOGZBCE8NA+CpFh2
|
||||||
|
u01Vfv68NC4u6LFgdXSY1vQt6hiA5TNqQk0TyVfFAunbXgTekF6XqDPQUf1nq9aZ
|
||||||
|
lMvo4vlaLDKBkhG5HJE/pIa0iB+RMZLS0GhxsIWerEDmYdHKM25o
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
|
sudo_password: go panthers!
|
||||||
|
|
|
@ -36,13 +36,11 @@ import org.jclouds.compute.domain.NodeMetadataBuilder;
|
||||||
import org.jclouds.compute.domain.NodeState;
|
import org.jclouds.compute.domain.NodeState;
|
||||||
import org.jclouds.compute.domain.OperatingSystemBuilder;
|
import org.jclouds.compute.domain.OperatingSystemBuilder;
|
||||||
import org.jclouds.compute.domain.OsFamily;
|
import org.jclouds.compute.domain.OsFamily;
|
||||||
import org.jclouds.crypto.CryptoStreams;
|
|
||||||
import org.jclouds.domain.Credentials;
|
import org.jclouds.domain.Credentials;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.logging.Logger;
|
import org.jclouds.logging.Logger;
|
||||||
import org.jclouds.util.Strings2;
|
import org.jclouds.util.Strings2;
|
||||||
|
|
||||||
import com.google.common.base.Charsets;
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
@ -76,8 +74,8 @@ public class NodeToNodeMetadata implements Function<Node, NodeMetadata> {
|
||||||
builder.tag(from.getGroup());
|
builder.tag(from.getGroup());
|
||||||
// TODO add tags!
|
// TODO add tags!
|
||||||
builder.operatingSystem(new OperatingSystemBuilder().arch(from.getOsArch()).family(
|
builder.operatingSystem(new OperatingSystemBuilder().arch(from.getOsArch()).family(
|
||||||
OsFamily.fromValue(from.getOsFamily())).description(from.getOsDescription()).version(
|
OsFamily.fromValue(from.getOsFamily())).description(from.getOsDescription())
|
||||||
from.getOsVersion()).build());
|
.version(from.getOsVersion()).build());
|
||||||
builder.state(NodeState.RUNNING);
|
builder.state(NodeState.RUNNING);
|
||||||
builder.publicAddresses(ImmutableSet.<String> of(from.getHostname()));
|
builder.publicAddresses(ImmutableSet.<String> of(from.getHostname()));
|
||||||
|
|
||||||
|
@ -91,8 +89,7 @@ public class NodeToNodeMetadata implements Function<Node, NodeMetadata> {
|
||||||
logger.error(e, "URI could not be read: %s", from.getCredentialUrl());
|
logger.error(e, "URI could not be read: %s", from.getCredentialUrl());
|
||||||
}
|
}
|
||||||
} else if (from.getCredential() != null) {
|
} else if (from.getCredential() != null) {
|
||||||
creds = new Credentials(from.getUsername(), new String(CryptoStreams.base64(from.getCredential()),
|
creds = new Credentials(from.getUsername(), from.getCredential());
|
||||||
Charsets.UTF_8));
|
|
||||||
}
|
}
|
||||||
if (creds != null)
|
if (creds != null)
|
||||||
builder.credentials(creds);
|
builder.credentials(creds);
|
||||||
|
@ -100,7 +97,7 @@ public class NodeToNodeMetadata implements Function<Node, NodeMetadata> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from.getSudoPassword() != null)
|
if (from.getSudoPassword() != null)
|
||||||
builder.adminPassword(new String(CryptoStreams.base64(from.getSudoPassword()), Charsets.UTF_8));
|
builder.adminPassword(from.getSudoPassword());
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,10 +53,10 @@ import com.google.common.collect.Maps;
|
||||||
* tags:
|
* tags:
|
||||||
* - vanilla
|
* - vanilla
|
||||||
* username: kelvin
|
* username: kelvin
|
||||||
* credential: password_or_rsa_in_base64
|
* credential: password_or_rsa
|
||||||
* or
|
* or
|
||||||
* credential_url: password_or_rsa_file ex. resource:///id_rsa will get the classpath /id_rsa.pub; file://path/to/id_rsa
|
* credential_url: password_or_rsa_file ex. resource:///id_rsa will get the classpath /id_rsa; file://path/to/id_rsa
|
||||||
* sudo_password: password_in_base64
|
* sudo_password: password
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Kelvin Kakugawa
|
* @author Kelvin Kakugawa
|
||||||
|
|
|
@ -50,10 +50,9 @@ public class NodeToNodeMetadataTest {
|
||||||
|
|
||||||
public static final NodeMetadata TEST1 = new NodeMetadataBuilder().ids("cluster-1").tag("hadoop").name("cluster-1")
|
public static final NodeMetadata TEST1 = new NodeMetadataBuilder().ids("cluster-1").tag("hadoop").name("cluster-1")
|
||||||
.location(location).state(NodeState.RUNNING).operatingSystem(
|
.location(location).state(NodeState.RUNNING).operatingSystem(
|
||||||
new OperatingSystemBuilder().description("redhat").family(OsFamily.RHEL)
|
new OperatingSystemBuilder().description("redhat").family(OsFamily.RHEL).arch("x86")
|
||||||
.arch("x86").version("5.3").build()).publicAddresses(
|
.version("5.3").build()).publicAddresses(ImmutableSet.of("cluster-1.mydomain.com"))
|
||||||
ImmutableSet.of("cluster-1.mydomain.com")).credentials(new Credentials("myUser", "fancyfoot"))
|
.credentials(new Credentials("myUser", NodesFromYamlTest.key)).adminPassword("happy bear").build();
|
||||||
.adminPassword("sudo").build();
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNodesParse() throws Exception {
|
public void testNodesParse() throws Exception {
|
||||||
|
@ -64,7 +63,7 @@ public class NodeToNodeMetadataTest {
|
||||||
new SupplyFromProviderURIOrNodesProperty(URI.create("test")), credentialStore);
|
new SupplyFromProviderURIOrNodesProperty(URI.create("test")), credentialStore);
|
||||||
|
|
||||||
assertEquals(parser.apply(NodesFromYamlTest.TEST1), TEST1);
|
assertEquals(parser.apply(NodesFromYamlTest.TEST1), TEST1);
|
||||||
assertEquals(credentialStore, ImmutableMap.of("node#cluster-1", new Credentials("myUser", "fancyfoot")));
|
assertEquals(credentialStore, ImmutableMap.of("node#cluster-1", new Credentials("myUser", NodesFromYamlTest.key)));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import static org.testng.Assert.assertEquals;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import org.jclouds.byon.Node;
|
import org.jclouds.byon.Node;
|
||||||
import org.jclouds.crypto.CryptoStreams;
|
|
||||||
import org.jclouds.util.Strings2;
|
import org.jclouds.util.Strings2;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@ -36,11 +35,15 @@ import com.google.common.collect.ImmutableMap;
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class NodesFromYamlTest {
|
public class NodesFromYamlTest {
|
||||||
|
public static final String key = new StringBuilder().append("-----BEGIN RSA PRIVATE KEY-----\n").append(
|
||||||
|
"MIIEowIBAAKCAQEAuzaE6azgUxwESX1rCGdJ5xpdrc1XC311bOGZBCE8NA+CpFh2\n").append(
|
||||||
|
"u01Vfv68NC4u6LFgdXSY1vQt6hiA5TNqQk0TyVfFAunbXgTekF6XqDPQUf1nq9aZ\n").append(
|
||||||
|
"lMvo4vlaLDKBkhG5HJE/pIa0iB+RMZLS0GhxsIWerEDmYdHKM25o\n").append("-----END RSA PRIVATE KEY-----\n")
|
||||||
|
.toString();
|
||||||
|
|
||||||
public static final Node TEST1 = new Node("cluster-1", "cluster-1", "accounting analytics cluster",
|
public static final Node TEST1 = new Node("cluster-1", "cluster-1", "accounting analytics cluster",
|
||||||
"cluster-1.mydomain.com", "x86", "rhel", "redhat", "5.3", "hadoop", ImmutableList
|
"cluster-1.mydomain.com", "x86", "rhel", "redhat", "5.3", "hadoop", ImmutableList.of("vanilla"), "myUser",
|
||||||
.of("vanilla"), "myUser", CryptoStreams.base64("fancyfoot".getBytes()), null, CryptoStreams
|
key, null, "happy bear");
|
||||||
.base64("sudo".getBytes()));
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNodesParse() throws Exception {
|
public void testNodesParse() throws Exception {
|
||||||
|
|
|
@ -11,5 +11,10 @@ nodes:
|
||||||
tags:
|
tags:
|
||||||
- vanilla
|
- vanilla
|
||||||
username: myUser
|
username: myUser
|
||||||
credential: ZmFuY3lmb290
|
credential: |
|
||||||
sudo_password: c3Vkbw==
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAuzaE6azgUxwESX1rCGdJ5xpdrc1XC311bOGZBCE8NA+CpFh2
|
||||||
|
u01Vfv68NC4u6LFgdXSY1vQt6hiA5TNqQk0TyVfFAunbXgTekF6XqDPQUf1nq9aZ
|
||||||
|
lMvo4vlaLDKBkhG5HJE/pIa0iB+RMZLS0GhxsIWerEDmYdHKM25o
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
|
sudo_password: happy bear
|
||||||
|
|
|
@ -12,4 +12,4 @@ nodes:
|
||||||
- vanilla
|
- vanilla
|
||||||
username: myUser
|
username: myUser
|
||||||
credential_url: classpath:///testkey.txt
|
credential_url: classpath:///testkey.txt
|
||||||
sudo_password: c3Vkbw==
|
sudo_password: happy bear
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
fancyfoot
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAuzaE6azgUxwESX1rCGdJ5xpdrc1XC311bOGZBCE8NA+CpFh2
|
||||||
|
u01Vfv68NC4u6LFgdXSY1vQt6hiA5TNqQk0TyVfFAunbXgTekF6XqDPQUf1nq9aZ
|
||||||
|
lMvo4vlaLDKBkhG5HJE/pIa0iB+RMZLS0GhxsIWerEDmYdHKM25o
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Loading…
Reference in New Issue