All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testcontainers.dockerclient.AuditLoggingDockerClient Maven / Gradle / Ivy

There is a newer version: 1.20.1
Show newest version
// Generated by delombok at Sun Aug 05 21:14:34 UTC 2018
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 , R> T wrappedCommand(Class clazz, T cmd, BiConsumer successConsumer, BiConsumer 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 void close() throws java.io.IOException {
        this.wrappedClient.close();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy