// Generated by delombok at Sun Sep 08 08:37:39 UTC 2019
package org.testcontainers.dockerclient;
import com.github.dockerjava.api.
DockerClient;
import com.github.dockerjava.api.command.*;
import org.jetbrains.annotations.
NotNull;
import java.lang.reflect.
Proxy;
import java.util.function.
BiConsumer;
import static org.testcontainers.utility.
AuditLogger.doLog;
/**
* Wrapper for {@link DockerClient} to facilitate 'audit logging' of potentially destruction actions using
* {@link org.testcontainers.utility.AuditLogger}.
*/
@
SuppressWarnings("unchecked")
public class
AuditLoggingDockerClient implements
DockerClient {
@java.lang.
SuppressWarnings("all")
private static final org.slf4j.
Logger log = org.slf4j.
LoggerFactory.
getLogger(
AuditLoggingDockerClient.class);
private final
DockerClient wrappedClient;
public
AuditLoggingDockerClient(
DockerClient wrappedClient) {
this.
wrappedClient =
wrappedClient;
}
@
Override
public
CreateContainerCmd createContainerCmd(@
NotNull String image) {
return
wrappedCommand(
CreateContainerCmd.class,
wrappedClient.
createContainerCmd(
image), (
cmd,
res) ->
doLog("CREATE",
image,
res.
getId(),
cmd), (
cmd,
e) ->
doLog("CREATE",
image, null,
cmd,
e));
}
@
Override
public
StartContainerCmd startContainerCmd(@
NotNull String containerId) {
return
wrappedCommand(
StartContainerCmd.class,
wrappedClient.
startContainerCmd(
containerId), (
cmd,
res) ->
doLog("START", null,
containerId,
cmd), (
cmd,
e) ->
doLog("START", null,
containerId,
cmd,
e));
}
@
Override
public
RemoveContainerCmd removeContainerCmd(@
NotNull String containerId) {
return
wrappedCommand(
RemoveContainerCmd.class,
wrappedClient.
removeContainerCmd(
containerId), (
cmd,
res) ->
doLog("REMOVE", null,
containerId,
cmd), (
cmd,
e) ->
doLog("REMOVE", null,
containerId,
cmd,
e));
}
@
Override
public
StopContainerCmd stopContainerCmd(@
NotNull String containerId) {
return
wrappedCommand(
StopContainerCmd.class,
wrappedClient.
stopContainerCmd(
containerId), (
cmd,
res) ->
doLog("STOP", null,
containerId,
cmd), (
cmd,
e) ->
doLog("STOP", null,
containerId,
cmd,
e));
}
@
Override
public
KillContainerCmd killContainerCmd(@
NotNull String containerId) {
return
wrappedCommand(
KillContainerCmd.class,
wrappedClient.
killContainerCmd(
containerId), (
cmd,
res) ->
doLog("KILL", null,
containerId,
cmd), (
cmd,
e) ->
doLog("KILL", null,
containerId,
cmd,
e));
}
@
Override
public
CreateNetworkCmd createNetworkCmd() {
return
wrappedCommand(
CreateNetworkCmd.class,
wrappedClient.
createNetworkCmd(), (
cmd,
res) ->
doLog("CREATE_NETWORK", null, null,
cmd), (
cmd,
e) ->
doLog("CREATE_NETWORK", null, null,
cmd,
e));
}
@
Override
public
RemoveNetworkCmd removeNetworkCmd(@
NotNull String networkId) {
return
wrappedCommand(
RemoveNetworkCmd.class,
wrappedClient.
removeNetworkCmd(
networkId), (
cmd,
res) ->
doLog("REMOVE_NETWORK", null, null,
cmd), (
cmd,
e) ->
doLog("REMOVE_NETWORK", null, null,
cmd,
e));
}
private <T extends
SyncDockerCmd<R>, R> T
wrappedCommand(
Class<T>
clazz, T
cmd,
BiConsumer<T, R>
successConsumer,
BiConsumer<T,
Exception>
failureConsumer) {
return (T)
Proxy.
newProxyInstance(
clazz.
getClassLoader(), new
Class<?>[] {
clazz}, (
proxy,
method,
args) -> {
if (
method.
getName().
equals("exec")) {
try {
R
r = (R)
method.
invoke(
cmd,
args);
successConsumer.
accept(
cmd,
r);
return
r;
} catch (
Exception e) {
failureConsumer.
accept(
cmd,
e);
throw
e;
}
} else {
return
method.
invoke(
cmd,
args);
}
});
}
@
SuppressWarnings("unused")
private interface
InterceptedMethods {
CreateContainerCmd createContainerCmd(
String image);
StartContainerCmd startContainerCmd(
String containerId);
RemoveContainerCmd removeContainerCmd(
String containerId);
StopContainerCmd stopContainerCmd(
String containerId);
KillContainerCmd killContainerCmd(
String containerId);
CreateNetworkCmd createNetworkCmd();
RemoveNetworkCmd removeNetworkCmd(
String networkId);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.model.
AuthConfig authConfig() throws com.github.dockerjava.api.exception.
DockerException {
return this.
wrappedClient.
authConfig();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
AuthCmd authCmd() {
return this.
wrappedClient.
authCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InfoCmd infoCmd() {
return this.
wrappedClient.
infoCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PingCmd pingCmd() {
return this.
wrappedClient.
pingCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
VersionCmd versionCmd() {
return this.
wrappedClient.
versionCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PullImageCmd pullImageCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
pullImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PushImageCmd pushImageCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
pushImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PushImageCmd pushImageCmd(final com.github.dockerjava.api.model.
Identifier arg0) {
return this.
wrappedClient.
pushImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CreateImageCmd createImageCmd(final java.lang.
String arg0, final java.io.
InputStream arg1) {
return this.
wrappedClient.
createImageCmd(
arg0,
arg1);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
LoadImageCmd loadImageCmd(final java.io.
InputStream arg0) {
return this.
wrappedClient.
loadImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
SearchImagesCmd searchImagesCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
searchImagesCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
RemoveImageCmd removeImageCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
removeImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListImagesCmd listImagesCmd() {
return this.
wrappedClient.
listImagesCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectImageCmd inspectImageCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
inspectImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
SaveImageCmd saveImageCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
saveImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListContainersCmd listContainersCmd() {
return this.
wrappedClient.
listContainersCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ExecCreateCmd execCreateCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
execCreateCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectContainerCmd inspectContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
inspectContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
WaitContainerCmd waitContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
waitContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
AttachContainerCmd attachContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
attachContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ExecStartCmd execStartCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
execStartCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectExecCmd inspectExecCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
inspectExecCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
LogContainerCmd logContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
logContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CopyArchiveFromContainerCmd copyArchiveFromContainerCmd(final java.lang.
String arg0, final java.lang.
String arg1) {
return this.
wrappedClient.
copyArchiveFromContainerCmd(
arg0,
arg1);
}
@java.lang.
Deprecated
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CopyFileFromContainerCmd copyFileFromContainerCmd(final java.lang.
String arg0, final java.lang.
String arg1) {
return this.
wrappedClient.
copyFileFromContainerCmd(
arg0,
arg1);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CopyArchiveToContainerCmd copyArchiveToContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
copyArchiveToContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ContainerDiffCmd containerDiffCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
containerDiffCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
UpdateContainerCmd updateContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
updateContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
RenameContainerCmd renameContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
renameContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
RestartContainerCmd restartContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
restartContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CommitCmd commitCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
commitCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
BuildImageCmd buildImageCmd() {
return this.
wrappedClient.
buildImageCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
BuildImageCmd buildImageCmd(final java.io.
File arg0) {
return this.
wrappedClient.
buildImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
BuildImageCmd buildImageCmd(final java.io.
InputStream arg0) {
return this.
wrappedClient.
buildImageCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
TopContainerCmd topContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
topContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
TagImageCmd tagImageCmd(final java.lang.
String arg0, final java.lang.
String arg1, final java.lang.
String arg2) {
return this.
wrappedClient.
tagImageCmd(
arg0,
arg1,
arg2);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PauseContainerCmd pauseContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
pauseContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
UnpauseContainerCmd unpauseContainerCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
unpauseContainerCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
EventsCmd eventsCmd() {
return this.
wrappedClient.
eventsCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
StatsCmd statsCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
statsCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CreateVolumeCmd createVolumeCmd() {
return this.
wrappedClient.
createVolumeCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectVolumeCmd inspectVolumeCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
inspectVolumeCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
RemoveVolumeCmd removeVolumeCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
removeVolumeCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListVolumesCmd listVolumesCmd() {
return this.
wrappedClient.
listVolumesCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListNetworksCmd listNetworksCmd() {
return this.
wrappedClient.
listNetworksCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectNetworkCmd inspectNetworkCmd() {
return this.
wrappedClient.
inspectNetworkCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ConnectToNetworkCmd connectToNetworkCmd() {
return this.
wrappedClient.
connectToNetworkCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
DisconnectFromNetworkCmd disconnectFromNetworkCmd() {
return this.
wrappedClient.
disconnectFromNetworkCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InitializeSwarmCmd initializeSwarmCmd(final com.github.dockerjava.api.model.
SwarmSpec arg0) {
return this.
wrappedClient.
initializeSwarmCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectSwarmCmd inspectSwarmCmd() {
return this.
wrappedClient.
inspectSwarmCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
JoinSwarmCmd joinSwarmCmd() {
return this.
wrappedClient.
joinSwarmCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
LeaveSwarmCmd leaveSwarmCmd() {
return this.
wrappedClient.
leaveSwarmCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
UpdateSwarmCmd updateSwarmCmd(final com.github.dockerjava.api.model.
SwarmSpec arg0) {
return this.
wrappedClient.
updateSwarmCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
UpdateSwarmNodeCmd updateSwarmNodeCmd() {
return this.
wrappedClient.
updateSwarmNodeCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListSwarmNodesCmd listSwarmNodesCmd() {
return this.
wrappedClient.
listSwarmNodesCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListServicesCmd listServicesCmd() {
return this.
wrappedClient.
listServicesCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
CreateServiceCmd createServiceCmd(final com.github.dockerjava.api.model.
ServiceSpec arg0) {
return this.
wrappedClient.
createServiceCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
InspectServiceCmd inspectServiceCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
inspectServiceCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
UpdateServiceCmd updateServiceCmd(final java.lang.
String arg0, final com.github.dockerjava.api.model.
ServiceSpec arg1) {
return this.
wrappedClient.
updateServiceCmd(
arg0,
arg1);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
RemoveServiceCmd removeServiceCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
removeServiceCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
ListTasksCmd listTasksCmd() {
return this.
wrappedClient.
listTasksCmd();
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
LogSwarmObjectCmd logServiceCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
logServiceCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
LogSwarmObjectCmd logTaskCmd(final java.lang.
String arg0) {
return this.
wrappedClient.
logTaskCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public com.github.dockerjava.api.command.
PruneCmd pruneCmd(final com.github.dockerjava.api.model.
PruneType arg0) {
return this.
wrappedClient.
pruneCmd(
arg0);
}
@java.lang.
SuppressWarnings("all")
public void
close() throws java.io.
IOException {
this.
wrappedClient.
close();
}
}