| package client // import "github.com/docker/docker/client" |
| |
| import ( |
| "context" |
| "io" |
| "net/url" |
| "strings" |
| |
| "github.com/docker/distribution/reference" |
| "github.com/docker/docker/api/types" |
| ) |
| |
| // ImageImport creates a new image based in the source options. |
| // It returns the JSON content in the response body. |
| func (cli *Client) ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) { |
| if ref != "" { |
| //Check if the given image name can be resolved |
| if _, err := reference.ParseNormalizedNamed(ref); err != nil { |
| return nil, err |
| } |
| } |
| |
| query := url.Values{} |
| query.Set("fromSrc", source.SourceName) |
| query.Set("repo", ref) |
| query.Set("tag", options.Tag) |
| query.Set("message", options.Message) |
| if options.Platform != "" { |
| query.Set("platform", strings.ToLower(options.Platform)) |
| } |
| for _, change := range options.Changes { |
| query.Add("changes", change) |
| } |
| |
| resp, err := cli.postRaw(ctx, "/images/create", query, source.Source, nil) |
| if err != nil { |
| return nil, err |
| } |
| return resp.body, nil |
| } |