diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-03-29 13:22:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-29 13:22:25 +0200 |
commit | dabfa10b650d1312f3adde18ed86d3a171896c5b (patch) | |
tree | 501f61fd5a911e33c260d14ead29944bf27e0572 /pkg/domain/infra/tunnel | |
parent | 684b4bd2f16d078edd25d262bb8baefc699508e9 (diff) | |
parent | 3ff1583814b4e69d2d85ee2b1d342d0d5974b9de (diff) | |
download | podman-dabfa10b650d1312f3adde18ed86d3a171896c5b.tar.gz podman-dabfa10b650d1312f3adde18ed86d3a171896c5b.tar.bz2 podman-dabfa10b650d1312f3adde18ed86d3a171896c5b.zip |
Merge pull request #5641 from baude/v2commit
podmanv2 commit
Diffstat (limited to 'pkg/domain/infra/tunnel')
-rw-r--r-- | pkg/domain/infra/tunnel/containers.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pkg/domain/infra/tunnel/containers.go b/pkg/domain/infra/tunnel/containers.go index 3db38ea5c..3c8be90dc 100644 --- a/pkg/domain/infra/tunnel/containers.go +++ b/pkg/domain/infra/tunnel/containers.go @@ -3,6 +3,8 @@ package tunnel import ( "context" + "github.com/containers/image/v5/docker/reference" + "github.com/containers/libpod/pkg/bindings/containers" "github.com/containers/libpod/pkg/domain/entities" "github.com/pkg/errors" @@ -172,3 +174,39 @@ func (ic *ContainerEngine) ContainerTop(ctx context.Context, options entities.To } return &entities.StringSliceReport{Value: topOutput}, nil } + +func (ic *ContainerEngine) ContainerCommit(ctx context.Context, nameOrId string, options entities.CommitOptions) (*entities.CommitReport, error) { + var ( + repo string + tag string = "latest" + ) + if len(options.ImageName) > 0 { + ref, err := reference.Parse(options.ImageName) + if err != nil { + return nil, err + } + if t, ok := ref.(reference.Tagged); ok { + tag = t.Tag() + } + if r, ok := ref.(reference.Named); ok { + repo = r.Name() + } + if len(repo) < 1 { + return nil, errors.Errorf("invalid image name %q", options.ImageName) + } + } + commitOpts := containers.CommitOptions{ + Author: &options.Author, + Changes: options.Changes, + Comment: &options.Message, + Format: &options.Format, + Pause: &options.Pause, + Repo: &repo, + Tag: &tag, + } + response, err := containers.Commit(ic.ClientCxt, nameOrId, commitOpts) + if err != nil { + return nil, err + } + return &entities.CommitReport{Id: response.ID}, nil +} |