|
@@ -9,7 +9,6 @@ import (
|
|
|
"io"
|
|
|
"io/ioutil"
|
|
|
"net"
|
|
|
- "net/http"
|
|
|
"net/url"
|
|
|
"os"
|
|
|
"os/exec"
|
|
@@ -641,56 +640,6 @@ func (srv *Server) ImagePush(job *engine.Job) engine.Status {
|
|
|
return engine.StatusOK
|
|
|
}
|
|
|
|
|
|
-func (srv *Server) ImageImport(job *engine.Job) engine.Status {
|
|
|
- if n := len(job.Args); n != 2 && n != 3 {
|
|
|
- return job.Errorf("Usage: %s SRC REPO [TAG]", job.Name)
|
|
|
- }
|
|
|
- var (
|
|
|
- src = job.Args[0]
|
|
|
- repo = job.Args[1]
|
|
|
- tag string
|
|
|
- sf = utils.NewStreamFormatter(job.GetenvBool("json"))
|
|
|
- archive archive.ArchiveReader
|
|
|
- resp *http.Response
|
|
|
- )
|
|
|
- if len(job.Args) > 2 {
|
|
|
- tag = job.Args[2]
|
|
|
- }
|
|
|
-
|
|
|
- if src == "-" {
|
|
|
- archive = job.Stdin
|
|
|
- } else {
|
|
|
- u, err := url.Parse(src)
|
|
|
- if err != nil {
|
|
|
- return job.Error(err)
|
|
|
- }
|
|
|
- if u.Scheme == "" {
|
|
|
- u.Scheme = "http"
|
|
|
- u.Host = src
|
|
|
- u.Path = ""
|
|
|
- }
|
|
|
- job.Stdout.Write(sf.FormatStatus("", "Downloading from %s", u))
|
|
|
- resp, err = utils.Download(u.String())
|
|
|
- if err != nil {
|
|
|
- return job.Error(err)
|
|
|
- }
|
|
|
- progressReader := utils.ProgressReader(resp.Body, int(resp.ContentLength), job.Stdout, sf, true, "", "Importing")
|
|
|
- defer progressReader.Close()
|
|
|
- archive = progressReader
|
|
|
- }
|
|
|
- img, err := srv.daemon.Graph().Create(archive, "", "", "Imported from "+src, "", nil, nil)
|
|
|
- if err != nil {
|
|
|
- return job.Error(err)
|
|
|
- }
|
|
|
- // Optionally register the image at REPO/TAG
|
|
|
- if repo != "" {
|
|
|
- if err := srv.daemon.Repositories().Set(repo, tag, img.ID, true); err != nil {
|
|
|
- return job.Error(err)
|
|
|
- }
|
|
|
- }
|
|
|
- job.Stdout.Write(sf.FormatStatus("", img.ID))
|
|
|
- return engine.StatusOK
|
|
|
-}
|
|
|
func (srv *Server) DeleteImage(name string, imgs *engine.Table, first, force, noprune bool) error {
|
|
|
var (
|
|
|
repoName, tag string
|