Merge pull request #2132 from nishanttotla/image-ops-engine-api

Moving last few image operations to engine-api
This commit is contained in:
Dongluo Chen 2016-04-22 22:05:02 -07:00
commit bf9e985d5b
3 changed files with 39 additions and 10 deletions

View File

@ -1017,12 +1017,28 @@ func (e *Engine) Pull(image string, authConfig *types.AuthConfig) error {
// Load an image on the engine
func (e *Engine) Load(reader io.Reader) error {
err := e.client.LoadImage(reader)
loadResponse, err := e.apiClient.ImageLoad(context.TODO(), reader, false)
e.CheckConnectionErr(err)
if err != nil {
return err
}
// wait until the image load is finished
dec := json.NewDecoder(loadResponse.Body)
m := map[string]interface{}{}
for {
if err := dec.Decode(&m); err != nil {
if err == io.EOF {
break
}
return err
}
}
// if the final stream object contained an error, return it
if errMsg, ok := m["error"]; ok {
return fmt.Errorf("%v", errMsg)
}
// force fresh images
e.RefreshImages()
@ -1031,7 +1047,13 @@ func (e *Engine) Load(reader io.Reader) error {
// Import image
func (e *Engine) Import(source string, repository string, tag string, imageReader io.Reader) error {
_, err := e.client.ImportImage(source, repository, tag, imageReader)
opts := types.ImageImportOptions{
SourceName: source,
RepositoryName: repository,
Tag: tag,
Source: imageReader,
}
_, err := e.apiClient.ImageImport(context.TODO(), opts)
e.CheckConnectionErr(err)
if err != nil {
return err
@ -1249,7 +1271,13 @@ func (e *Engine) BuildImage(buildImage *types.ImageBuildOptions) (io.ReadCloser,
// TagImage tags an image
func (e *Engine) TagImage(IDOrName string, repo string, tag string, force bool) error {
// send tag request to docker engine
err := e.client.TagImage(IDOrName, repo, tag, force)
opts := types.ImageTagOptions{
ImageID: IDOrName,
RepositoryName: repo,
Tag: tag,
Force: force,
}
err := e.apiClient.ImageTag(context.TODO(), opts)
e.CheckConnectionErr(err)
if err != nil {
return err

View File

@ -155,7 +155,7 @@ func TestImportImage(t *testing.T) {
// import success
readCloser := nopCloser{bytes.NewBufferString("ok")}
client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.AnythingOfType("*io.PipeReader")).Return(readCloser, nil).Once()
apiClient.On("ImageImport", mock.Anything, mock.AnythingOfType("types.ImageImportOptions")).Return(readCloser, nil).Once()
callback := func(what, status string, err error) {
// import success
@ -166,7 +166,7 @@ func TestImportImage(t *testing.T) {
// import error
readCloser = nopCloser{bytes.NewBufferString("error")}
err := fmt.Errorf("Import error")
client.On("ImportImage", mock.Anything, mock.Anything, mock.Anything, mock.AnythingOfType("*io.PipeReader")).Return(readCloser, err).Once()
apiClient.On("ImageImport", mock.Anything, mock.AnythingOfType("types.ImageImportOptions")).Return(readCloser, err).Once()
callback = func(what, status string, err error) {
// import error
@ -207,7 +207,8 @@ func TestLoadImage(t *testing.T) {
c.engines[engine.ID] = engine
// load success
client.On("LoadImage", mock.AnythingOfType("*io.PipeReader")).Return(nil).Once()
readCloser := nopCloser{bytes.NewBufferString("")}
apiClient.On("ImageLoad", mock.Anything, mock.AnythingOfType("*io.PipeReader"), false).Return(types.ImageLoadResponse{Body: readCloser}, nil).Once()
callback := func(what, status string, err error) {
//if load OK, err will be nil
assert.Nil(t, err)
@ -216,7 +217,7 @@ func TestLoadImage(t *testing.T) {
// load error
err := fmt.Errorf("Load error")
client.On("LoadImage", mock.AnythingOfType("*io.PipeReader")).Return(err).Once()
apiClient.On("ImageLoad", mock.Anything, mock.AnythingOfType("*io.PipeReader"), false).Return(types.ImageLoadResponse{}, err).Once()
callback = func(what, status string, err error) {
// load error, err is not nil
assert.NotNil(t, err)
@ -263,7 +264,7 @@ func TestTagImage(t *testing.T) {
c.engines[engine.ID] = engine
// tag image
client.On("TagImage", mock.Anything, mock.Anything, mock.Anything, false).Return(nil).Once()
apiClient.On("ImageTag", mock.Anything, mock.AnythingOfType("types.ImageTagOptions")).Return(nil).Once()
assert.Nil(t, c.TagImage("busybox", "test_busybox", "latest", false))
assert.NotNil(t, c.TagImage("busybox_not_exists", "test_busybox", "latest", false))
}

View File

@ -23,7 +23,7 @@ function teardown() {
docker_swarm load -i $IMAGE_FILE
# and now swarm should have cought the image just loaded.
# and now swarm should have caught the image just loaded.
run docker_swarm images -q
[ "$status" -eq 0 ]
[ "${#lines[@]}" -ge 1 ]