|
@@ -0,0 +1,1140 @@
|
|
|
+/*
|
|
|
+ Copyright 2020 Docker Compose CLI authors
|
|
|
+
|
|
|
+ Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
+ you may not use this file except in compliance with the License.
|
|
|
+ You may obtain a copy of the License at
|
|
|
+
|
|
|
+ http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+
|
|
|
+ Unless required by applicable law or agreed to in writing, software
|
|
|
+ distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
+ See the License for the specific language governing permissions and
|
|
|
+ limitations under the License.
|
|
|
+*/
|
|
|
+
|
|
|
+package api
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "io"
|
|
|
+ "net"
|
|
|
+ "net/http"
|
|
|
+
|
|
|
+ moby "github.com/docker/docker/api/types"
|
|
|
+ containerType "github.com/docker/docker/api/types/container"
|
|
|
+ "github.com/docker/docker/api/types/events"
|
|
|
+ "github.com/docker/docker/api/types/filters"
|
|
|
+ "github.com/docker/docker/api/types/image"
|
|
|
+ "github.com/docker/docker/api/types/network"
|
|
|
+ "github.com/docker/docker/api/types/registry"
|
|
|
+ "github.com/docker/docker/api/types/swarm"
|
|
|
+ "github.com/docker/docker/api/types/volume"
|
|
|
+ "github.com/docker/docker/client"
|
|
|
+ specs "github.com/opencontainers/image-spec/specs-go/v1"
|
|
|
+)
|
|
|
+
|
|
|
+var _ client.APIClient = &DryRunClient{}
|
|
|
+
|
|
|
+// DryRunClient implements APIClient by delegating to implementation functions. This allows lazy init and per-method overrides
|
|
|
+type DryRunClient struct {
|
|
|
+ CopyFromContainerFn func(ctx context.Context, container, srcPath string) (io.ReadCloser, moby.ContainerPathStat, error)
|
|
|
+ CopyToContainerFn func(ctx context.Context, container, path string, content io.Reader, options moby.CopyToContainerOptions) error
|
|
|
+ ContainersPruneFn func(ctx context.Context, pruneFilters filters.Args) (moby.ContainersPruneReport, error)
|
|
|
+ ConfigListFn func(ctx context.Context, options moby.ConfigListOptions) ([]swarm.Config, error)
|
|
|
+ ConfigCreateFn func(ctx context.Context, config swarm.ConfigSpec) (moby.ConfigCreateResponse, error)
|
|
|
+ ConfigRemoveFn func(ctx context.Context, id string) error
|
|
|
+ ConfigInspectWithRawFn func(ctx context.Context, name string) (swarm.Config, []byte, error)
|
|
|
+ ConfigUpdateFn func(ctx context.Context, id string, version swarm.Version, config swarm.ConfigSpec) error
|
|
|
+ ContainerAttachFn func(ctx context.Context, container string, options moby.ContainerAttachOptions) (moby.HijackedResponse, error)
|
|
|
+ ContainerCommitFn func(ctx context.Context, container string, options moby.ContainerCommitOptions) (moby.IDResponse, error)
|
|
|
+ ContainerCreateFn func(ctx context.Context, config *containerType.Config, hostConfig *containerType.HostConfig,
|
|
|
+ networkingConfig *network.NetworkingConfig, platform *specs.Platform, containerName string) (containerType.CreateResponse, error)
|
|
|
+ ContainerDiffFn func(ctx context.Context, container string) ([]containerType.ContainerChangeResponseItem, error)
|
|
|
+ ContainerExecAttachFn func(ctx context.Context, execID string, config moby.ExecStartCheck) (moby.HijackedResponse, error)
|
|
|
+ ContainerExecCreateFn func(ctx context.Context, container string, config moby.ExecConfig) (moby.IDResponse, error)
|
|
|
+ ContainerExecInspectFn func(ctx context.Context, execID string) (moby.ContainerExecInspect, error)
|
|
|
+ ContainerExecResizeFn func(ctx context.Context, execID string, options moby.ResizeOptions) error
|
|
|
+ ContainerExecStartFn func(ctx context.Context, execID string, config moby.ExecStartCheck) error
|
|
|
+ ContainerExportFn func(ctx context.Context, container string) (io.ReadCloser, error)
|
|
|
+ ContainerInspectFn func(ctx context.Context, container string) (moby.ContainerJSON, error)
|
|
|
+ ContainerInspectWithRawFn func(ctx context.Context, container string, getSize bool) (moby.ContainerJSON, []byte, error)
|
|
|
+ ContainerKillFn func(ctx context.Context, container, signal string) error
|
|
|
+ ContainerListFn func(ctx context.Context, options moby.ContainerListOptions) ([]moby.Container, error)
|
|
|
+ ContainerLogsFn func(ctx context.Context, container string, options moby.ContainerLogsOptions) (io.ReadCloser, error)
|
|
|
+ ContainerPauseFn func(ctx context.Context, container string) error
|
|
|
+ ContainerRemoveFn func(ctx context.Context, container string, options moby.ContainerRemoveOptions) error
|
|
|
+ ContainerRenameFn func(ctx context.Context, container, newContainerName string) error
|
|
|
+ ContainerResizeFn func(ctx context.Context, container string, options moby.ResizeOptions) error
|
|
|
+ ContainerRestartFn func(ctx context.Context, container string, options containerType.StopOptions) error
|
|
|
+ ContainerStatPathFn func(ctx context.Context, container, path string) (moby.ContainerPathStat, error)
|
|
|
+ ContainerStatsFn func(ctx context.Context, container string, stream bool) (moby.ContainerStats, error)
|
|
|
+ ContainerStatsOneShotFn func(ctx context.Context, container string) (moby.ContainerStats, error)
|
|
|
+ ContainerStartFn func(ctx context.Context, container string, options moby.ContainerStartOptions) error
|
|
|
+ ContainerStopFn func(ctx context.Context, container string, options containerType.StopOptions) error
|
|
|
+ ContainerTopFn func(ctx context.Context, container string, arguments []string) (containerType.ContainerTopOKBody, error)
|
|
|
+ ContainerUnpauseFn func(ctx context.Context, container string) error
|
|
|
+ ContainerUpdateFn func(ctx context.Context, container string, updateConfig containerType.UpdateConfig) (containerType.ContainerUpdateOKBody, error)
|
|
|
+ ContainerWaitFn func(ctx context.Context, container string, condition containerType.WaitCondition) (<-chan containerType.WaitResponse, <-chan error)
|
|
|
+ DistributionInspectFn func(ctx context.Context, imageName, encodedRegistryAuth string) (registry.DistributionInspect, error)
|
|
|
+ ImageBuildFn func(ctx context.Context, reader io.Reader, options moby.ImageBuildOptions) (moby.ImageBuildResponse, error)
|
|
|
+ BuildCachePruneFn func(ctx context.Context, opts moby.BuildCachePruneOptions) (*moby.BuildCachePruneReport, error)
|
|
|
+ BuildCancelFn func(ctx context.Context, id string) error
|
|
|
+ ImageCreateFn func(ctx context.Context, parentReference string, options moby.ImageCreateOptions) (io.ReadCloser, error)
|
|
|
+ ImageHistoryFn func(ctx context.Context, imageName string) ([]image.HistoryResponseItem, error)
|
|
|
+ ImageImportFn func(ctx context.Context, source moby.ImageImportSource, ref string, options moby.ImageImportOptions) (io.ReadCloser, error)
|
|
|
+ ImageInspectWithRawFn func(ctx context.Context, imageName string) (moby.ImageInspect, []byte, error)
|
|
|
+ ImageListFn func(ctx context.Context, options moby.ImageListOptions) ([]moby.ImageSummary, error)
|
|
|
+ ImageLoadFn func(ctx context.Context, input io.Reader, quiet bool) (moby.ImageLoadResponse, error)
|
|
|
+ ImagePullFn func(ctx context.Context, ref string, options moby.ImagePullOptions) (io.ReadCloser, error)
|
|
|
+ ImagePushFn func(ctx context.Context, ref string, options moby.ImagePushOptions) (io.ReadCloser, error)
|
|
|
+ ImageRemoveFn func(ctx context.Context, image string, options moby.ImageRemoveOptions) ([]moby.ImageDeleteResponseItem, error)
|
|
|
+ ImageSearchFn func(ctx context.Context, term string, options moby.ImageSearchOptions) ([]registry.SearchResult, error)
|
|
|
+ ImageSaveFn func(ctx context.Context, images []string) (io.ReadCloser, error)
|
|
|
+ ImageTagFn func(ctx context.Context, image, ref string) error
|
|
|
+ ImagesPruneFn func(ctx context.Context, pruneFilter filters.Args) (moby.ImagesPruneReport, error)
|
|
|
+ NodeInspectWithRawFn func(ctx context.Context, nodeID string) (swarm.Node, []byte, error)
|
|
|
+ NodeListFn func(ctx context.Context, options moby.NodeListOptions) ([]swarm.Node, error)
|
|
|
+ NodeRemoveFn func(ctx context.Context, nodeID string, options moby.NodeRemoveOptions) error
|
|
|
+ NodeUpdateFn func(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error
|
|
|
+ NetworkConnectFn func(ctx context.Context, network, container string, config *network.EndpointSettings) error
|
|
|
+ NetworkCreateFn func(ctx context.Context, name string, options moby.NetworkCreate) (moby.NetworkCreateResponse, error)
|
|
|
+ NetworkDisconnectFn func(ctx context.Context, network, container string, force bool) error
|
|
|
+ NetworkInspectFn func(ctx context.Context, network string, options moby.NetworkInspectOptions) (moby.NetworkResource, error)
|
|
|
+ NetworkInspectWithRawFn func(ctx context.Context, network string, options moby.NetworkInspectOptions) (moby.NetworkResource, []byte, error)
|
|
|
+ NetworkListFn func(ctx context.Context, options moby.NetworkListOptions) ([]moby.NetworkResource, error)
|
|
|
+ NetworkRemoveFn func(ctx context.Context, network string) error
|
|
|
+ NetworksPruneFn func(ctx context.Context, pruneFilter filters.Args) (moby.NetworksPruneReport, error)
|
|
|
+ PluginListFn func(ctx context.Context, filter filters.Args) (moby.PluginsListResponse, error)
|
|
|
+ PluginRemoveFn func(ctx context.Context, name string, options moby.PluginRemoveOptions) error
|
|
|
+ PluginEnableFn func(ctx context.Context, name string, options moby.PluginEnableOptions) error
|
|
|
+ PluginDisableFn func(ctx context.Context, name string, options moby.PluginDisableOptions) error
|
|
|
+ PluginInstallFn func(ctx context.Context, name string, options moby.PluginInstallOptions) (io.ReadCloser, error)
|
|
|
+ PluginUpgradeFn func(ctx context.Context, name string, options moby.PluginInstallOptions) (io.ReadCloser, error)
|
|
|
+ PluginPushFn func(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error)
|
|
|
+ PluginSetFn func(ctx context.Context, name string, args []string) error
|
|
|
+ PluginInspectWithRawFn func(ctx context.Context, name string) (*moby.Plugin, []byte, error)
|
|
|
+ PluginCreateFn func(ctx context.Context, createContext io.Reader, options moby.PluginCreateOptions) error
|
|
|
+ ServiceCreateFn func(ctx context.Context, service swarm.ServiceSpec, options moby.ServiceCreateOptions) (moby.ServiceCreateResponse, error)
|
|
|
+ ServiceInspectWithRawFn func(ctx context.Context, serviceID string, options moby.ServiceInspectOptions) (swarm.Service, []byte, error)
|
|
|
+ ServiceListFn func(ctx context.Context, options moby.ServiceListOptions) ([]swarm.Service, error)
|
|
|
+ ServiceRemoveFn func(ctx context.Context, serviceID string) error
|
|
|
+ ServiceUpdateFn func(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options moby.ServiceUpdateOptions) (moby.ServiceUpdateResponse, error)
|
|
|
+ ServiceLogsFn func(ctx context.Context, serviceID string, options moby.ContainerLogsOptions) (io.ReadCloser, error)
|
|
|
+ TaskLogsFn func(ctx context.Context, taskID string, options moby.ContainerLogsOptions) (io.ReadCloser, error)
|
|
|
+ TaskInspectWithRawFn func(ctx context.Context, taskID string) (swarm.Task, []byte, error)
|
|
|
+ TaskListFn func(ctx context.Context, options moby.TaskListOptions) ([]swarm.Task, error)
|
|
|
+ SwarmInitFn func(ctx context.Context, req swarm.InitRequest) (string, error)
|
|
|
+ SwarmJoinFn func(ctx context.Context, req swarm.JoinRequest) error
|
|
|
+ SwarmGetUnlockKeyFn func(ctx context.Context) (moby.SwarmUnlockKeyResponse, error)
|
|
|
+ SwarmUnlockFn func(ctx context.Context, req swarm.UnlockRequest) error
|
|
|
+ SwarmLeaveFn func(ctx context.Context, force bool) error
|
|
|
+ SwarmInspectFn func(ctx context.Context) (swarm.Swarm, error)
|
|
|
+ SwarmUpdateFn func(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error
|
|
|
+ SecretListFn func(ctx context.Context, options moby.SecretListOptions) ([]swarm.Secret, error)
|
|
|
+ SecretCreateFn func(ctx context.Context, secret swarm.SecretSpec) (moby.SecretCreateResponse, error)
|
|
|
+ SecretRemoveFn func(ctx context.Context, id string) error
|
|
|
+ SecretInspectWithRawFn func(ctx context.Context, name string) (swarm.Secret, []byte, error)
|
|
|
+ SecretUpdateFn func(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error
|
|
|
+ EventsFn func(ctx context.Context, options moby.EventsOptions) (<-chan events.Message, <-chan error)
|
|
|
+ InfoFn func(ctx context.Context) (moby.Info, error)
|
|
|
+ RegistryLoginFn func(ctx context.Context, auth moby.AuthConfig) (registry.AuthenticateOKBody, error)
|
|
|
+ DiskUsageFn func(ctx context.Context, options moby.DiskUsageOptions) (moby.DiskUsage, error)
|
|
|
+ PingFn func(ctx context.Context) (moby.Ping, error)
|
|
|
+ VolumeCreateFn func(ctx context.Context, options volume.CreateOptions) (volume.Volume, error)
|
|
|
+ VolumeInspectFn func(ctx context.Context, volumeID string) (volume.Volume, error)
|
|
|
+ VolumeInspectWithRawFn func(ctx context.Context, volumeID string) (volume.Volume, []byte, error)
|
|
|
+ VolumeListFn func(ctx context.Context, filter filters.Args) (volume.ListResponse, error)
|
|
|
+ VolumeRemoveFn func(ctx context.Context, volumeID string, force bool) error
|
|
|
+ VolumesPruneFn func(ctx context.Context, pruneFilter filters.Args) (moby.VolumesPruneReport, error)
|
|
|
+ VolumeUpdateFn func(ctx context.Context, volumeID string, version swarm.Version, options volume.UpdateOptions) error
|
|
|
+ ClientVersionFn func() string
|
|
|
+ DaemonHostFn func() string
|
|
|
+ HTTPClientFn func() *http.Client
|
|
|
+ ServerVersionFn func(ctx context.Context) (moby.Version, error)
|
|
|
+ NegotiateAPIVersionFn func(ctx context.Context)
|
|
|
+ NegotiateAPIVersionPingFn func(ping moby.Ping)
|
|
|
+ DialHijackFn func(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error)
|
|
|
+ DialerFn func() func(context.Context) (net.Conn, error)
|
|
|
+ CloseFn func() error
|
|
|
+ CheckpointCreateFn func(ctx context.Context, container string, options moby.CheckpointCreateOptions) error
|
|
|
+ CheckpointDeleteFn func(ctx context.Context, container string, options moby.CheckpointDeleteOptions) error
|
|
|
+ CheckpointListFn func(ctx context.Context, container string, options moby.CheckpointListOptions) ([]moby.Checkpoint, error)
|
|
|
+}
|
|
|
+
|
|
|
+// NewDryRunClient produces a DryRunClient
|
|
|
+func NewDryRunClient() *DryRunClient {
|
|
|
+ return &DryRunClient{}
|
|
|
+}
|
|
|
+
|
|
|
+// WithAPIClient configure DryRunClient to use specified APIClient as delegate
|
|
|
+func (d *DryRunClient) WithAPIClient(apiClient client.APIClient) {
|
|
|
+ d.ConfigListFn = apiClient.ConfigList
|
|
|
+ d.ConfigCreateFn = apiClient.ConfigCreate
|
|
|
+ d.ConfigRemoveFn = apiClient.ConfigRemove
|
|
|
+ d.ConfigInspectWithRawFn = apiClient.ConfigInspectWithRaw
|
|
|
+ d.ConfigUpdateFn = apiClient.ConfigUpdate
|
|
|
+ d.ContainerAttachFn = apiClient.ContainerAttach
|
|
|
+ d.ContainerCommitFn = apiClient.ContainerCommit
|
|
|
+ d.ContainerCreateFn = apiClient.ContainerCreate
|
|
|
+ d.ContainerDiffFn = apiClient.ContainerDiff
|
|
|
+ d.ContainerExecAttachFn = apiClient.ContainerExecAttach
|
|
|
+ d.ContainerExecCreateFn = apiClient.ContainerExecCreate
|
|
|
+ d.ContainerExecInspectFn = apiClient.ContainerExecInspect
|
|
|
+ d.ContainerExecResizeFn = apiClient.ContainerExecResize
|
|
|
+ d.ContainerExecStartFn = apiClient.ContainerExecStart
|
|
|
+ d.ContainerExportFn = apiClient.ContainerExport
|
|
|
+ d.ContainerInspectFn = apiClient.ContainerInspect
|
|
|
+ d.ContainerInspectWithRawFn = apiClient.ContainerInspectWithRaw
|
|
|
+ d.ContainerKillFn = apiClient.ContainerKill
|
|
|
+ d.ContainerListFn = apiClient.ContainerList
|
|
|
+ d.ContainerLogsFn = apiClient.ContainerLogs
|
|
|
+ d.ContainerPauseFn = apiClient.ContainerPause
|
|
|
+ d.ContainerRemoveFn = apiClient.ContainerRemove
|
|
|
+ d.ContainerRenameFn = apiClient.ContainerRename
|
|
|
+ d.ContainerResizeFn = apiClient.ContainerResize
|
|
|
+ d.ContainerRestartFn = apiClient.ContainerRestart
|
|
|
+ d.ContainerStatPathFn = apiClient.ContainerStatPath
|
|
|
+ d.ContainerStatsFn = apiClient.ContainerStats
|
|
|
+ d.ContainerStatsOneShotFn = apiClient.ContainerStatsOneShot
|
|
|
+ d.ContainerStartFn = apiClient.ContainerStart
|
|
|
+ d.ContainerStopFn = apiClient.ContainerStop
|
|
|
+ d.ContainerTopFn = apiClient.ContainerTop
|
|
|
+ d.ContainerUnpauseFn = apiClient.ContainerUnpause
|
|
|
+ d.ContainerUpdateFn = apiClient.ContainerUpdate
|
|
|
+ d.ContainerWaitFn = apiClient.ContainerWait
|
|
|
+ d.DistributionInspectFn = apiClient.DistributionInspect
|
|
|
+ d.ImageBuildFn = apiClient.ImageBuild
|
|
|
+ d.BuildCachePruneFn = apiClient.BuildCachePrune
|
|
|
+ d.BuildCancelFn = apiClient.BuildCancel
|
|
|
+ d.ImageCreateFn = apiClient.ImageCreate
|
|
|
+ d.ImageHistoryFn = apiClient.ImageHistory
|
|
|
+ d.ImageImportFn = apiClient.ImageImport
|
|
|
+ d.ImageInspectWithRawFn = apiClient.ImageInspectWithRaw
|
|
|
+ d.ImageListFn = apiClient.ImageList
|
|
|
+ d.ImageLoadFn = apiClient.ImageLoad
|
|
|
+ d.ImagePullFn = apiClient.ImagePull
|
|
|
+ d.ImagePushFn = apiClient.ImagePush
|
|
|
+ d.ImageRemoveFn = apiClient.ImageRemove
|
|
|
+ d.ImageSearchFn = apiClient.ImageSearch
|
|
|
+ d.ImageSaveFn = apiClient.ImageSave
|
|
|
+ d.ImageTagFn = apiClient.ImageTag
|
|
|
+ d.ImagesPruneFn = apiClient.ImagesPrune
|
|
|
+ d.NodeInspectWithRawFn = apiClient.NodeInspectWithRaw
|
|
|
+ d.NodeListFn = apiClient.NodeList
|
|
|
+ d.NodeRemoveFn = apiClient.NodeRemove
|
|
|
+ d.NodeUpdateFn = apiClient.NodeUpdate
|
|
|
+ d.NetworkConnectFn = apiClient.NetworkConnect
|
|
|
+ d.NetworkCreateFn = apiClient.NetworkCreate
|
|
|
+ d.NetworkDisconnectFn = apiClient.NetworkDisconnect
|
|
|
+ d.NetworkInspectFn = apiClient.NetworkInspect
|
|
|
+ d.NetworkInspectWithRawFn = apiClient.NetworkInspectWithRaw
|
|
|
+ d.NetworkListFn = apiClient.NetworkList
|
|
|
+ d.NetworkRemoveFn = apiClient.NetworkRemove
|
|
|
+ d.NetworksPruneFn = apiClient.NetworksPrune
|
|
|
+ d.PluginListFn = apiClient.PluginList
|
|
|
+ d.PluginRemoveFn = apiClient.PluginRemove
|
|
|
+ d.PluginEnableFn = apiClient.PluginEnable
|
|
|
+ d.PluginDisableFn = apiClient.PluginDisable
|
|
|
+ d.PluginInstallFn = apiClient.PluginInstall
|
|
|
+ d.PluginUpgradeFn = apiClient.PluginUpgrade
|
|
|
+ d.PluginPushFn = apiClient.PluginPush
|
|
|
+ d.PluginSetFn = apiClient.PluginSet
|
|
|
+ d.PluginInspectWithRawFn = apiClient.PluginInspectWithRaw
|
|
|
+ d.PluginCreateFn = apiClient.PluginCreate
|
|
|
+ d.ServiceCreateFn = apiClient.ServiceCreate
|
|
|
+ d.ServiceInspectWithRawFn = apiClient.ServiceInspectWithRaw
|
|
|
+ d.ServiceListFn = apiClient.ServiceList
|
|
|
+ d.ServiceRemoveFn = apiClient.ServiceRemove
|
|
|
+ d.ServiceUpdateFn = apiClient.ServiceUpdate
|
|
|
+ d.ServiceLogsFn = apiClient.ServiceLogs
|
|
|
+ d.TaskLogsFn = apiClient.TaskLogs
|
|
|
+ d.TaskInspectWithRawFn = apiClient.TaskInspectWithRaw
|
|
|
+ d.TaskListFn = apiClient.TaskList
|
|
|
+ d.SwarmInitFn = apiClient.SwarmInit
|
|
|
+ d.SwarmJoinFn = apiClient.SwarmJoin
|
|
|
+ d.SwarmGetUnlockKeyFn = apiClient.SwarmGetUnlockKey
|
|
|
+ d.SwarmUnlockFn = apiClient.SwarmUnlock
|
|
|
+ d.SwarmLeaveFn = apiClient.SwarmLeave
|
|
|
+ d.SwarmInspectFn = apiClient.SwarmInspect
|
|
|
+ d.SwarmUpdateFn = apiClient.SwarmUpdate
|
|
|
+ d.SecretListFn = apiClient.SecretList
|
|
|
+ d.SecretCreateFn = apiClient.SecretCreate
|
|
|
+ d.SecretRemoveFn = apiClient.SecretRemove
|
|
|
+ d.SecretInspectWithRawFn = apiClient.SecretInspectWithRaw
|
|
|
+ d.SecretUpdateFn = apiClient.SecretUpdate
|
|
|
+ d.EventsFn = apiClient.Events
|
|
|
+ d.InfoFn = apiClient.Info
|
|
|
+ d.RegistryLoginFn = apiClient.RegistryLogin
|
|
|
+ d.DiskUsageFn = apiClient.DiskUsage
|
|
|
+ d.PingFn = apiClient.Ping
|
|
|
+ d.VolumeCreateFn = apiClient.VolumeCreate
|
|
|
+ d.VolumeInspectFn = apiClient.VolumeInspect
|
|
|
+ d.VolumeInspectWithRawFn = apiClient.VolumeInspectWithRaw
|
|
|
+ d.VolumeListFn = apiClient.VolumeList
|
|
|
+ d.VolumeRemoveFn = apiClient.VolumeRemove
|
|
|
+ d.VolumesPruneFn = apiClient.VolumesPrune
|
|
|
+ d.VolumeUpdateFn = apiClient.VolumeUpdate
|
|
|
+ d.ClientVersionFn = apiClient.ClientVersion
|
|
|
+ d.DaemonHostFn = apiClient.DaemonHost
|
|
|
+ d.HTTPClientFn = apiClient.HTTPClient
|
|
|
+ d.ServerVersionFn = apiClient.ServerVersion
|
|
|
+ d.NegotiateAPIVersionFn = apiClient.NegotiateAPIVersion
|
|
|
+ d.NegotiateAPIVersionPingFn = apiClient.NegotiateAPIVersionPing
|
|
|
+ d.DialHijackFn = apiClient.DialHijack
|
|
|
+ d.DialerFn = apiClient.Dialer
|
|
|
+ d.CloseFn = apiClient.Close
|
|
|
+ d.CheckpointCreateFn = apiClient.CheckpointCreate
|
|
|
+ d.CheckpointDeleteFn = apiClient.CheckpointDelete
|
|
|
+ d.CheckpointListFn = apiClient.CheckpointList
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ConfigList(ctx context.Context, options moby.ConfigListOptions) ([]swarm.Config, error) {
|
|
|
+ if d.ConfigListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ConfigListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ConfigCreate(ctx context.Context, config swarm.ConfigSpec) (moby.ConfigCreateResponse, error) {
|
|
|
+ if d.ConfigCreateFn == nil {
|
|
|
+ return moby.ConfigCreateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ConfigCreateFn(ctx, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ConfigRemove(ctx context.Context, id string) error {
|
|
|
+ if d.ConfigRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ConfigRemoveFn(ctx, id)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ConfigInspectWithRaw(ctx context.Context, name string) (swarm.Config, []byte, error) {
|
|
|
+ if d.ConfigInspectWithRawFn == nil {
|
|
|
+ return swarm.Config{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ConfigInspectWithRawFn(ctx, name)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ConfigUpdate(ctx context.Context, id string, version swarm.Version, config swarm.ConfigSpec) error {
|
|
|
+ if d.ConfigUpdateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ConfigUpdateFn(ctx, id, version, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerAttach(ctx context.Context, container string, options moby.ContainerAttachOptions) (moby.HijackedResponse, error) {
|
|
|
+ if d.ContainerAttachFn == nil {
|
|
|
+ return moby.HijackedResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerAttachFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerCommit(ctx context.Context, container string, options moby.ContainerCommitOptions) (moby.IDResponse, error) {
|
|
|
+ if d.ContainerCommitFn == nil {
|
|
|
+ return moby.IDResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerCommitFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerCreate(ctx context.Context, config *containerType.Config, hostConfig *containerType.HostConfig,
|
|
|
+ networkingConfig *network.NetworkingConfig, platform *specs.Platform, containerName string) (containerType.CreateResponse, error) {
|
|
|
+ if d.ContainerCreateFn == nil {
|
|
|
+ return containerType.CreateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerCreateFn(ctx, config, hostConfig, networkingConfig, platform, containerName)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerDiff(ctx context.Context, container string) ([]containerType.ContainerChangeResponseItem, error) {
|
|
|
+ if d.ContainerDiffFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerDiffFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExecAttach(ctx context.Context, execID string, config moby.ExecStartCheck) (moby.HijackedResponse, error) {
|
|
|
+ if d.ContainerExecAttachFn == nil {
|
|
|
+ return moby.HijackedResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExecAttachFn(ctx, execID, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExecCreate(ctx context.Context, container string, config moby.ExecConfig) (moby.IDResponse, error) {
|
|
|
+ if d.ContainerExecCreateFn == nil {
|
|
|
+ return moby.IDResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExecCreateFn(ctx, container, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExecInspect(ctx context.Context, execID string) (moby.ContainerExecInspect, error) {
|
|
|
+ if d.ContainerExecInspectFn == nil {
|
|
|
+ return moby.ContainerExecInspect{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExecInspectFn(ctx, execID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExecResize(ctx context.Context, execID string, options moby.ResizeOptions) error {
|
|
|
+ if d.ContainerExecResizeFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExecResizeFn(ctx, execID, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExecStart(ctx context.Context, execID string, config moby.ExecStartCheck) error {
|
|
|
+ if d.ContainerExecStartFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExecStartFn(ctx, execID, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerExport(ctx context.Context, container string) (io.ReadCloser, error) {
|
|
|
+ if d.ContainerExportFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerExportFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerInspect(ctx context.Context, container string) (moby.ContainerJSON, error) {
|
|
|
+ if d.ContainerInspectFn == nil {
|
|
|
+ return moby.ContainerJSON{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerInspectFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerInspectWithRaw(ctx context.Context, container string, getSize bool) (moby.ContainerJSON, []byte, error) {
|
|
|
+ if d.ContainerInspectWithRawFn == nil {
|
|
|
+ return moby.ContainerJSON{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerInspectWithRawFn(ctx, container, getSize)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerKill(ctx context.Context, container, signal string) error {
|
|
|
+ if d.ContainerKillFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerKillFn(ctx, container, signal)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerList(ctx context.Context, options moby.ContainerListOptions) ([]moby.Container, error) {
|
|
|
+ if d.ContainerListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerLogs(ctx context.Context, container string, options moby.ContainerLogsOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ContainerLogsFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerLogsFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerPause(ctx context.Context, container string) error {
|
|
|
+ if d.ContainerPauseFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerPauseFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerRemove(ctx context.Context, container string, options moby.ContainerRemoveOptions) error {
|
|
|
+ if d.ContainerRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerRemoveFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerRename(ctx context.Context, container, newContainerName string) error {
|
|
|
+ if d.ContainerRenameFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerRenameFn(ctx, container, newContainerName)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerResize(ctx context.Context, container string, options moby.ResizeOptions) error {
|
|
|
+ if d.ContainerResizeFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerResizeFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerRestart(ctx context.Context, container string, options containerType.StopOptions) error {
|
|
|
+ if d.ContainerRestartFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerRestartFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerStatPath(ctx context.Context, container, path string) (moby.ContainerPathStat, error) {
|
|
|
+ if d.ContainerStatPathFn == nil {
|
|
|
+ return moby.ContainerPathStat{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerStatPathFn(ctx, container, path)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerStats(ctx context.Context, container string, stream bool) (moby.ContainerStats, error) {
|
|
|
+ if d.ContainerStatsFn == nil {
|
|
|
+ return moby.ContainerStats{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerStatsFn(ctx, container, stream)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerStatsOneShot(ctx context.Context, container string) (moby.ContainerStats, error) {
|
|
|
+ if d.ContainerStatsOneShotFn == nil {
|
|
|
+ return moby.ContainerStats{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerStatsOneShotFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerStart(ctx context.Context, container string, options moby.ContainerStartOptions) error {
|
|
|
+ if d.ContainerStartFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerStartFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerStop(ctx context.Context, container string, options containerType.StopOptions) error {
|
|
|
+ if d.ContainerStopFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerStopFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerTop(ctx context.Context, container string, arguments []string) (containerType.ContainerTopOKBody, error) {
|
|
|
+ if d.ContainerTopFn == nil {
|
|
|
+ return containerType.ContainerTopOKBody{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerTopFn(ctx, container, arguments)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerUnpause(ctx context.Context, container string) error {
|
|
|
+ if d.ContainerUnpauseFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerUnpauseFn(ctx, container)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerUpdate(ctx context.Context, container string, updateConfig containerType.UpdateConfig) (containerType.ContainerUpdateOKBody, error) {
|
|
|
+ if d.ContainerUpdateFn == nil {
|
|
|
+ return containerType.ContainerUpdateOKBody{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainerUpdateFn(ctx, container, updateConfig)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainerWait(ctx context.Context, container string, condition containerType.WaitCondition) (<-chan containerType.WaitResponse, <-chan error) {
|
|
|
+ if d.ContainerWaitFn == nil {
|
|
|
+ errC := make(chan error, 1)
|
|
|
+ errC <- ErrNotImplemented
|
|
|
+ return nil, errC
|
|
|
+ }
|
|
|
+ return d.ContainerWaitFn(ctx, container, condition)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, moby.ContainerPathStat, error) {
|
|
|
+ if d.CopyFromContainerFn == nil {
|
|
|
+ return nil, moby.ContainerPathStat{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CopyFromContainerFn(ctx, container, srcPath)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) CopyToContainer(ctx context.Context, container, path string, content io.Reader, options moby.CopyToContainerOptions) error {
|
|
|
+ if d.CopyToContainerFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CopyToContainerFn(ctx, container, path, content, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ContainersPrune(ctx context.Context, pruneFilters filters.Args) (moby.ContainersPruneReport, error) {
|
|
|
+ if d.ContainersPruneFn == nil {
|
|
|
+ return moby.ContainersPruneReport{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ContainersPruneFn(ctx, pruneFilters)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) DistributionInspect(ctx context.Context, imageName, encodedRegistryAuth string) (registry.DistributionInspect, error) {
|
|
|
+ if d.DistributionInspectFn == nil {
|
|
|
+ return registry.DistributionInspect{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.DistributionInspectFn(ctx, imageName, encodedRegistryAuth)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageBuild(ctx context.Context, reader io.Reader, options moby.ImageBuildOptions) (moby.ImageBuildResponse, error) {
|
|
|
+ if d.ImageBuildFn == nil {
|
|
|
+ return moby.ImageBuildResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageBuildFn(ctx, reader, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) BuildCachePrune(ctx context.Context, opts moby.BuildCachePruneOptions) (*moby.BuildCachePruneReport, error) {
|
|
|
+ if d.BuildCachePruneFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.BuildCachePruneFn(ctx, opts)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) BuildCancel(ctx context.Context, id string) error {
|
|
|
+ if d.BuildCancelFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.BuildCancelFn(ctx, id)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageCreate(ctx context.Context, parentReference string, options moby.ImageCreateOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ImageCreateFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageCreateFn(ctx, parentReference, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageHistory(ctx context.Context, imageName string) ([]image.HistoryResponseItem, error) {
|
|
|
+ if d.ImageHistoryFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageHistoryFn(ctx, imageName)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageImport(ctx context.Context, source moby.ImageImportSource, ref string, options moby.ImageImportOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ImageImportFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageImportFn(ctx, source, ref, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageInspectWithRaw(ctx context.Context, imageName string) (moby.ImageInspect, []byte, error) {
|
|
|
+ if d.ImageInspectWithRawFn == nil {
|
|
|
+ return moby.ImageInspect{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageInspectWithRawFn(ctx, imageName)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageList(ctx context.Context, options moby.ImageListOptions) ([]moby.ImageSummary, error) {
|
|
|
+ if d.ImageListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageLoad(ctx context.Context, input io.Reader, quiet bool) (moby.ImageLoadResponse, error) {
|
|
|
+ if d.ImageLoadFn == nil {
|
|
|
+ return moby.ImageLoadResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageLoadFn(ctx, input, quiet)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImagePull(ctx context.Context, ref string, options moby.ImagePullOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ImagePullFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImagePullFn(ctx, ref, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImagePush(ctx context.Context, ref string, options moby.ImagePushOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ImagePushFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImagePushFn(ctx, ref, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageRemove(ctx context.Context, imageName string, options moby.ImageRemoveOptions) ([]moby.ImageDeleteResponseItem, error) {
|
|
|
+ if d.ImageRemoveFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageRemoveFn(ctx, imageName, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageSearch(ctx context.Context, term string, options moby.ImageSearchOptions) ([]registry.SearchResult, error) {
|
|
|
+ if d.ImageSearchFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageSearchFn(ctx, term, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageSave(ctx context.Context, images []string) (io.ReadCloser, error) {
|
|
|
+ if d.ImageSaveFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageSaveFn(ctx, images)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImageTag(ctx context.Context, imageName, ref string) error {
|
|
|
+ if d.ImageTagFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImageTagFn(ctx, imageName, ref)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ImagesPrune(ctx context.Context, pruneFilter filters.Args) (moby.ImagesPruneReport, error) {
|
|
|
+ if d.ImagesPruneFn == nil {
|
|
|
+ return moby.ImagesPruneReport{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ImagesPruneFn(ctx, pruneFilter)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error) {
|
|
|
+ if d.NodeInspectWithRawFn == nil {
|
|
|
+ return swarm.Node{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NodeInspectWithRawFn(ctx, nodeID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NodeList(ctx context.Context, options moby.NodeListOptions) ([]swarm.Node, error) {
|
|
|
+ if d.NodeListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NodeListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NodeRemove(ctx context.Context, nodeID string, options moby.NodeRemoveOptions) error {
|
|
|
+ if d.NodeRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NodeRemoveFn(ctx, nodeID, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error {
|
|
|
+ if d.NodeUpdateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NodeUpdateFn(ctx, nodeID, version, node)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkConnect(ctx context.Context, networkName, container string, config *network.EndpointSettings) error {
|
|
|
+ if d.NetworkConnectFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkConnectFn(ctx, networkName, container, config)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkCreate(ctx context.Context, name string, options moby.NetworkCreate) (moby.NetworkCreateResponse, error) {
|
|
|
+ if d.NetworkCreateFn == nil {
|
|
|
+ return moby.NetworkCreateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkCreateFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkDisconnect(ctx context.Context, networkName, container string, force bool) error {
|
|
|
+ if d.NetworkDisconnectFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkDisconnectFn(ctx, networkName, container, force)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkInspect(ctx context.Context, networkName string, options moby.NetworkInspectOptions) (moby.NetworkResource, error) {
|
|
|
+ if d.NetworkInspectFn == nil {
|
|
|
+ return moby.NetworkResource{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkInspectFn(ctx, networkName, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkInspectWithRaw(ctx context.Context, networkName string, options moby.NetworkInspectOptions) (moby.NetworkResource, []byte, error) {
|
|
|
+ if d.NetworkInspectWithRawFn == nil {
|
|
|
+ return moby.NetworkResource{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkInspectWithRawFn(ctx, networkName, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkList(ctx context.Context, options moby.NetworkListOptions) ([]moby.NetworkResource, error) {
|
|
|
+ if d.NetworkListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworkListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworkRemove(ctx context.Context, networkName string) error {
|
|
|
+ return d.NetworkRemoveFn(ctx, networkName)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NetworksPrune(ctx context.Context, pruneFilter filters.Args) (moby.NetworksPruneReport, error) {
|
|
|
+ if d.NetworksPruneFn == nil {
|
|
|
+ return moby.NetworksPruneReport{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.NetworksPruneFn(ctx, pruneFilter)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginList(ctx context.Context, filter filters.Args) (moby.PluginsListResponse, error) {
|
|
|
+ if d.PluginListFn == nil {
|
|
|
+ return moby.PluginsListResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginListFn(ctx, filter)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginRemove(ctx context.Context, name string, options moby.PluginRemoveOptions) error {
|
|
|
+ if d.PluginRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginRemoveFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginEnable(ctx context.Context, name string, options moby.PluginEnableOptions) error {
|
|
|
+ if d.PluginEnableFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginEnableFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginDisable(ctx context.Context, name string, options moby.PluginDisableOptions) error {
|
|
|
+ if d.PluginDisableFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginDisableFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginInstall(ctx context.Context, name string, options moby.PluginInstallOptions) (io.ReadCloser, error) {
|
|
|
+ if d.PluginInstallFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginInstallFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginUpgrade(ctx context.Context, name string, options moby.PluginInstallOptions) (io.ReadCloser, error) {
|
|
|
+ if d.PluginUpgradeFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginUpgradeFn(ctx, name, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) {
|
|
|
+ if d.PluginPushFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginPushFn(ctx, name, registryAuth)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginSet(ctx context.Context, name string, args []string) error {
|
|
|
+ if d.PluginSetFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginSetFn(ctx, name, args)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginInspectWithRaw(ctx context.Context, name string) (*moby.Plugin, []byte, error) {
|
|
|
+ if d.PluginInspectWithRawFn == nil {
|
|
|
+ return nil, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginInspectWithRawFn(ctx, name)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) PluginCreate(ctx context.Context, createContext io.Reader, options moby.PluginCreateOptions) error {
|
|
|
+ if d.PluginCreateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PluginCreateFn(ctx, createContext, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options moby.ServiceCreateOptions) (moby.ServiceCreateResponse, error) {
|
|
|
+ if d.ServiceCreateFn == nil {
|
|
|
+ return moby.ServiceCreateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceCreateFn(ctx, service, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceInspectWithRaw(ctx context.Context, serviceID string, options moby.ServiceInspectOptions) (swarm.Service, []byte, error) {
|
|
|
+ if d.ServiceInspectWithRawFn == nil {
|
|
|
+ return swarm.Service{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceInspectWithRawFn(ctx, serviceID, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceList(ctx context.Context, options moby.ServiceListOptions) ([]swarm.Service, error) {
|
|
|
+ if d.ServiceListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceRemove(ctx context.Context, serviceID string) error {
|
|
|
+ if d.ServiceRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceRemoveFn(ctx, serviceID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options moby.ServiceUpdateOptions) (moby.ServiceUpdateResponse, error) {
|
|
|
+ if d.ServiceUpdateFn == nil {
|
|
|
+ return moby.ServiceUpdateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceUpdateFn(ctx, serviceID, version, service, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServiceLogs(ctx context.Context, serviceID string, options moby.ContainerLogsOptions) (io.ReadCloser, error) {
|
|
|
+ if d.ServiceLogsFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServiceLogsFn(ctx, serviceID, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) TaskLogs(ctx context.Context, taskID string, options moby.ContainerLogsOptions) (io.ReadCloser, error) {
|
|
|
+ if d.TaskLogsFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.TaskLogsFn(ctx, taskID, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error) {
|
|
|
+ if d.TaskInspectWithRawFn == nil {
|
|
|
+ return swarm.Task{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.TaskInspectWithRawFn(ctx, taskID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) TaskList(ctx context.Context, options moby.TaskListOptions) ([]swarm.Task, error) {
|
|
|
+ if d.TaskListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.TaskListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error) {
|
|
|
+ if d.SwarmInitFn == nil {
|
|
|
+ return "", ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmInitFn(ctx, req)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmJoin(ctx context.Context, req swarm.JoinRequest) error {
|
|
|
+ if d.SwarmJoinFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmJoinFn(ctx, req)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmGetUnlockKey(ctx context.Context) (moby.SwarmUnlockKeyResponse, error) {
|
|
|
+ if d.SwarmGetUnlockKeyFn == nil {
|
|
|
+ return moby.SwarmUnlockKeyResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmGetUnlockKeyFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmUnlock(ctx context.Context, req swarm.UnlockRequest) error {
|
|
|
+ if d.SwarmUnlockFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmUnlockFn(ctx, req)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmLeave(ctx context.Context, force bool) error {
|
|
|
+ if d.SwarmLeaveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmLeaveFn(ctx, force)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmInspect(ctx context.Context) (swarm.Swarm, error) {
|
|
|
+ if d.SwarmInspectFn == nil {
|
|
|
+ return swarm.Swarm{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmInspectFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SwarmUpdate(ctx context.Context, version swarm.Version, swarmSpec swarm.Spec, flags swarm.UpdateFlags) error {
|
|
|
+ if d.SwarmUpdateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SwarmUpdateFn(ctx, version, swarmSpec, flags)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SecretList(ctx context.Context, options moby.SecretListOptions) ([]swarm.Secret, error) {
|
|
|
+ if d.SecretListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SecretListFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SecretCreate(ctx context.Context, secret swarm.SecretSpec) (moby.SecretCreateResponse, error) {
|
|
|
+ if d.SecretCreateFn == nil {
|
|
|
+ return moby.SecretCreateResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SecretCreateFn(ctx, secret)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SecretRemove(ctx context.Context, id string) error {
|
|
|
+ if d.SecretRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SecretRemoveFn(ctx, id)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SecretInspectWithRaw(ctx context.Context, name string) (swarm.Secret, []byte, error) {
|
|
|
+ if d.SecretInspectWithRawFn == nil {
|
|
|
+ return swarm.Secret{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SecretInspectWithRawFn(ctx, name)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) SecretUpdate(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error {
|
|
|
+ if d.SecretUpdateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.SecretUpdateFn(ctx, id, version, secret)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) Events(ctx context.Context, options moby.EventsOptions) (<-chan events.Message, <-chan error) {
|
|
|
+ if d.EventsFn == nil {
|
|
|
+ errC := make(chan error, 1)
|
|
|
+ errC <- ErrNotImplemented
|
|
|
+ return nil, errC
|
|
|
+ }
|
|
|
+ return d.EventsFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) Info(ctx context.Context) (moby.Info, error) {
|
|
|
+ if d.InfoFn == nil {
|
|
|
+ return moby.Info{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.InfoFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) RegistryLogin(ctx context.Context, auth moby.AuthConfig) (registry.AuthenticateOKBody, error) {
|
|
|
+ if d.RegistryLoginFn == nil {
|
|
|
+ return registry.AuthenticateOKBody{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.RegistryLoginFn(ctx, auth)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) DiskUsage(ctx context.Context, options moby.DiskUsageOptions) (moby.DiskUsage, error) {
|
|
|
+ if d.DiskUsageFn == nil {
|
|
|
+ return moby.DiskUsage{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.DiskUsageFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) Ping(ctx context.Context) (moby.Ping, error) {
|
|
|
+ if d.PingFn == nil {
|
|
|
+ return moby.Ping{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.PingFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeCreate(ctx context.Context, options volume.CreateOptions) (volume.Volume, error) {
|
|
|
+ if d.VolumeCreateFn == nil {
|
|
|
+ return volume.Volume{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeCreateFn(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeInspect(ctx context.Context, volumeID string) (volume.Volume, error) {
|
|
|
+ if d.VolumeInspectFn == nil {
|
|
|
+ return volume.Volume{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeInspectFn(ctx, volumeID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeInspectWithRaw(ctx context.Context, volumeID string) (volume.Volume, []byte, error) {
|
|
|
+ if d.VolumeInspectWithRawFn == nil {
|
|
|
+ return volume.Volume{}, nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeInspectWithRawFn(ctx, volumeID)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeList(ctx context.Context, filter filters.Args) (volume.ListResponse, error) {
|
|
|
+ if d.VolumeListFn == nil {
|
|
|
+ return volume.ListResponse{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeListFn(ctx, filter)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeRemove(ctx context.Context, volumeID string, force bool) error {
|
|
|
+ if d.VolumeRemoveFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeRemoveFn(ctx, volumeID, force)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumesPrune(ctx context.Context, pruneFilter filters.Args) (moby.VolumesPruneReport, error) {
|
|
|
+ if d.VolumesPruneFn == nil {
|
|
|
+ return moby.VolumesPruneReport{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumesPruneFn(ctx, pruneFilter)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) VolumeUpdate(ctx context.Context, volumeID string, version swarm.Version, options volume.UpdateOptions) error {
|
|
|
+ if d.VolumeUpdateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.VolumeUpdateFn(ctx, volumeID, version, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ClientVersion() string {
|
|
|
+ if d.ClientVersionFn == nil {
|
|
|
+ return "undefined"
|
|
|
+ }
|
|
|
+ return d.ClientVersionFn()
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) DaemonHost() string {
|
|
|
+ if d.DaemonHostFn == nil {
|
|
|
+ return "undefined"
|
|
|
+ }
|
|
|
+ return d.DaemonHostFn()
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) HTTPClient() *http.Client {
|
|
|
+ if d.HTTPClientFn == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return d.HTTPClientFn()
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) ServerVersion(ctx context.Context) (moby.Version, error) {
|
|
|
+ if d.ServerVersionFn == nil {
|
|
|
+ return moby.Version{}, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.ServerVersionFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NegotiateAPIVersion(ctx context.Context) {
|
|
|
+ if d.NegotiateAPIVersionFn == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ d.NegotiateAPIVersionFn(ctx)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) NegotiateAPIVersionPing(ping moby.Ping) {
|
|
|
+ if d.NegotiateAPIVersionPingFn == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ d.NegotiateAPIVersionPingFn(ping)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) DialHijack(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error) {
|
|
|
+ if d.DialHijackFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.DialHijackFn(ctx, url, proto, meta)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) Dialer() func(context.Context) (net.Conn, error) {
|
|
|
+ if d.DialerFn == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return d.DialerFn()
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) Close() error {
|
|
|
+ if d.CloseFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CloseFn()
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) CheckpointCreate(ctx context.Context, container string, options moby.CheckpointCreateOptions) error {
|
|
|
+ if d.CheckpointCreateFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CheckpointCreateFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) CheckpointDelete(ctx context.Context, container string, options moby.CheckpointDeleteOptions) error {
|
|
|
+ if d.CheckpointDeleteFn == nil {
|
|
|
+ return ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CheckpointDeleteFn(ctx, container, options)
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DryRunClient) CheckpointList(ctx context.Context, container string, options moby.CheckpointListOptions) ([]moby.Checkpoint, error) {
|
|
|
+ if d.CheckpointListFn == nil {
|
|
|
+ return nil, ErrNotImplemented
|
|
|
+ }
|
|
|
+ return d.CheckpointListFn(ctx, container, options)
|
|
|
+}
|