Upload images only when necessary
							parent
							
								
									ffa1e56748
								
							
						
					
					
						commit
						a82a6bfdff
					
				|  | @ -3,6 +3,7 @@ package registry | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
|  | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"github.com/dotcloud/docker/auth" | 	"github.com/dotcloud/docker/auth" | ||||||
| 	"github.com/dotcloud/docker/utils" | 	"github.com/dotcloud/docker/utils" | ||||||
|  | @ -14,6 +15,8 @@ import ( | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | var ErrAlreadyExists error = errors.New("Image already exists") | ||||||
|  | 
 | ||||||
| func doWithCookies(c *http.Client, req *http.Request) (*http.Response, error) { | func doWithCookies(c *http.Client, req *http.Request) (*http.Response, error) { | ||||||
| 	for _, cookie := range c.Jar.Cookies(req.URL) { | 	for _, cookie := range c.Jar.Cookies(req.URL) { | ||||||
| 		req.AddCookie(cookie) | 		req.AddCookie(cookie) | ||||||
|  | @ -291,15 +294,13 @@ func (r *Registry) PushImageJsonRegistry(imgData *ImgData, jsonRaw []byte, regis | ||||||
| 	if res.StatusCode != 200 { | 	if res.StatusCode != 200 { | ||||||
| 		errBody, err := ioutil.ReadAll(res.Body) | 		errBody, err := ioutil.ReadAll(res.Body) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return fmt.Errorf("HTTP code %d while uploading metadata and error when"+ | 			return fmt.Errorf("HTTP code %d while uploading metadata and error when trying to parse response body: %s", res.StatusCode, err) | ||||||
| 				" trying to parse response body: %v", res.StatusCode, err) |  | ||||||
| 		} | 		} | ||||||
| 		var jsonBody map[string]string | 		var jsonBody map[string]string | ||||||
| 		if err := json.Unmarshal(errBody, &jsonBody); err != nil { | 		if err := json.Unmarshal(errBody, &jsonBody); err != nil { | ||||||
| 			errBody = []byte(err.Error()) | 			errBody = []byte(err.Error()) | ||||||
| 		} else if jsonBody["error"] == "Image already exists" { | 		} else if jsonBody["error"] == "Image already exists" { | ||||||
| 			utils.Debugf("Image %s already uploaded ; skipping\n", imgData.Id) | 			return ErrAlreadyExists | ||||||
| 			return nil |  | ||||||
| 		} | 		} | ||||||
| 		return fmt.Errorf("HTTP code %d while uploading metadata: %s", res.StatusCode, errBody) | 		return fmt.Errorf("HTTP code %d while uploading metadata: %s", res.StatusCode, errBody) | ||||||
| 	} | 	} | ||||||
|  | @ -338,8 +339,6 @@ func (r *Registry) PushRegistryTag(remote, revision, tag, registry string, token | ||||||
| 	revision = "\"" + revision + "\"" | 	revision = "\"" + revision + "\"" | ||||||
| 	registry = "https://" + registry + "/v1" | 	registry = "https://" + registry + "/v1" | ||||||
| 
 | 
 | ||||||
| 	utils.Debugf("Pushing tags for rev [%s] on {%s}\n", revision, registry+"/users/"+remote+"/"+tag) |  | ||||||
| 
 |  | ||||||
| 	req, err := http.NewRequest("PUT", registry+"/repositories/"+remote+"/tags/"+tag, strings.NewReader(revision)) | 	req, err := http.NewRequest("PUT", registry+"/repositories/"+remote+"/tags/"+tag, strings.NewReader(revision)) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue