image: github.com/containers/image/docker/tarfile Index | Files

package tarfile

import "github.com/containers/image/docker/tarfile"

Package tarfile is an internal implementation detail of some transports. Do not use outside of the github.com/containers/image repo!

Index

Package Files

dest.go doc.go src.go types.go

type Destination Uses

type Destination struct {
    // contains filtered or unexported fields
}

Destination is a partial implementation of types.ImageDestination for writing to an io.Writer.

func NewDestination Uses

func NewDestination(dest io.Writer, ref reference.NamedTagged) *Destination

NewDestination returns a tarfile.Destination for the specified io.Writer.

func (*Destination) AcceptsForeignLayerURLs Uses

func (d *Destination) AcceptsForeignLayerURLs() bool

AcceptsForeignLayerURLs returns false iff foreign layers in manifest should be actually uploaded to the image destination, true otherwise.

func (*Destination) AddRepoTags Uses

func (d *Destination) AddRepoTags(tags []reference.NamedTagged)

AddRepoTags adds the specified tags to the destination's repoTags.

func (*Destination) Commit Uses

func (d *Destination) Commit(ctx context.Context) error

Commit finishes writing data to the underlying io.Writer. It is the caller's responsibility to close it, if necessary.

func (*Destination) HasThreadSafePutBlob Uses

func (d *Destination) HasThreadSafePutBlob() bool

HasThreadSafePutBlob indicates whether PutBlob can be executed concurrently.

func (*Destination) IgnoresEmbeddedDockerReference Uses

func (d *Destination) IgnoresEmbeddedDockerReference() bool

IgnoresEmbeddedDockerReference returns true iff the destination does not care about Image.EmbeddedDockerReferenceConflicts(), and would prefer to receive an unmodified manifest instead of one modified for the destination. Does not make a difference if Reference().DockerReference() is nil.

func (*Destination) MustMatchRuntimeOS Uses

func (d *Destination) MustMatchRuntimeOS() bool

MustMatchRuntimeOS returns true iff the destination can store only images targeted for the current runtime OS. False otherwise.

func (*Destination) PutBlob Uses

func (d *Destination) PutBlob(ctx context.Context, stream io.Reader, inputInfo types.BlobInfo, cache types.BlobInfoCache, isConfig bool) (types.BlobInfo, error)

PutBlob writes contents of stream and returns data representing the result (with all data filled in). inputInfo.Digest can be optionally provided if known; it is not mandatory for the implementation to verify it. inputInfo.Size is the expected length of stream, if known. May update cache. WARNING: The contents of stream are being verified on the fly. Until stream.Read() returns io.EOF, the contents of the data SHOULD NOT be available to any other readers for download using the supplied digest. If stream.Read() at any time, ESPECIALLY at end of input, returns an error, PutBlob MUST 1) fail, and 2) delete any data stored so far.

func (*Destination) PutManifest Uses

func (d *Destination) PutManifest(ctx context.Context, m []byte) error

PutManifest writes manifest to the destination. FIXME? This should also receive a MIME type if known, to differentiate between schema versions. If the destination is in principle available, refuses this manifest type (e.g. it does not recognize the schema), but may accept a different manifest type, the returned error must be an ManifestTypeRejectedError.

func (*Destination) PutSignatures Uses

func (d *Destination) PutSignatures(ctx context.Context, signatures [][]byte) error

PutSignatures adds the given signatures to the docker tarfile (currently not supported). MUST be called after PutManifest (signatures reference manifest contents)

func (*Destination) SupportedManifestMIMETypes Uses

func (d *Destination) SupportedManifestMIMETypes() []string

SupportedManifestMIMETypes tells which manifest mime types the destination supports If an empty slice or nil it's returned, then any mime type can be tried to upload

func (*Destination) SupportsSignatures Uses

func (d *Destination) SupportsSignatures(ctx context.Context) error

SupportsSignatures returns an error (to be displayed to the user) if the destination certainly can't store signatures. Note: It is still possible for PutSignatures to fail if SupportsSignatures returns nil.

func (*Destination) TryReusingBlob Uses

func (d *Destination) TryReusingBlob(ctx context.Context, info types.BlobInfo, cache types.BlobInfoCache, canSubstitute bool) (bool, types.BlobInfo, error)

TryReusingBlob checks whether the transport already contains, or can efficiently reuse, a blob, and if so, applies it to the current destination (e.g. if the blob is a filesystem layer, this signifies that the changes it describes need to be applied again when composing a filesystem tree). info.Digest must not be empty. If canSubstitute, TryReusingBlob can use an equivalent equivalent of the desired blob; in that case the returned info may not match the input. If the blob has been succesfully reused, returns (true, info, nil); info must contain at least a digest and size. If the transport can not reuse the requested blob, TryReusingBlob returns (false, {}, nil); it returns a non-nil error only on an unexpected failure. May use and/or update cache.

type ManifestItem Uses

type ManifestItem struct {
    Config       string
    RepoTags     []string
    Layers       []string
    Parent       imageID                                      `json:",omitempty"`
    LayerSources map[digest.Digest]manifest.Schema2Descriptor `json:",omitempty"`
}

ManifestItem is an element of the array stored in the top-level manifest.json file.

type Source Uses

type Source struct {
    // contains filtered or unexported fields
}

Source is a partial implementation of types.ImageSource for reading from tarPath.

func NewSourceFromFile Uses

func NewSourceFromFile(path string) (*Source, error)

NewSourceFromFile returns a tarfile.Source for the specified path.

func NewSourceFromStream Uses

func NewSourceFromStream(inputStream io.Reader) (*Source, error)

NewSourceFromStream returns a tarfile.Source for the specified inputStream, which can be either compressed or uncompressed. The caller can close the inputStream immediately after NewSourceFromFile returns.

func (*Source) Close Uses

func (s *Source) Close() error

Close removes resources associated with an initialized Source, if any.

func (*Source) GetBlob Uses

func (s *Source) GetBlob(ctx context.Context, info types.BlobInfo, cache types.BlobInfoCache) (io.ReadCloser, int64, error)

GetBlob returns a stream for the specified blob, and the blob’s size (or -1 if unknown). The Digest field in BlobInfo is guaranteed to be provided, Size may be -1 and MediaType may be optionally provided. May update BlobInfoCache, preferably after it knows for certain that a blob truly exists at a specific location.

func (*Source) GetManifest Uses

func (s *Source) GetManifest(ctx context.Context, instanceDigest *digest.Digest) ([]byte, string, error)

GetManifest returns the image's manifest along with its MIME type (which may be empty when it can't be determined but the manifest is available). It may use a remote (= slow) service. If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve (when the primary manifest is a manifest list); this never happens if the primary manifest is not a manifest list (e.g. if the source never returns manifest lists).

func (*Source) GetSignatures Uses

func (s *Source) GetSignatures(ctx context.Context, instanceDigest *digest.Digest) ([][]byte, error)

GetSignatures returns the image's signatures. It may use a remote (= slow) service. If instanceDigest is not nil, it contains a digest of the specific manifest instance to retrieve signatures for (when the primary manifest is a manifest list); this never happens if the primary manifest is not a manifest list (e.g. if the source never returns manifest lists).

func (*Source) HasThreadSafeGetBlob Uses

func (s *Source) HasThreadSafeGetBlob() bool

HasThreadSafeGetBlob indicates whether GetBlob can be executed concurrently.

func (*Source) LoadTarManifest Uses

func (s *Source) LoadTarManifest() ([]ManifestItem, error)

LoadTarManifest loads and decodes the manifest.json

Package tarfile imports 20 packages (graph) and is imported by 13 packages. Updated 2019-08-10. Refresh now. Tools for package owners.