mirror of
https://github.com/moby/moby.git
synced 2026-07-12 10:35:14 +00:00
The daemon used to have various implementation to adjust the container-inspect
output for different API versions, which could return different go structs,
and because of that required a function with a `interface{}` output type.
Most of those adjustments have been removed, and we no longer need separate
types for backward compatibility with old API versions.
This patch;
- Removes the Daemon.ContainerInspectCurrent method
- Introduces a backend.ContainerInspectOptions struct
- Updates the Daemon.ContainerInspect method's signature to accept the above
- Moves API-version specific adjustments to api/server/router/container,
similar to how such adjustments are made for other endpoints.
Note that we should probably change the backend's signature further,
and define separate types for the backend's inspect and the API's
inspect response. Considering that the Backend signatures should be
considered "internal", we can do that in a future change.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
81 lines
4.3 KiB
Go
81 lines
4.3 KiB
Go
package executor // import "github.com/docker/docker/daemon/cluster/executor"
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"time"
|
|
|
|
"github.com/distribution/reference"
|
|
"github.com/docker/distribution"
|
|
"github.com/docker/docker/api/types/backend"
|
|
"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/network"
|
|
"github.com/docker/docker/api/types/registry"
|
|
"github.com/docker/docker/api/types/swarm"
|
|
"github.com/docker/docker/api/types/system"
|
|
"github.com/docker/docker/api/types/volume"
|
|
containerpkg "github.com/docker/docker/container"
|
|
clustertypes "github.com/docker/docker/daemon/cluster/provider"
|
|
networkSettings "github.com/docker/docker/daemon/network"
|
|
"github.com/docker/docker/image"
|
|
"github.com/docker/docker/libnetwork"
|
|
"github.com/docker/docker/libnetwork/cluster"
|
|
networktypes "github.com/docker/docker/libnetwork/types"
|
|
"github.com/docker/docker/plugin"
|
|
volumeopts "github.com/docker/docker/volume/service/opts"
|
|
"github.com/moby/swarmkit/v2/agent/exec"
|
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
|
)
|
|
|
|
// Backend defines the executor component for a swarm agent.
|
|
type Backend interface {
|
|
CreateManagedNetwork(clustertypes.NetworkCreateRequest) error
|
|
DeleteManagedNetwork(networkID string) error
|
|
FindNetwork(idName string) (*libnetwork.Network, error)
|
|
SetupIngress(clustertypes.NetworkCreateRequest, string) (<-chan struct{}, error)
|
|
ReleaseIngress() (<-chan struct{}, error)
|
|
CreateManagedContainer(ctx context.Context, config backend.ContainerCreateConfig) (container.CreateResponse, error)
|
|
ContainerStart(ctx context.Context, name string, checkpoint string, checkpointDir string) error
|
|
ContainerStop(ctx context.Context, name string, config container.StopOptions) error
|
|
ContainerLogs(ctx context.Context, name string, config *container.LogsOptions) (msgs <-chan *backend.LogMessage, tty bool, err error)
|
|
ConnectContainerToNetwork(ctx context.Context, containerName, networkName string, endpointConfig *network.EndpointSettings) error
|
|
ActivateContainerServiceBinding(containerName string) error
|
|
DeactivateContainerServiceBinding(containerName string) error
|
|
UpdateContainerServiceConfig(containerName string, serviceConfig *clustertypes.ServiceConfig) error
|
|
ContainerInspect(ctx context.Context, name string, options backend.ContainerInspectOptions) (*container.InspectResponse, error)
|
|
ContainerWait(ctx context.Context, name string, condition containerpkg.WaitCondition) (<-chan containerpkg.StateStatus, error)
|
|
ContainerRm(name string, config *backend.ContainerRmConfig) error
|
|
ContainerKill(name string, sig string) error
|
|
SetContainerDependencyStore(name string, store exec.DependencyGetter) error
|
|
SetContainerSecretReferences(name string, refs []*swarm.SecretReference) error
|
|
SetContainerConfigReferences(name string, refs []*swarm.ConfigReference) error
|
|
SystemInfo(context.Context) (*system.Info, error)
|
|
Containers(ctx context.Context, config *container.ListOptions) ([]*container.Summary, error)
|
|
SetNetworkBootstrapKeys([]*networktypes.EncryptionKey) error
|
|
DaemonJoinsCluster(provider cluster.Provider)
|
|
DaemonLeavesCluster()
|
|
IsSwarmCompatible() error
|
|
SubscribeToEvents(since, until time.Time, filter filters.Args) ([]events.Message, chan interface{})
|
|
UnsubscribeFromEvents(listener chan interface{})
|
|
UpdateAttachment(string, string, string, *network.NetworkingConfig) error
|
|
WaitForDetachment(context.Context, string, string, string, string) error
|
|
PluginManager() *plugin.Manager
|
|
PluginGetter() *plugin.Store
|
|
GetAttachmentStore() *networkSettings.AttachmentStore
|
|
HasExperimental() bool
|
|
}
|
|
|
|
// VolumeBackend is used by an executor to perform volume operations
|
|
type VolumeBackend interface {
|
|
Create(ctx context.Context, name, driverName string, opts ...volumeopts.CreateOption) (*volume.Volume, error)
|
|
}
|
|
|
|
// ImageBackend is used by an executor to perform image operations
|
|
type ImageBackend interface {
|
|
PullImage(ctx context.Context, ref reference.Named, platform *ocispec.Platform, metaHeaders map[string][]string, authConfig *registry.AuthConfig, outStream io.Writer) error
|
|
GetRepositories(context.Context, reference.Named, *registry.AuthConfig) ([]distribution.Repository, error)
|
|
GetImage(ctx context.Context, refOrID string, options backend.GetImageOpts) (*image.Image, error)
|
|
}
|