graph/service.go
ff4ef504
 package graph
 
 import (
af078197
 	"fmt"
603e00a3
 	"io"
 
6f4d8470
 	"github.com/Sirupsen/logrus"
fa2c68a8
 	"github.com/docker/docker/api/types"
ff4ef504
 )
 
fa2c68a8
 func (s *TagStore) LookupRaw(name string) ([]byte, error) {
 	image, err := s.LookupImage(name)
 	if err != nil || image == nil {
 		return nil, fmt.Errorf("No such image %s", name)
 	}
 
 	imageInspectRaw, err := image.RawJson()
 	if err != nil {
 		return nil, err
af078197
 	}
fa2c68a8
 
 	return imageInspectRaw, nil
ff4ef504
 }
 
fa2c68a8
 // Lookup return an image encoded in JSON
 func (s *TagStore) Lookup(name string) (*types.ImageInspect, error) {
 	image, err := s.LookupImage(name)
 	if err != nil || image == nil {
 		return nil, fmt.Errorf("No such image: %s", name)
603e00a3
 	}
68fb7f4b
 
fa2c68a8
 	imageInspect := &types.ImageInspect{
 		Id:              image.ID,
 		Parent:          image.Parent,
 		Comment:         image.Comment,
 		Created:         image.Created,
 		Container:       image.Container,
 		ContainerConfig: &image.ContainerConfig,
 		DockerVersion:   image.DockerVersion,
 		Author:          image.Author,
 		Config:          image.Config,
 		Architecture:    image.Architecture,
 		Os:              image.OS,
 		Size:            image.Size,
 		VirtualSize:     image.GetParentsSize(0) + image.Size,
603e00a3
 	}
fa2c68a8
 
 	return imageInspect, nil
603e00a3
 }
 
ba001759
 // ImageTarLayer return the tarLayer of the image
 func (s *TagStore) ImageTarLayer(name string, dest io.Writer) error {
603e00a3
 	if image, err := s.LookupImage(name); err == nil && image != nil {
 		fs, err := image.TarLayer()
 		if err != nil {
c79b9bab
 			return err
603e00a3
 		}
 		defer fs.Close()
 
ba001759
 		written, err := io.Copy(dest, fs)
114838cb
 		if err != nil {
c79b9bab
 			return err
603e00a3
 		}
6f4d8470
 		logrus.Debugf("rendered layer for %s of [%d] size", image.ID, written)
c79b9bab
 		return nil
603e00a3
 	}
c79b9bab
 	return fmt.Errorf("No such image: %s", name)
603e00a3
 }