소스 검색

Fix login prompt on push and pull because of error message
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)

Michael Crosby 11 년 전
부모
커밋
0fa9199f78
2개의 변경된 파일5개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 2
      commands.go
  2. 3 3
      registry/registry.go

+ 2 - 2
commands.go

@@ -1047,7 +1047,7 @@ func (cli *DockerCli) CmdPush(args ...string) error {
 	}
 
 	if err := push(authConfig); err != nil {
-		if err.Error() == registry.ErrLoginRequired.Error() {
+		if strings.Contains(err.Error(), "Status 401") {
 			fmt.Fprintln(cli.out, "\nPlease login prior to push:")
 			if err := cli.CmdLogin(endpoint); err != nil {
 				return err
@@ -1106,7 +1106,7 @@ func (cli *DockerCli) CmdPull(args ...string) error {
 	}
 
 	if err := pull(authConfig); err != nil {
-		if err.Error() == registry.ErrLoginRequired.Error() {
+		if strings.Contains(err.Error(), "Status 401") {
 			fmt.Fprintln(cli.out, "\nPlease login prior to pull:")
 			if err := cli.CmdLogin(endpoint); err != nil {
 				return err

+ 3 - 3
registry/registry.go

@@ -22,7 +22,7 @@ import (
 var (
 	ErrAlreadyExists         = errors.New("Image already exists")
 	ErrInvalidRepositoryName = errors.New("Invalid repository name (ex: \"registry.domain.tld/myrepos\")")
-	ErrLoginRequired         = errors.New("Authentication is required.")
+	errLoginRequired         = errors.New("Authentication is required.")
 )
 
 func pingRegistryEndpoint(endpoint string) (bool, error) {
@@ -186,7 +186,7 @@ func (r *Registry) GetRemoteHistory(imgID, registry string, token []string) ([]s
 	defer res.Body.Close()
 	if res.StatusCode != 200 {
 		if res.StatusCode == 401 {
-			return nil, ErrLoginRequired
+			return nil, errLoginRequired
 		}
 		return nil, utils.NewHTTPRequestError(fmt.Sprintf("Server error: %d trying to fetch remote history for %s", res.StatusCode, imgID), res)
 	}
@@ -332,7 +332,7 @@ func (r *Registry) GetRepositoryData(remote string) (*RepositoryData, error) {
 	}
 	defer res.Body.Close()
 	if res.StatusCode == 401 {
-		return nil, ErrLoginRequired
+		return nil, errLoginRequired
 	}
 	// TODO: Right now we're ignoring checksums in the response body.
 	// In the future, we need to use them to check image validity.