mirror of
https://github.com/containers/skopeo.git
synced 2025-09-17 07:19:37 +00:00
Clean up Image.Inspect
This does not change behavior. Rename types.DockerImageManifest to types.ImageInspectInfo. This naming more accurately reflects what the function does and how it is expected to be used. (The only outstanding non-inspection piece is the Name field, which is kind of a subset of GetIntendedDockerReference() right now. Not sure whether that is intentional.) Also fold makeImageManifest into its only user.
This commit is contained in:
@@ -65,7 +65,7 @@ func (i *dockerImage) Signatures() ([][]byte, error) {
|
|||||||
return i.cachedSignatures, nil
|
return i.cachedSignatures, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *dockerImage) Inspect() (*types.DockerImageManifest, error) {
|
func (i *dockerImage) Inspect() (*types.ImageInspectInfo, error) {
|
||||||
// TODO(runcom): unused version param for now, default to docker v2-1
|
// TODO(runcom): unused version param for now, default to docker v2-1
|
||||||
m, err := i.getSchema1Manifest()
|
m, err := i.getSchema1Manifest()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -75,11 +75,20 @@ func (i *dockerImage) Inspect() (*types.DockerImageManifest, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("error retrivieng manifest schema1")
|
return nil, fmt.Errorf("error retrivieng manifest schema1")
|
||||||
}
|
}
|
||||||
imgManifest, err := makeImageManifest(i.src.ref.FullName(), ms1)
|
v1 := &v1Image{}
|
||||||
if err != nil {
|
if err := json.Unmarshal([]byte(ms1.History[0].V1Compatibility), v1); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return imgManifest, nil
|
return &types.ImageInspectInfo{
|
||||||
|
Name: i.src.ref.FullName(),
|
||||||
|
Tag: ms1.Tag,
|
||||||
|
DockerVersion: v1.DockerVersion,
|
||||||
|
Created: v1.Created,
|
||||||
|
Labels: v1.Config.Labels,
|
||||||
|
Architecture: v1.Architecture,
|
||||||
|
Os: v1.OS,
|
||||||
|
Layers: ms1.GetLayers(),
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRepositoryTags list all tags available in the repository. Note that this has no connection with the tag(s) used for this specific image, if any.
|
// GetRepositoryTags list all tags available in the repository. Note that this has no connection with the tag(s) used for this specific image, if any.
|
||||||
@@ -122,23 +131,6 @@ type v1Image struct {
|
|||||||
OS string `json:"os,omitempty"`
|
OS string `json:"os,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeImageManifest(name string, m *manifestSchema1) (*types.DockerImageManifest, error) {
|
|
||||||
v1 := &v1Image{}
|
|
||||||
if err := json.Unmarshal([]byte(m.History[0].V1Compatibility), v1); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &types.DockerImageManifest{
|
|
||||||
Name: name,
|
|
||||||
Tag: m.Tag,
|
|
||||||
DockerVersion: v1.DockerVersion,
|
|
||||||
Created: v1.Created,
|
|
||||||
Labels: v1.Config.Labels,
|
|
||||||
Architecture: v1.Architecture,
|
|
||||||
Os: v1.OS,
|
|
||||||
Layers: m.GetLayers(),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(runcom)
|
// TODO(runcom)
|
||||||
func (i *dockerImage) DockerTar() ([]byte, error) {
|
func (i *dockerImage) DockerTar() ([]byte, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@@ -62,15 +62,14 @@ type Image interface {
|
|||||||
// Signatures is like ImageSource.GetSignatures, but the result is cached; it is OK to call this however often you need.
|
// Signatures is like ImageSource.GetSignatures, but the result is cached; it is OK to call this however often you need.
|
||||||
Signatures() ([][]byte, error)
|
Signatures() ([][]byte, error)
|
||||||
Layers(layers ...string) error // configure download directory? Call it DownloadLayers?
|
Layers(layers ...string) error // configure download directory? Call it DownloadLayers?
|
||||||
Inspect() (*DockerImageManifest, error)
|
Inspect() (*ImageInspectInfo, error)
|
||||||
DockerTar() ([]byte, error) // ??? also, configure output directory
|
DockerTar() ([]byte, error) // ??? also, configure output directory
|
||||||
// GetRepositoryTags list all tags available in the repository. Note that this has no connection with the tag(s) used for this specific image, if any.
|
// GetRepositoryTags list all tags available in the repository. Note that this has no connection with the tag(s) used for this specific image, if any.
|
||||||
GetRepositoryTags() ([]string, error)
|
GetRepositoryTags() ([]string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DockerImageManifest is a set of metadata describing Docker images and their manifest.json files.
|
// ImageInspectInfo is a set of metadata describing Docker images, primarily their manifest and configuration.
|
||||||
// Note that this is not exactly manifest.json, e.g. some fields have been added.
|
type ImageInspectInfo struct {
|
||||||
type DockerImageManifest struct {
|
|
||||||
Name string
|
Name string
|
||||||
Tag string
|
Tag string
|
||||||
Created time.Time
|
Created time.Time
|
||||||
@@ -81,6 +80,6 @@ type DockerImageManifest struct {
|
|||||||
Layers []string
|
Layers []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *DockerImageManifest) String() string {
|
func (m *ImageInspectInfo) String() string {
|
||||||
return fmt.Sprintf("%s:%s", m.Name, m.Tag)
|
return fmt.Sprintf("%s:%s", m.Name, m.Tag)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user