Skip to content

Commit

Permalink
Initial fix for push issue (fixes #40)
Browse files Browse the repository at this point in the history
  • Loading branch information
rhuss committed Nov 2, 2014
1 parent 9cc650e commit 851723f
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 32 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

New configuration syntax with support for multiple containers

* **0.10.4**
- Fixed push issue when using a private registry (#40)

* **0.10.2**
- Support for SSL Authentication with Docker 1.3. Plugin will respect `DOCKER_CERT_PATH` with fallback to `~/.docker/`.
The plugin configuration `certPath` can be used, too and has the highest priority.
Expand All @@ -18,6 +21,9 @@ Still missing: documentation (coming soon ..)

Original configuration syntax (as described in the [README](README.md))

* **0.9.13**
- Fixed push issue when using a private registry (#40)

* **0.9.11**
- Support for SSL Authentication with Docker 1.3. Plugin will respect `DOCKER_CERT_PATH` with fallback to `~/.docker/`.
The plugin configuration `certPath` can be used, too and has the highest priority.
1 change: 1 addition & 0 deletions samples/data-jolokia-demo/src/main/docker-assembly.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>jolokia-it</id>
<dependencySets>
<dependencySet>
<includes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,15 +167,16 @@ public void removeContainer(String containerId) throws DockerAccessException {
public void pullImage(String image,AuthConfig authConfig) throws DockerAccessException {
ImageName name = new ImageName(image);
String pullUrl = baseUrl + "/images/create?fromImage=" + encode(name.getRepository());
pullUrl = addTagAndRegistry(pullUrl, name);
pullUrl = addTag(pullUrl, name);
pullUrl = addRegistry(pullUrl,name);
pullOrPushImage(image,pullUrl,"pulling",authConfig);
}

/** {@inheritDoc} */
public void pushImage(String image, AuthConfig authConfig) throws DockerAccessException {
ImageName name = new ImageName(image);
String pushUrl = baseUrl + "/images/" + encode(name.getRepository()) + "/push";
pushUrl = addTagAndRegistry(pushUrl,name);
String pushUrl = baseUrl + "/images/" + encode(name.getRepositoryWithRegistry()) + "/push";
pushUrl = addTag(pushUrl,name);
pullOrPushImage(image,pushUrl,"pushing",authConfig);
}

Expand Down Expand Up @@ -447,24 +448,17 @@ private void pullOrPushImage(String image, String uri, String what, AuthConfig a
}
}

private String addTagAndRegistry(String url, ImageName name) {
List<String> params = new ArrayList<>();
if (name.getTag() != null) {
params.add("tag=" + name.getTag());
}
if (name.getRegistry() != null) {
params.add("registry=" + name.getRegistry());
}
if (params.size() > 0) {
StringBuilder addOn = new StringBuilder();
private String addTag(String url, ImageName name) {
return addQueryParam(url, "tag", name.getTag());
}

for (int i = 0; i < params.size(); i ++) {
addOn.append(params.get(i));
if (i < params.size() - 1) {
addOn.append("&");
}
}
return url + (url.contains("?") ? "&" : "?") + addOn.toString();
private String addRegistry(String url, ImageName name) {
return addQueryParam(url,"registry",name.getRegistry());
}

private String addQueryParam(String url, String param, String value) {
if (value != null) {
return url + (url.contains("?") ? "&" : "?") + param + "=" + encode(value);
} else {
return url;
}
Expand Down
36 changes: 24 additions & 12 deletions src/main/java/org/jolokia/docker/maven/util/ImageName.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,30 @@ public ImageName(String fullName) {
}
}

public String getRepository() {
return repository;
}

public String getRegistry() {
return registry;
}

public String getTag() {
return tag;
}

public String getRepositoryWithRegistry() {
if (hasRegistry()) {
return registry + "/" + repository;
} else {
return repository;
}
}

public boolean hasRegistry() {
return registry != null && registry.length() > 0;
}

private String joinTail(String[] parts) {
StringBuilder builder = new StringBuilder();
for (int i = 1;i < parts.length; i++) {
Expand All @@ -75,16 +99,4 @@ private String joinTail(String[] parts) {
private boolean isRegistry(String part) {
return part.contains(".") || part.contains(":");
}

public String getRepository() {
return repository;
}

public String getRegistry() {
return registry;
}

public String getTag() {
return tag;
}
}

0 comments on commit 851723f

Please sign in to comment.