|
@@ -5,56 +5,11 @@ import (
|
|
|
|
|
|
"golang.org/x/net/context"
|
|
|
|
|
|
- Cli "github.com/docker/docker/cli"
|
|
|
- "github.com/docker/docker/pkg/jsonmessage"
|
|
|
- flag "github.com/docker/docker/pkg/mflag"
|
|
|
- "github.com/docker/docker/reference"
|
|
|
- "github.com/docker/docker/registry"
|
|
|
"github.com/docker/engine-api/types"
|
|
|
)
|
|
|
|
|
|
-// CmdPush pushes an image or repository to the registry.
|
|
|
-//
|
|
|
-// Usage: docker push NAME[:TAG]
|
|
|
-func (cli *DockerCli) CmdPush(args ...string) error {
|
|
|
- cmd := Cli.Subcmd("push", []string{"NAME[:TAG]"}, Cli.DockerCommands["push"].Description, true)
|
|
|
- addTrustedFlags(cmd, false)
|
|
|
- cmd.Require(flag.Exact, 1)
|
|
|
-
|
|
|
- cmd.ParseFlags(args, true)
|
|
|
-
|
|
|
- ref, err := reference.ParseNamed(cmd.Arg(0))
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- // Resolve the Repository name from fqn to RepositoryInfo
|
|
|
- repoInfo, err := registry.ParseRepositoryInfo(ref)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- ctx := context.Background()
|
|
|
-
|
|
|
- // Resolve the Auth config relevant for this server
|
|
|
- authConfig := cli.ResolveAuthConfig(ctx, repoInfo.Index)
|
|
|
- requestPrivilege := cli.RegistryAuthenticationPrivilegedFunc(repoInfo.Index, "push")
|
|
|
-
|
|
|
- if IsTrusted() {
|
|
|
- return cli.trustedPush(ctx, repoInfo, ref, authConfig, requestPrivilege)
|
|
|
- }
|
|
|
-
|
|
|
- responseBody, err := cli.imagePushPrivileged(ctx, authConfig, ref.String(), requestPrivilege)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- defer responseBody.Close()
|
|
|
-
|
|
|
- return jsonmessage.DisplayJSONMessagesStream(responseBody, cli.out, cli.outFd, cli.isTerminalOut, nil)
|
|
|
-}
|
|
|
-
|
|
|
-func (cli *DockerCli) imagePushPrivileged(ctx context.Context, authConfig types.AuthConfig, ref string, requestPrivilege types.RequestPrivilegeFunc) (io.ReadCloser, error) {
|
|
|
+// ImagePushPrivileged push the image
|
|
|
+func (cli *DockerCli) ImagePushPrivileged(ctx context.Context, authConfig types.AuthConfig, ref string, requestPrivilege types.RequestPrivilegeFunc) (io.ReadCloser, error) {
|
|
|
encodedAuth, err := EncodeAuthToBase64(authConfig)
|
|
|
if err != nil {
|
|
|
return nil, err
|