Java源码示例:com.github.dockerjava.api.model.PushResponseItem
示例1
@Override
public void execute() throws DockerException {
if (!StringUtils.isNotBlank(image)) {
throw new IllegalArgumentException("Image name must be provided");
}
// Don't include tag in the image name. Docker daemon can't handle it.
// put tag in query string parameter.
String imageFullName = CommandUtils.imageFullNameFrom(registry, image, tag);
final DockerClient client = getClient();
PushImageCmd pushImageCmd = client.pushImageCmd(imageFullName).withTag(tag);
PushImageResultCallback callback = new PushImageResultCallback() {
@Override
public void onNext(PushResponseItem item) {
super.onNext(item);
}
@Override
public void onError(Throwable throwable) {
logger.error("Failed to push image:" + throwable.getMessage());
super.onError(throwable);
}
};
pushImageCmd.exec(callback).awaitSuccess();
}
示例2
/**
* Push.
*
* @param imageName the image name
* @param auth the auth
* @param awaitSec the await sec
*/
public void push(String imageName, boolean auth, long awaitSec) {
PushImageCmd pushImageCmd = docker.pushImageCmd(imageName);
if (auth) {
pushImageCmd.withAuthConfig(defaultAuthConfig);
}
try {
pushImageCmd.exec(new PushImageResultCallback() {
@Override
public void onNext(PushResponseItem item) {
super.onNext(item);
log.debug(item.toString());
}
}).awaitCompletion(awaitSec, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("Push image error.", e);
}
}
示例3
private void pushImage(DockerfileRequest request, DockerfileResponse response) {
logger.info(String.format("begin pushImage: %s", request));
try {
String repositoryName = buildRepositoryName(request);
Repository repository = new Repository(repositoryName);
Identifier identifier = new Identifier(repository, request.getAppTag());
dockerClient.pushImageCmd(identifier).exec(new PushImageResultCallback() {
@Override
public void onNext(PushResponseItem item) {
super.onNext(item);
if (logger.isDebugEnabled()) {
logger.debug(item);
}
}
}).awaitSuccess();
response.setRepository(String.format("%s:%s", repositoryName, request.getAppTag()));
} catch (Exception e) {
response.fail(e.toString());
logger.error(String.format("error pushImage: %s", request), e);
}
logger.info(String.format("end pushImage: %s", response));
}
示例4
@Override
default ResultCallback.Adapter<PushResponseItem> start() {
return exec(new ResultCallback.Adapter<PushResponseItem>() {
@Nullable
private PushResponseItem latestItem = null;
@Override
public void onNext(PushResponseItem item) {
this.latestItem = item;
}
@Override
protected void throwFirstError() {
super.throwFirstError();
if (latestItem == null) {
throw new DockerClientException("Could not push image");
} else if (latestItem.isErrorIndicated()) {
throw new DockerClientException("Could not push image: " + latestItem.getError());
}
}
});
}
示例5
@Override
protected Void execute0(PushImageCmd command, ResultCallback<PushResponseItem> resultCallback) {
WebTarget webResource = getBaseResource().path("/images/{imageName}/push")
.resolveTemplate("imageName", command.getName())
.queryParam("tag", command.getTag());
LOGGER.trace("POST: {}", webResource);
InvocationBuilder builder = resourceWithAuthConfig(command.getAuthConfig(), webResource.request())
.accept(MediaType.APPLICATION_JSON);
builder.post(null, new TypeReference<PushResponseItem>() {
}, resultCallback);
return null;
}
示例6
@Override
public void onNext(PushResponseItem item) {
// handling error
if (item.isErrorIndicated()) {
StringBuilder errString = new StringBuilder("[push][error]: ");
ResponseItem.ErrorDetail errDetail = null;
if (null != item.getErrorDetail()) {
errDetail = item.getErrorDetail();
}
if (null != errDetail && null != errDetail.getCode()) {
errString.append("(").append(errDetail.getCode()).append(") ");
}
if (null != errDetail && null != errDetail.getMessage()) {
errString.append(errDetail.getMessage());
}
String errorMessage = errString.toString();
printDebug(errorMessage);
dockerPushError.setErrorMsg("unable to push docker image: " + errorMessage);
}
String streamLog = item.getStream();
if (null != streamLog && !"".equals(streamLog.replaceAll("\n", ""))) {
printDebug("[push][stream] " + streamLog.replaceAll("\n", ""));
}
String statusLog = item.getStatus();
if (null != statusLog && !"".equals(statusLog.replaceAll("\n", ""))) {
printDebug("[push][status] " + statusLog.replaceAll("\n", ""));
}
String idLog = item.getId();
if (null != idLog) {
printDebug("[push][ID]: " + idLog);
}
super.onNext(item);
}
示例7
private void pushImages() throws IOException {
for (String tagToUse : tagsToUse) {
Identifier identifier = Identifier.fromCompoundString(tagToUse);
PushImageResultCallback resultCallback = new PushImageResultCallback() {
@Override
public void onNext(PushResponseItem item) {
if (item == null) {
// docker-java not happy if you pass it nulls.
log("Received NULL Push Response. Ignoring");
return;
}
printResponseItemToListener(listener, item);
super.onNext(item);
}
};
try(final DockerClient client = getClientWithNoTimeout()) {
PushImageCmd cmd = client.pushImageCmd(identifier);
int i = identifier.repository.name.indexOf('/');
String regName = i >= 0 ?
identifier.repository.name.substring(0,i) : null;
DockerCloud.setRegistryAuthentication(cmd,
new DockerRegistryEndpoint(regName, getPushCredentialsId()),
run.getParent().getParent());
cmd.exec(resultCallback).awaitSuccess();
} catch (DockerException ex) {
// Private Docker registries fall over regularly. Tell the user so they
// have some clue as to what to do as the exception gives no hint.
log("Exception pushing docker image. Check that the destination registry is running.");
throw ex;
}
}
}
示例8
@Override
public void onNext(PushResponseItem item) {
this.latestItem = item;
LOGGER.debug(item.toString());
}
示例9
/**
* @throws NotFoundException
* No such image
*/
@Override
<T extends ResultCallback<PushResponseItem>> T exec(T resultCallback);