use of org.eclipse.linuxtools.docker.core.DockerException in project linuxtools by eclipse.
the class DockerConnection method commitContainer.
@Override
public void commitContainer(final String id, final String repo, final String tag, final String comment, final String author) throws DockerException {
ContainerInfo info;
try {
info = client.inspectContainer(id);
client.commitContainer(id, repo, tag, info.config(), comment, author);
// update images list
// FIXME: are we refreshing the list of images twice ?
listImages();
getImages(true);
} catch (com.spotify.docker.client.exceptions.DockerRequestException e) {
throw new DockerException(e.message());
} catch (com.spotify.docker.client.exceptions.DockerException | InterruptedException e) {
throw new DockerException(e.getMessage(), e.getCause());
}
}
use of org.eclipse.linuxtools.docker.core.DockerException in project linuxtools by eclipse.
the class DockerConnection method waitForContainer.
@Override
public IDockerContainerExit waitForContainer(final String id) throws DockerException, InterruptedException {
try {
// wait for container to exit
DockerClient copy = getClientCopy();
ContainerExit x = copy.waitContainer(id);
DockerContainerExit exit = new DockerContainerExit(x.statusCode());
// update container list
listContainers();
// dispose of copy now we are finished
copy.close();
return exit;
} catch (ContainerNotFoundException e) {
throw new DockerContainerNotFoundException(e);
} catch (com.spotify.docker.client.exceptions.DockerRequestException e) {
throw new DockerException(e.message());
} catch (com.spotify.docker.client.exceptions.DockerException e) {
throw new DockerException(e.getMessage(), e.getCause());
}
}
use of org.eclipse.linuxtools.docker.core.DockerException in project linuxtools by eclipse.
the class DockerConnection method listImages.
// TODO: remove this method from the API
@Override
public List<IDockerImage> listImages() throws DockerException {
final List<IDockerImage> tempImages = new ArrayList<>();
synchronized (imageLock) {
try {
final List<Image> nativeImages = new ArrayList<>();
synchronized (clientLock) {
// containers list left in the queue
if (client == null) {
// there's no client.
return Collections.emptyList();
}
nativeImages.addAll(client.listImages(DockerClient.ListImagesParam.allImages()));
}
// images.
for (Image nativeImage : nativeImages) {
final DockerImageQualifier imageQualifier = resolveQualifier(nativeImage, nativeImages);
// return one IDockerImage per raw image
final List<String> repoTags = (nativeImage.repoTags() != null) ? new ArrayList<>(nativeImage.repoTags()) : new ArrayList<>();
Collections.sort(repoTags);
if (repoTags.isEmpty()) {
// $NON-NLS-1$
repoTags.add("<none>:<none>");
}
final String repo = DockerImage.extractRepo(repoTags.get(0));
final List<String> tags = Arrays.asList(DockerImage.extractTag(repoTags.get(0)));
tempImages.add(new DockerImage(this, repoTags, repo, tags, nativeImage.id(), nativeImage.parentId(), nativeImage.created(), nativeImage.size(), nativeImage.virtualSize(), imageQualifier));
}
} catch (com.spotify.docker.client.exceptions.DockerTimeoutException e) {
if (isOpen()) {
Activator.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, Messages.Docker_Connection_Timeout, e));
close();
}
} catch (com.spotify.docker.client.exceptions.DockerRequestException e) {
throw new DockerException(e.message());
} catch (com.spotify.docker.client.exceptions.DockerException | InterruptedException e) {
if (isOpen() && e.getCause() != null && e.getCause().getCause() != null && e.getCause().getCause() instanceof ProcessingException) {
close();
} else {
throw new DockerException(NLS.bind(Messages.List_Docker_Images_Failure, this.getName()), e);
}
} finally {
this.images = tempImages;
}
}
// Perform notification outside of lock so that listener doesn't cause a
// deadlock to occur
notifyImageListeners(tempImages);
return tempImages;
}
use of org.eclipse.linuxtools.docker.core.DockerException in project linuxtools by eclipse.
the class DockerConnection method copyContainer.
@Override
public InputStream copyContainer(final String id, final String path) throws DockerException, InterruptedException {
InputStream stream;
try {
DockerClient copy = getClientCopy();
stream = copy.archiveContainer(id, path);
} catch (com.spotify.docker.client.exceptions.DockerException e) {
throw new DockerException(e.getMessage(), e.getCause());
}
return stream;
}
use of org.eclipse.linuxtools.docker.core.DockerException in project linuxtools by eclipse.
the class DockerConnection method execShell.
public void execShell(final String id) throws DockerException {
try {
final ExecCreation execCreation = client.execCreate(id, // $NON-NLS-1$
new String[] { "/bin/sh" }, ExecCreateParam.attachStdout(), ExecCreateParam.attachStderr(), ExecCreateParam.attachStdin(), ExecCreateParam.tty());
final String execId = execCreation.id();
final LogStream pty_stream = client.execStart(execId, DockerClient.ExecStartParameter.TTY);
final IDockerContainerInfo info = getContainerInfo(id);
// $NON-NLS-1$
openTerminal(pty_stream, info.name() + " [shell]", null);
} catch (Exception e) {
throw new DockerException(e.getMessage(), e.getCause());
}
}
Aggregations