Skip to content
This repository has been archived by the owner on Mar 21, 2022. It is now read-only.

Add dockerCertPath option to allow SSL connection to dockerHost #216

Merged
merged 1 commit into from
Apr 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion src/main/java/com/spotify/docker/AbstractDockerMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@

package com.spotify.docker;

import com.google.common.base.Optional;
import com.spotify.docker.client.DefaultDockerClient;
import com.spotify.docker.client.DockerCertificateException;
import com.spotify.docker.client.DockerCertificates;
import com.spotify.docker.client.DockerClient;
import com.spotify.docker.client.messages.AuthConfig;

Expand All @@ -41,6 +43,8 @@
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.spotify.docker.client.DefaultDockerClient.NO_TIMEOUT;

import java.nio.file.Paths;

abstract class AbstractDockerMojo extends AbstractMojo {

@Component(role = MavenSession.class)
Expand All @@ -67,7 +71,10 @@ abstract class AbstractDockerMojo extends AbstractMojo {
*/
@Parameter(property = "dockerHost")
private String dockerHost;


@Parameter(property = "dockerCertPath")
private String dockerCertPath;

@Parameter(property = "serverId")
private String serverId;

Expand Down Expand Up @@ -103,6 +110,10 @@ public void execute() throws MojoExecutionException {
if (!isNullOrEmpty(dockerHost)) {
builder.uri(dockerHost);
}
final Optional<DockerCertificates> certs = dockerCertificates();
if (certs.isPresent()) {
builder.dockerCertificates(certs.get());
}

final AuthConfig authConfig = authConfig();
if (authConfig != null) {
Expand Down Expand Up @@ -131,6 +142,16 @@ protected String rawDockerHost() {
return dockerHost;
}

protected Optional<DockerCertificates> dockerCertificates() throws DockerCertificateException {
if (!isNullOrEmpty(dockerCertPath)) {
return DockerCertificates.builder()
.dockerCertPath(Paths.get(dockerCertPath)).build();
}
else {
return Optional.absent();
}
}

/**
* Get the email from the server configuration in <code>~/.m2/settings.xml</code>.
*
Expand Down
6 changes: 6 additions & 0 deletions src/test/java/com/spotify/docker/AbstractDockerMojoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import com.spotify.docker.client.DefaultDockerClient;
import com.spotify.docker.client.DockerCertificateException;
import com.spotify.docker.client.DockerCertificates;
import com.spotify.docker.client.DockerClient;
import com.spotify.docker.client.messages.AuthConfig;
import org.apache.maven.execution.MavenSession;
Expand All @@ -41,11 +42,13 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.any;

@RunWith(MockitoJUnitRunner.class)
public class AbstractDockerMojoTest {

private static final String DOCKER_HOST = "testhost";
private static final String DOCKER_CERT_PATH = "src/test/resources/certs";
private static final String SERVER_ID = "testId";
private static final String REGISTRY_URL = "https://my.docker.reg";
private static final String USERNAME = "username";
Expand Down Expand Up @@ -93,10 +96,13 @@ public void setUp() {
@Test
public void testDockerHostSet() throws Exception {
ReflectionTestUtils.setField(sut, "dockerHost", DOCKER_HOST);
ReflectionTestUtils.setField(sut, "dockerCertPath", DOCKER_CERT_PATH);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would also be fine to make the field protected and add @VisibleForTesting to it


sut.execute();

verify(builder).uri(DOCKER_HOST);
verify(builder).dockerCertificates(any(DockerCertificates.class));

}

@Test
Expand Down
18 changes: 18 additions & 0 deletions src/test/resources/certs/ca.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIICzzCCAbegAwIBAgIQM3V9fYpuIu4iUS0IzED4qzANBgkqhkiG9w0BAQsFADAR
MQ8wDQYDVQQKEwZscm9sYXowHhcNMTYwMzI0MDgzMjAwWhcNMTkwMzA5MDgzMjAw
WjARMQ8wDQYDVQQKEwZscm9sYXowggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDZZL8tEnRzBRmvRqhKxezX3BYEWjwEjsx3uP4fCSYQ2Vzv0C/Up28TIgjO
e0iCYEQexWxuchK/LeEueLsVoheSHIgGXSfwCXJs/n3bBNIL4fmMY/jIxNx9W9wd
ROW02CRbYfYf1OK6Mhv6fO0za4I2PrQ4n46Kf7plLENNqJgVl5KMW4F/5ctQNhgG
IDkmbR7CSSwStUfDCd3nST+fu4cxjwDTOO7PsNi8fsRPNFKqbBus1ax4Qbe6pr5/
q9BqN7k0XKjkH5qSf3pNKjSAHZNE2ZJASYOvoCV8J4UAvyFSVwH6FS8sKzJvjAQl
350Hycq1C7E4TPzORmQhz5uD+XYXAgMBAAGjIzAhMA4GA1UdDwEB/wQEAwICrDAP
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAuuxFJpvpY5MXpvdpC
7TtYTs/Wohhx7W/oGiktYyh3qOp9giAqNZo8IIslx2IysnewMB+FidWGsxn1Yf8t
VOUqmLt3NDwB+WbdIsPtus20g+KZ3p9qs1PDwBasWUFVpf8dqLOGeDaWQuaxNM9t
TfIbbiILlAEnL6UVFWsJWJ5ecPema7BRzCfuTcG9XK0sHb5ag0p8LRkH4jXrUEsO
oS8Ql6ZpciIIx6dJwWAoYWrOCpFKEtFVM4dV/C5AjG0SrA5cmOz2gZAbG35hl/nd
Uf77qTmAcb+DsLa6uHaFCyOSkCariPPIs/ESeNV4OeYhghPnYGHg/E+LZ2S2xYi1
48AS
-----END CERTIFICATE-----
18 changes: 18 additions & 0 deletions src/test/resources/certs/cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC7jCCAdagAwIBAgIRAJbjvBXgSzRQS5mre8WpoRowDQYJKoZIhvcNAQELBQAw
ETEPMA0GA1UEChMGbHJvbGF6MB4XDTE2MDMyNDA4MzIwMFoXDTE5MDMwOTA4MzIw
MFowHTEbMBkGA1UECgwSbHJvbGF6Ljxib290c3RyYXA+MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA7slaZB71bdSOLSmAqH4iIIPP/EbWttpmTu8qeWBz
zopjod1n/VZZfHu41dHxPCnIHPi463GRWdqG3sXKL/xKqDbS0bGIhNHblwHE0o7V
9Nb20hRde2+a1Wy8P/qcDUX2zXZhK+hA1vHAXWcHfYyOpTN0sj9hQLgqoC132nao
OeKUrEk1XmXDV6Ltg21GcvSgMV6RzWPyK6kFwQ3D7pEM7GYhg8NLZz9yXf7LzzsF
xJIDEIuSD5X+MJo5k67CJBrYPkNLN1x3YpOwsVEq12hP1Nd6mz6jA2fyCiD1dAYn
UfrAPznJ1O7IIalL+fMWhFk5hBDsMZkRrbXsMlFMr9TeOwIDAQABozUwMzAOBgNV
HQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAN
BgkqhkiG9w0BAQsFAAOCAQEANvZBvq4zOZIruiIbXznnT53ekM3YY0yud4+qpb7P
loyCrfZcprhkXzlzLOWGyPQQPcJM4J3Y5hXM7ZhW1KL4DVnNd5/KAh/tvJ4B4ez6
Z+EoMTkSSXSEm1+pCN5LMA1hKyPu8FFG0SL5oHt2Q2plHUTqQxlqQpeosHuCoyPs
iFjsUVc4VCk6/8uykjrzURc2wyFMLe/0J5Sef5upC1gWwDtj1UpuD/ofDKi8KWT+
KRmF9Hfu+nG35pOeUE6RfyFtOO05yXfraYXNkiRidn6mjQwvUIFC+CT8C9zZz/x3
CRWjshWZ140rjyeAazNU49hpJlcumTwhLg8C3cOWynCNIQ==
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions src/test/resources/certs/key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEA7slaZB71bdSOLSmAqH4iIIPP/EbWttpmTu8qeWBzzopjod1n
/VZZfHu41dHxPCnIHPi463GRWdqG3sXKL/xKqDbS0bGIhNHblwHE0o7V9Nb20hRd
e2+a1Wy8P/qcDUX2zXZhK+hA1vHAXWcHfYyOpTN0sj9hQLgqoC132naoOeKUrEk1
XmXDV6Ltg21GcvSgMV6RzWPyK6kFwQ3D7pEM7GYhg8NLZz9yXf7LzzsFxJIDEIuS
D5X+MJo5k67CJBrYPkNLN1x3YpOwsVEq12hP1Nd6mz6jA2fyCiD1dAYnUfrAPznJ
1O7IIalL+fMWhFk5hBDsMZkRrbXsMlFMr9TeOwIDAQABAoIBAQDTvoPEUtuqaBkn
nSz0vN0AXkKZ4CtYfHTKvDS66zfmSDuvdolXUjIKPCAco426nwZQApLgXZXZyvlc
JKJ1SNDfN7ZcsoRv2zRRRQVG/dhmxBSdF+gJpF71sPWB+nZVItyHN9lVOR/+OuQt
L0aqI3D+t5Fc2u0fmfBal9c3R49Hu5k6i5dXmSFFBphGg54+T76Rwi0QDl4UNJNo
/FV+8Xnx012G0IprNmx8JivLM6/DrFG5s480vgHwe0Lvm+nawL9VN5lLKBol2KaN
DOwMDrSA5nufsxus8wnfLXcUYprPD/hGsj7n5wyEixJ7rYb/lZ6INVQJCfAAkVoP
UmeIJMthAoGBAPo3cl0BtsLPOtNTI1bajR1Ck2s37qxOyDHsYzs63PUn+U8Tifa1
GIwlnxZX7mDtRRvI8XEnjG4UYIpnr4eRyYQz4QM0SmoJwZK5SDjjftqvXg8nR1AF
4NnNJsaijUG+kaPMWTihA8k72vCZ/ckXDeLbrb45NxoxOQBdNfJ80iPLAoGBAPRO
RhPq6FxmT+UqGaTykA+AGrc2zyGQBlITxi6zc9h1+np1sdorl1///HjQxdhIHjVD
Kjfqxr+XGWJw0oGwNA+JozbKDvnfVsTuRXB6uJb+ACjMmxtl823YXB6Ss5kFkrTk
RRsJVH2X54gfXeXIwhpQSW9yB0wXjsWsQJWko0FRAoGBAPlxCSu7J61x1d0Shqpx
WjiPRFOhAOj56Q4L8Kj9d4VXAm1YtzMhOoWMg9pMcrJiF4Epg7kgihi7a7rOvuhR
6ClJZspA+OZZL4bL+znrYW01YnmM2MTn905p/HwNVPDzwFEgyNlxe0rDxvIRMjWk
LA26nqyCcXJFG+RHCB7jXMKdAoGBAKOJWgOvNcfUfRrsKapu7NxTZo7KU7El1fVP
Y1STr7JwlzEuY9WlZHlQxFKjfiyfaglBYpt3v380yDtLRr6lktPr0KO2cnv1cwH0
desrWzFH6hdlj1ax0lfvgwq8LRj70A7i1xeYEUTZUJWgWZyd3MD8iYveit/2zQ2p
lroVMWthAoGBAK2o5XDDClmu5dDVO7chtonBm5Z7k9uK0shXDKdywN0cliQhFBFN
++Uj593K9Ndkak57QLl/9CBXnwuFwDA3DUvtdKvLpQcpzry8DmfyAfOEkrt7Kxea
WKzOmU7KxBWldOSRZod+q4PcWZCDgqlulj8kkb1revScwb+RqAUTs107
-----END RSA PRIVATE KEY-----