in functions/CDDDockerJava/src/main/java/com/amazonaws/greengrass/cdddocker/docker/BasicDockerHelper.java [191:224]
public void pullImage(String name) throws InterruptedException {
DockerClient dockerClient;
if (name.contains(".amazonaws.com/") && (name.contains(".dkr.ecr."))) {
// Looks like an ECR container, get the ECR client
dockerClient = combinedDockerClientProvider.getEcrDockerClient();
} else {
// Use the normal client without ECR auth
dockerClient = combinedDockerClientProvider.getLocalDockerClient();
}
PullImageResultCallback callback = new PullImageResultCallback() {
@Override
public void onNext(PullResponseItem item) {
ObjectMapper objectMapper = new ObjectMapper();
Map output = objectMapper.convertValue(item, Map.class);
// The progress field is an ASCII progress bar that isn't really useful so we always remove it if it is there
output.remove("progress");
dispatcher.publishObjectEvent(topics.getResponseTopic(), output);
super.onNext(item);
}
@Override
public void onError(Throwable throwable) {
loggingHelper.logAndPublish(Optional.empty(), topics.getResponseTopic(), "Error: " + throwable.getMessage());
super.onError(throwable);
}
};
dockerClient.pullImageCmd(name)
.withAuthConfig(dockerClient.authConfig())
.exec(callback)
.awaitCompletion();
}