|
@@ -2,14 +2,13 @@ package client
|
|
|
|
|
|
import (
|
|
|
"bufio"
|
|
|
- "encoding/json"
|
|
|
"fmt"
|
|
|
"io"
|
|
|
"os"
|
|
|
"runtime"
|
|
|
"strings"
|
|
|
|
|
|
- "github.com/docker/docker/api/types"
|
|
|
+ "github.com/docker/docker/api/client/lib"
|
|
|
Cli "github.com/docker/docker/cli"
|
|
|
"github.com/docker/docker/cliconfig"
|
|
|
flag "github.com/docker/docker/pkg/mflag"
|
|
@@ -120,24 +119,15 @@ func (cli *DockerCli) CmdLogin(args ...string) error {
|
|
|
authconfig.ServerAddress = serverAddress
|
|
|
cli.configFile.AuthConfigs[serverAddress] = authconfig
|
|
|
|
|
|
- serverResp, err := cli.call("POST", "/auth", cli.configFile.AuthConfigs[serverAddress], nil)
|
|
|
- if serverResp.statusCode == 401 {
|
|
|
- delete(cli.configFile.AuthConfigs, serverAddress)
|
|
|
- if err2 := cli.configFile.Save(); err2 != nil {
|
|
|
- fmt.Fprintf(cli.out, "WARNING: could not save config file: %v\n", err2)
|
|
|
- }
|
|
|
- return err
|
|
|
- }
|
|
|
+ auth := cli.configFile.AuthConfigs[serverAddress]
|
|
|
+ response, err := cli.client.RegistryLogin(auth)
|
|
|
if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- defer serverResp.body.Close()
|
|
|
-
|
|
|
- var response types.AuthResponse
|
|
|
- if err := json.NewDecoder(serverResp.body).Decode(&response); err != nil {
|
|
|
- // Upon error, remove entry
|
|
|
- delete(cli.configFile.AuthConfigs, serverAddress)
|
|
|
+ if lib.IsErrUnauthorized(err) {
|
|
|
+ delete(cli.configFile.AuthConfigs, serverAddress)
|
|
|
+ if err2 := cli.configFile.Save(); err2 != nil {
|
|
|
+ fmt.Fprintf(cli.out, "WARNING: could not save config file: %v\n", err2)
|
|
|
+ }
|
|
|
+ }
|
|
|
return err
|
|
|
}
|
|
|
|