Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.DockerClientConfigDelegate;
Expand All @@ -11,6 +14,8 @@

class AuthDelegatingDockerClientConfig extends DockerClientConfigDelegate {

private static final Logger log = LoggerFactory.getLogger(AuthDelegatingDockerClientConfig.class);

private List<RegistryAuthConfig> registryAuthInfo;

public AuthDelegatingDockerClientConfig(DockerClientConfig delegate) {
Expand All @@ -23,20 +28,26 @@ public void setRegistryAuthConfigs(List<RegistryAuthConfig> registryAuthInfo) {

@Override
public AuthConfig effectiveAuthConfig(String imageName) {
log.debug("Resolving authentication configuration for image "+imageName);
AuthConfig fallbackAuthConfig;
try {
fallbackAuthConfig = super.effectiveAuthConfig(imageName);
log.debug("fallback config retrieved");
} catch (Exception e) {
fallbackAuthConfig = new AuthConfig();
log.debug("no fallback config available");
}

// try and obtain more accurate auth config using our resolution
final ImageReference parsed = new ImageReference(imageName);
String address = parsed.getPort()!=null ? parsed.getHost()+":"+parsed.getPort() : parsed.getHost();

log.debug("Checking configuration for auth config for address "+address);

if(registryAuthInfo!=null) {
for(RegistryAuthConfig rac : registryAuthInfo){
if(address.equals(rac.getRegistryAddress())){
log.debug("found match, configuring");
return new AuthConfig()
.withAuth(rac.getAuth())
.withEmail(rac.getEmail())
Expand All @@ -49,6 +60,7 @@ public AuthConfig effectiveAuthConfig(String imageName) {
}
}

log.debug("no match, using fallback if available");
return fallbackAuthConfig;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public static DockerClient getDockerClient(HostAndSocket runtimeInfo, List<Regis
.build();

AuthDelegatingDockerClientConfig addcc = new AuthDelegatingDockerClientConfig(config);
addcc.setRegistryAuthConfigs(authConfigs);

DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
.dockerHost(config.getDockerHost())
Expand Down