Implement docker pull with standalone client lib.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: e78f02c4dbc3cada909c114fef6b6643969ab912
Component: engine
This commit is contained in:
David Calavera
2015-12-06 15:17:34 -05:00
parent 2d27c6f3ba
commit af8924d4fb
10 changed files with 119 additions and 25 deletions

View File

@ -160,6 +160,21 @@ func (cli *DockerCli) cmdAttempt(authConfig cliconfig.AuthConfig, method, path s
return serverResp.body, serverResp.statusCode, err
}
func (cli *DockerCli) encodeRegistryAuth(index *registry.IndexInfo) (string, error) {
authConfig := registry.ResolveAuthConfig(cli.configFile, index)
return authConfig.EncodeToBase64()
}
func (cli *DockerCli) registryAuthenticationPrivilegedFunc(index *registry.IndexInfo, cmdName string) lib.RequestPrivilegeFunc {
return func() (string, error) {
fmt.Fprintf(cli.out, "\nPlease login prior to %s:\n", cmdName)
if err := cli.CmdLogin(index.GetAuthConfigKey()); err != nil {
return "", err
}
return cli.encodeRegistryAuth(index)
}
}
func (cli *DockerCli) clientRequestAttemptLogin(method, path string, in io.Reader, out io.Writer, index *registry.IndexInfo, cmdName string) (io.ReadCloser, int, error) {
// Resolve the Auth config relevant for this server