drop docker/ code

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2016-03-21 10:15:07 +01:00
parent 7be01242a8
commit 103420769f
4 changed files with 47 additions and 16 deletions

View File

@ -117,9 +117,7 @@ TODO
- update README with `layers` command - update README with `layers` command
- list all images on registry? - list all images on registry?
- registry v2 search? - registry v2 search?
- make skopeo docker registry v2 only
- download layers in parallel and support docker load tar(s) - download layers in parallel and support docker load tar(s)
- get rid of docker/docker code (?)
- show repo tags via flag or when reference isn't tagged or digested - show repo tags via flag or when reference isn't tagged or digested
- add tests (integration with deployed registries in container - Docker-like) - add tests (integration with deployed registries in container - Docker-like)
- support rkt/appc image spec - support rkt/appc image spec

View File

@ -23,12 +23,11 @@ var inspectCmd = cli.Command{
}, },
}, },
Action: func(c *cli.Context) { Action: func(c *cli.Context) {
img, err := skopeo.ParseImage(c.Args().First())
if err != nil {
logrus.Fatal(err)
}
if c.Bool("raw") { if c.Bool("raw") {
img, err := skopeo.ParseImage(c.Args().First())
if err != nil {
logrus.Fatal(err)
}
// TODO(runcom): this is not falling back to v1
// TODO(runcom): hardcoded schema 2 version 1 // TODO(runcom): hardcoded schema 2 version 1
b, err := img.RawManifest("2-1") b, err := img.RawManifest("2-1")
if err != nil { if err != nil {
@ -37,12 +36,11 @@ var inspectCmd = cli.Command{
fmt.Println(string(b)) fmt.Println(string(b))
return return
} }
// get the Image interface before inspecting...utils.go parseImage imgInspect, err := img.Manifest()
imgInspect, err := inspect(c)
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)
} }
out, err := json.Marshal(imgInspect) out, err := json.MarshalIndent(imgInspect, "", " ")
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)
} }

View File

@ -53,11 +53,36 @@ func (i *dockerImage) RawManifest(version string) ([]byte, error) {
return i.rawManifest, nil return i.rawManifest, nil
} }
func (i *dockerImage) Manifest(version string) (types.ImageManifest, error) { func (i *dockerImage) Manifest() (types.ImageManifest, error) {
// TODO(runcom): port docker/docker implementation under docker/ to just // TODO(runcom): unused version param for now, default to docker v2-1
// use this!!! and do not rely on docker upstream code - will need to support m, err := i.getSchema1Manifest()
// v1 fall back also... if err != nil {
return nil, nil return nil, err
}
ms1, ok := m.(*manifestSchema1)
if !ok {
return nil, fmt.Errorf("error retrivieng manifest schema1")
}
// TODO(runcom): get all tags, last argument, and digest
return makeImageManifest(ms1, "", nil), nil
}
func makeImageManifest(m *manifestSchema1, dgst string, tagList []string) types.ImageManifest {
return &types.DockerImageManifest{
Tag: m.Tag,
Digest: dgst,
RepoTags: tagList,
Comment: "",
Created: "",
ContainerConfig: nil,
DockerVersion: "",
Author: "",
Config: nil,
Architecture: "",
Os: "",
Layers: nil,
}
} }
func (i *dockerImage) DockerTar() ([]byte, error) { func (i *dockerImage) DockerTar() ([]byte, error) {
@ -273,6 +298,13 @@ func (i *dockerImage) getSchema1Manifest() (manifest, error) {
if err := fixManifestLayers(mschema1); err != nil { if err := fixManifestLayers(mschema1); err != nil {
return nil, err return nil, err
} }
// TODO(runcom): verify manifest schema 1, 2 etc
//if len(m.FSLayers) != len(m.History) {
//return nil, fmt.Errorf("length of history not equal to number of layers for %q", ref.String())
//}
//if len(m.FSLayers) == 0 {
//return nil, fmt.Errorf("no FSLayers in manifest for %q", ref.String())
//}
return mschema1, nil return mschema1, nil
} }

View File

@ -22,7 +22,7 @@ type Repository interface {
type Image interface { type Image interface {
// ref to repository? // ref to repository?
Layers(layers ...string) error // configure download directory? Call it DownloadLayers? Layers(layers ...string) error // configure download directory? Call it DownloadLayers?
Manifest(version string) (ImageManifest, error) Manifest() (ImageManifest, error)
RawManifest(version string) ([]byte, error) RawManifest(version string) ([]byte, error)
DockerTar() ([]byte, error) // ??? also, configure output directory DockerTar() ([]byte, error) // ??? also, configure output directory
} }
@ -48,5 +48,8 @@ type DockerImageManifest struct {
} }
func (m *DockerImageManifest) Labels() map[string]string { func (m *DockerImageManifest) Labels() map[string]string {
if m.Config == nil {
return nil
}
return m.Config.Labels return m.Config.Labels
} }