mirror of
https://github.com/moby/moby.git
synced 2026-08-10 01:49:04 +00:00
Add a new Engine API endpoint that returns the in-toto attestation
statements attached to an image for a given platform. The endpoint
locates the attestation manifest(s) referencing the requested platform's
image manifest, enumerates the statement layers, and returns each
layer's OCI descriptor (including media type, digest, size, and
annotations) together with its in-toto predicate type.
Query parameters:
- platform: JSON-encoded OCI platform; defaults to the daemon's host
platform if omitted.
- type: comma-separated list of in-toto predicate type URIs; if
omitted, all statements are returned.
- statement: boolean, defaults to false. When true, the daemon reads
each matching statement blob and includes the verbatim in-toto JSON
in the response. When false (or omitted), statement blobs are not
read and the Statement field is absent from each entry.
The manifest-chain walk (locating the platform image manifest and its
associated attestation manifest) is delegated to policy-helpers'
image.ResolveSignatureChain so that moby and BuildKit agree on how to
interpret the attestation storage format. The statement-layer iteration
and blob reading is inlined: when statement bodies are requested it
fails fast on the first unreadable blob and reads matching blobs
eagerly into memory; otherwise statement-layer blobs are never read
from the content store.
The endpoint is implemented for the containerd image store. The legacy
graphdriver store returns errdefs.NotImplemented (HTTP 501).
Signed-off-by: Sopho Merkviladze <smerkviladze@mirantis.com>
244 lines
14 KiB
Go
244 lines
14 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
// APIClient is an interface that clients that talk with a docker server must implement.
|
|
type APIClient interface {
|
|
stableAPIClient
|
|
CheckpointAPIClient // CheckpointAPIClient is still experimental.
|
|
}
|
|
|
|
type stableAPIClient interface {
|
|
ConfigAPIClient
|
|
ContainerAPIClient
|
|
DistributionAPIClient
|
|
RegistrySearchClient
|
|
ExecAPIClient
|
|
ImageBuildAPIClient
|
|
ImageAPIClient
|
|
NetworkAPIClient
|
|
PluginAPIClient
|
|
SystemAPIClient
|
|
VolumeAPIClient
|
|
ClientVersion() string
|
|
DaemonHost() string
|
|
ServerVersion(ctx context.Context, options ServerVersionOptions) (ServerVersionResult, error)
|
|
HijackDialer
|
|
Dialer() func(context.Context) (net.Conn, error)
|
|
Close() error
|
|
SwarmManagementAPIClient
|
|
}
|
|
|
|
// SwarmManagementAPIClient defines all methods for managing Swarm-specific
|
|
// objects.
|
|
type SwarmManagementAPIClient interface {
|
|
SwarmAPIClient
|
|
NodeAPIClient
|
|
ServiceAPIClient
|
|
TaskAPIClient
|
|
SecretAPIClient
|
|
ConfigAPIClient
|
|
}
|
|
|
|
// HijackDialer defines methods for a hijack dialer.
|
|
type HijackDialer interface {
|
|
DialHijack(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error)
|
|
}
|
|
|
|
// CheckpointAPIClient defines API client methods for the checkpoints.
|
|
//
|
|
// Experimental: checkpoint and restore is still an experimental feature,
|
|
// and only available if the daemon is running with experimental features
|
|
// enabled.
|
|
type CheckpointAPIClient interface {
|
|
CheckpointCreate(ctx context.Context, container string, options CheckpointCreateOptions) (CheckpointCreateResult, error)
|
|
CheckpointRemove(ctx context.Context, container string, options CheckpointRemoveOptions) (CheckpointRemoveResult, error)
|
|
CheckpointList(ctx context.Context, container string, options CheckpointListOptions) (CheckpointListResult, error)
|
|
}
|
|
|
|
// ContainerAPIClient defines API client methods for the containers
|
|
type ContainerAPIClient interface {
|
|
ContainerCreate(ctx context.Context, options ContainerCreateOptions) (ContainerCreateResult, error)
|
|
ContainerInspect(ctx context.Context, container string, options ContainerInspectOptions) (ContainerInspectResult, error)
|
|
ContainerList(ctx context.Context, options ContainerListOptions) (ContainerListResult, error)
|
|
ContainerUpdate(ctx context.Context, container string, updateConfig ContainerUpdateOptions) (ContainerUpdateResult, error)
|
|
ContainerRemove(ctx context.Context, container string, options ContainerRemoveOptions) (ContainerRemoveResult, error)
|
|
ContainerPrune(ctx context.Context, opts ContainerPruneOptions) (ContainerPruneResult, error)
|
|
|
|
ContainerLogs(ctx context.Context, container string, options ContainerLogsOptions) (ContainerLogsResult, error)
|
|
|
|
ContainerStart(ctx context.Context, container string, options ContainerStartOptions) (ContainerStartResult, error)
|
|
ContainerStop(ctx context.Context, container string, options ContainerStopOptions) (ContainerStopResult, error)
|
|
ContainerRestart(ctx context.Context, container string, options ContainerRestartOptions) (ContainerRestartResult, error)
|
|
ContainerPause(ctx context.Context, container string, options ContainerPauseOptions) (ContainerPauseResult, error)
|
|
ContainerUnpause(ctx context.Context, container string, options ContainerUnpauseOptions) (ContainerUnpauseResult, error)
|
|
ContainerWait(ctx context.Context, container string, options ContainerWaitOptions) ContainerWaitResult
|
|
ContainerKill(ctx context.Context, container string, options ContainerKillOptions) (ContainerKillResult, error)
|
|
|
|
ContainerRename(ctx context.Context, container string, options ContainerRenameOptions) (ContainerRenameResult, error)
|
|
ContainerResize(ctx context.Context, container string, options ContainerResizeOptions) (ContainerResizeResult, error)
|
|
ContainerAttach(ctx context.Context, container string, options ContainerAttachOptions) (ContainerAttachResult, error)
|
|
ContainerCommit(ctx context.Context, container string, options ContainerCommitOptions) (ContainerCommitResult, error)
|
|
ContainerDiff(ctx context.Context, container string, options ContainerDiffOptions) (ContainerDiffResult, error)
|
|
ContainerExport(ctx context.Context, container string, options ContainerExportOptions) (ContainerExportResult, error)
|
|
|
|
ContainerStats(ctx context.Context, container string, options ContainerStatsOptions) (ContainerStatsResult, error)
|
|
ContainerTop(ctx context.Context, container string, options ContainerTopOptions) (ContainerTopResult, error)
|
|
|
|
ContainerStatPath(ctx context.Context, container string, options ContainerStatPathOptions) (ContainerStatPathResult, error)
|
|
CopyFromContainer(ctx context.Context, container string, options CopyFromContainerOptions) (CopyFromContainerResult, error)
|
|
CopyToContainer(ctx context.Context, container string, options CopyToContainerOptions) (CopyToContainerResult, error)
|
|
}
|
|
|
|
type ExecAPIClient interface {
|
|
ExecCreate(ctx context.Context, container string, options ExecCreateOptions) (ExecCreateResult, error)
|
|
ExecInspect(ctx context.Context, execID string, options ExecInspectOptions) (ExecInspectResult, error)
|
|
ExecResize(ctx context.Context, execID string, options ExecResizeOptions) (ExecResizeResult, error)
|
|
|
|
ExecStart(ctx context.Context, execID string, options ExecStartOptions) (ExecStartResult, error)
|
|
ExecAttach(ctx context.Context, execID string, options ExecAttachOptions) (ExecAttachResult, error)
|
|
}
|
|
|
|
// DistributionAPIClient defines API client methods for the registry
|
|
type DistributionAPIClient interface {
|
|
DistributionInspect(ctx context.Context, image string, options DistributionInspectOptions) (DistributionInspectResult, error)
|
|
}
|
|
|
|
type RegistrySearchClient interface {
|
|
ImageSearch(ctx context.Context, term string, options ImageSearchOptions) (ImageSearchResult, error)
|
|
}
|
|
|
|
// ImageBuildAPIClient defines API client methods for building images
|
|
// using the REST API.
|
|
type ImageBuildAPIClient interface {
|
|
ImageBuild(ctx context.Context, context io.Reader, options ImageBuildOptions) (ImageBuildResult, error)
|
|
BuildCachePrune(ctx context.Context, opts BuildCachePruneOptions) (BuildCachePruneResult, error)
|
|
BuildCancel(ctx context.Context, id string, opts BuildCancelOptions) (BuildCancelResult, error)
|
|
}
|
|
|
|
// ImageAPIClient defines API client methods for the images
|
|
type ImageAPIClient interface {
|
|
ImageImport(ctx context.Context, source ImageImportSource, ref string, options ImageImportOptions) (ImageImportResult, error)
|
|
|
|
ImageList(ctx context.Context, options ImageListOptions) (ImageListResult, error)
|
|
ImagePull(ctx context.Context, ref string, options ImagePullOptions) (ImagePullResponse, error)
|
|
ImagePush(ctx context.Context, ref string, options ImagePushOptions) (ImagePushResponse, error)
|
|
ImageRemove(ctx context.Context, image string, options ImageRemoveOptions) (ImageRemoveResult, error)
|
|
ImageTag(ctx context.Context, options ImageTagOptions) (ImageTagResult, error)
|
|
ImagePrune(ctx context.Context, opts ImagePruneOptions) (ImagePruneResult, error)
|
|
|
|
ImageInspect(ctx context.Context, image string, _ ...ImageInspectOption) (ImageInspectResult, error)
|
|
ImageHistory(ctx context.Context, image string, _ ...ImageHistoryOption) (ImageHistoryResult, error)
|
|
ImageAttestations(ctx context.Context, image string, _ ...ImageAttestationsOption) (ImageAttestationsResult, error)
|
|
|
|
ImageLoad(ctx context.Context, input io.Reader, _ ...ImageLoadOption) (ImageLoadResult, error)
|
|
ImageSave(ctx context.Context, images []string, _ ...ImageSaveOption) (ImageSaveResult, error)
|
|
}
|
|
|
|
// NetworkAPIClient defines API client methods for the networks
|
|
type NetworkAPIClient interface {
|
|
NetworkCreate(ctx context.Context, name string, options NetworkCreateOptions) (NetworkCreateResult, error)
|
|
NetworkInspect(ctx context.Context, network string, options NetworkInspectOptions) (NetworkInspectResult, error)
|
|
NetworkList(ctx context.Context, options NetworkListOptions) (NetworkListResult, error)
|
|
NetworkRemove(ctx context.Context, network string, options NetworkRemoveOptions) (NetworkRemoveResult, error)
|
|
NetworkPrune(ctx context.Context, opts NetworkPruneOptions) (NetworkPruneResult, error)
|
|
|
|
NetworkConnect(ctx context.Context, network string, options NetworkConnectOptions) (NetworkConnectResult, error)
|
|
NetworkDisconnect(ctx context.Context, network string, options NetworkDisconnectOptions) (NetworkDisconnectResult, error)
|
|
}
|
|
|
|
// NodeAPIClient defines API client methods for the nodes
|
|
type NodeAPIClient interface {
|
|
NodeInspect(ctx context.Context, nodeID string, options NodeInspectOptions) (NodeInspectResult, error)
|
|
NodeList(ctx context.Context, options NodeListOptions) (NodeListResult, error)
|
|
NodeUpdate(ctx context.Context, nodeID string, options NodeUpdateOptions) (NodeUpdateResult, error)
|
|
NodeRemove(ctx context.Context, nodeID string, options NodeRemoveOptions) (NodeRemoveResult, error)
|
|
}
|
|
|
|
// PluginAPIClient defines API client methods for the plugins
|
|
type PluginAPIClient interface {
|
|
PluginCreate(ctx context.Context, createContext io.Reader, options PluginCreateOptions) (PluginCreateResult, error)
|
|
PluginInstall(ctx context.Context, name string, options PluginInstallOptions) (PluginInstallResult, error)
|
|
PluginInspect(ctx context.Context, name string, options PluginInspectOptions) (PluginInspectResult, error)
|
|
PluginList(ctx context.Context, options PluginListOptions) (PluginListResult, error)
|
|
PluginRemove(ctx context.Context, name string, options PluginRemoveOptions) (PluginRemoveResult, error)
|
|
|
|
PluginEnable(ctx context.Context, name string, options PluginEnableOptions) (PluginEnableResult, error)
|
|
PluginDisable(ctx context.Context, name string, options PluginDisableOptions) (PluginDisableResult, error)
|
|
PluginUpgrade(ctx context.Context, name string, options PluginUpgradeOptions) (PluginUpgradeResult, error)
|
|
PluginPush(ctx context.Context, name string, options PluginPushOptions) (PluginPushResult, error)
|
|
PluginSet(ctx context.Context, name string, options PluginSetOptions) (PluginSetResult, error)
|
|
}
|
|
|
|
// ServiceAPIClient defines API client methods for the services
|
|
type ServiceAPIClient interface {
|
|
ServiceCreate(ctx context.Context, options ServiceCreateOptions) (ServiceCreateResult, error)
|
|
ServiceInspect(ctx context.Context, serviceID string, options ServiceInspectOptions) (ServiceInspectResult, error)
|
|
ServiceList(ctx context.Context, options ServiceListOptions) (ServiceListResult, error)
|
|
ServiceUpdate(ctx context.Context, serviceID string, options ServiceUpdateOptions) (ServiceUpdateResult, error)
|
|
ServiceRemove(ctx context.Context, serviceID string, options ServiceRemoveOptions) (ServiceRemoveResult, error)
|
|
|
|
ServiceLogs(ctx context.Context, serviceID string, options ServiceLogsOptions) (ServiceLogsResult, error)
|
|
}
|
|
|
|
// TaskAPIClient defines API client methods to manage swarm tasks.
|
|
type TaskAPIClient interface {
|
|
TaskInspect(ctx context.Context, taskID string, options TaskInspectOptions) (TaskInspectResult, error)
|
|
TaskList(ctx context.Context, options TaskListOptions) (TaskListResult, error)
|
|
|
|
TaskLogs(ctx context.Context, taskID string, options TaskLogsOptions) (TaskLogsResult, error)
|
|
}
|
|
|
|
// SwarmAPIClient defines API client methods for the swarm
|
|
type SwarmAPIClient interface {
|
|
SwarmInit(ctx context.Context, options SwarmInitOptions) (SwarmInitResult, error)
|
|
SwarmJoin(ctx context.Context, options SwarmJoinOptions) (SwarmJoinResult, error)
|
|
SwarmInspect(ctx context.Context, options SwarmInspectOptions) (SwarmInspectResult, error)
|
|
SwarmUpdate(ctx context.Context, options SwarmUpdateOptions) (SwarmUpdateResult, error)
|
|
SwarmLeave(ctx context.Context, options SwarmLeaveOptions) (SwarmLeaveResult, error)
|
|
|
|
SwarmGetUnlockKey(ctx context.Context) (SwarmGetUnlockKeyResult, error)
|
|
SwarmUnlock(ctx context.Context, options SwarmUnlockOptions) (SwarmUnlockResult, error)
|
|
}
|
|
|
|
// SystemAPIClient defines API client methods for the system
|
|
type SystemAPIClient interface {
|
|
Events(ctx context.Context, options EventsListOptions) EventsResult
|
|
Info(ctx context.Context, options InfoOptions) (SystemInfoResult, error)
|
|
RegistryLogin(ctx context.Context, auth RegistryLoginOptions) (RegistryLoginResult, error)
|
|
DiskUsage(ctx context.Context, options DiskUsageOptions) (DiskUsageResult, error)
|
|
Ping(ctx context.Context, options PingOptions) (PingResult, error)
|
|
}
|
|
|
|
// VolumeAPIClient defines API client methods for the volumes
|
|
type VolumeAPIClient interface {
|
|
VolumeCreate(ctx context.Context, options VolumeCreateOptions) (VolumeCreateResult, error)
|
|
VolumeInspect(ctx context.Context, volumeID string, options VolumeInspectOptions) (VolumeInspectResult, error)
|
|
VolumeList(ctx context.Context, options VolumeListOptions) (VolumeListResult, error)
|
|
VolumeUpdate(ctx context.Context, volumeID string, options VolumeUpdateOptions) (VolumeUpdateResult, error)
|
|
VolumeRemove(ctx context.Context, volumeID string, options VolumeRemoveOptions) (VolumeRemoveResult, error)
|
|
VolumePrune(ctx context.Context, options VolumePruneOptions) (VolumePruneResult, error)
|
|
}
|
|
|
|
// SecretAPIClient defines API client methods for secrets
|
|
type SecretAPIClient interface {
|
|
SecretCreate(ctx context.Context, options SecretCreateOptions) (SecretCreateResult, error)
|
|
SecretInspect(ctx context.Context, id string, options SecretInspectOptions) (SecretInspectResult, error)
|
|
SecretList(ctx context.Context, options SecretListOptions) (SecretListResult, error)
|
|
SecretUpdate(ctx context.Context, id string, options SecretUpdateOptions) (SecretUpdateResult, error)
|
|
SecretRemove(ctx context.Context, id string, options SecretRemoveOptions) (SecretRemoveResult, error)
|
|
}
|
|
|
|
// ConfigAPIClient defines API client methods for configs
|
|
type ConfigAPIClient interface {
|
|
ConfigCreate(ctx context.Context, options ConfigCreateOptions) (ConfigCreateResult, error)
|
|
ConfigInspect(ctx context.Context, id string, options ConfigInspectOptions) (ConfigInspectResult, error)
|
|
ConfigList(ctx context.Context, options ConfigListOptions) (ConfigListResult, error)
|
|
ConfigUpdate(ctx context.Context, id string, options ConfigUpdateOptions) (ConfigUpdateResult, error)
|
|
ConfigRemove(ctx context.Context, id string, options ConfigRemoveOptions) (ConfigRemoveResult, error)
|
|
}
|