Merge branch 'fs' of github.com:dotcloud/docker into fs

This commit is contained in:
shin- 2013-03-12 04:29:06 -07:00
Родитель 63dd8f1018 132ecb2482
Коммит 8158616d61
8 изменённых файлов: 44 добавлений и 54 удалений

Просмотреть файл

@ -1,8 +1,8 @@
package client package client
import ( import (
"../future" "github.com/dotcloud/docker/future"
"../rcli" "github.com/dotcloud/docker/rcli"
"io" "io"
"io/ioutil" "io/ioutil"
"log" "log"

Просмотреть файл

@ -1,9 +1,9 @@
package docker package docker
import ( import (
"./fs"
"encoding/json" "encoding/json"
"errors" "errors"
"github.com/dotcloud/docker/fs"
"github.com/kr/pty" "github.com/kr/pty"
"io" "io"
"io/ioutil" "io/ioutil"
@ -129,6 +129,8 @@ func loadContainer(store *fs.Store, containerPath string, netManager *NetworkMan
) )
if err != nil { if err != nil {
return nil, err return nil, err
} else if mountpoint == nil {
return nil, errors.New("Couldn't load container: unregistered mountpoint.")
} }
container := &Container{ container := &Container{
stdout: newWriteBroadcaster(), stdout: newWriteBroadcaster(),

Просмотреть файл

@ -1,7 +1,7 @@
package docker package docker
import ( import (
"./fs" "github.com/dotcloud/docker/fs"
"container/list" "container/list"
"fmt" "fmt"
"io/ioutil" "io/ioutil"

Просмотреть файл

@ -1,7 +1,7 @@
package main package main
import ( import (
"../client" "github.com/dotcloud/docker/client"
"flag" "flag"
"log" "log"
"os" "os"

Просмотреть файл

@ -1,8 +1,8 @@
package main package main
import ( import (
".." "github.com/dotcloud/docker"
"../server" "github.com/dotcloud/docker/server"
"flag" "flag"
"log" "log"
) )

Просмотреть файл

@ -1,7 +1,7 @@
package fs package fs
import ( import (
"../future" "github.com/dotcloud/docker/future"
"errors" "errors"
"fmt" "fmt"
"io" "io"

Просмотреть файл

@ -1,7 +1,7 @@
package fs package fs
import ( import (
"../fake" "github.com/dotcloud/docker/fake"
"errors" "errors"
"fmt" "fmt"
"io/ioutil" "io/ioutil"

Просмотреть файл

@ -1,15 +1,15 @@
package server package server
import ( import (
".."
"../fs"
"../future"
"../rcli"
"bufio" "bufio"
"bytes" "bytes"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"github.com/dotcloud/docker"
"github.com/dotcloud/docker/fs"
"github.com/dotcloud/docker/future"
"github.com/dotcloud/docker/rcli"
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
@ -42,8 +42,7 @@ func (srv *Server) Help() string {
for _, cmd := range [][]interface{}{ for _, cmd := range [][]interface{}{
{"run", "Run a command in a container"}, {"run", "Run a command in a container"},
{"ps", "Display a list of containers"}, {"ps", "Display a list of containers"},
{"pull", "Download a tarball and create a container from it"}, {"import", "Create a new filesystem image from the contents of a tarball"},
{"put", "Upload a tarball and create a container from it"},
{"port", "Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"}, {"port", "Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"},
{"rm", "Remove containers"}, {"rm", "Remove containers"},
{"kill", "Kill a running container"}, {"kill", "Kill a running container"},
@ -409,15 +408,20 @@ func (srv *Server) CmdKill(stdin io.ReadCloser, stdout io.Writer, args ...string
return nil return nil
} }
func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string) error { func (srv *Server) CmdImport(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
cmd := rcli.Subcmd(stdout, "pull", "[OPTIONS] NAME", "Download a new image from a remote location") cmd := rcli.Subcmd(stdout, "import", "[OPTIONS] NAME", "Create a new filesystem image from the contents of a tarball")
fl_stdin := cmd.Bool("stdin", false, "Read tarball from stdin")
if err := cmd.Parse(args); err != nil { if err := cmd.Parse(args); err != nil {
return nil return nil
} }
var archive io.Reader
name := cmd.Arg(0) name := cmd.Arg(0)
if name == "" { if name == "" {
return errors.New("Not enough arguments") return errors.New("Not enough arguments")
} }
if *fl_stdin {
archive = stdin
} else {
u, err := url.Parse(name) u, err := url.Parse(name)
if err != nil { if err != nil {
return err return err
@ -433,7 +437,7 @@ func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string
fmt.Fprintf(stdout, "Downloading from %s\n", u.String()) fmt.Fprintf(stdout, "Downloading from %s\n", u.String())
// Download with curl (pretty progress bar) // Download with curl (pretty progress bar)
// If curl is not available, fallback to http.Get() // If curl is not available, fallback to http.Get()
archive, err := future.Curl(u.String(), stdout) archive, err = future.Curl(u.String(), stdout)
if err != nil { if err != nil {
if resp, err := http.Get(u.String()); err != nil { if resp, err := http.Get(u.String()); err != nil {
return err return err
@ -441,6 +445,7 @@ func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string
archive = resp.Body archive = resp.Body
} }
} }
}
fmt.Fprintf(stdout, "Unpacking to %s\n", name) fmt.Fprintf(stdout, "Unpacking to %s\n", name)
img, err := srv.images.Create(archive, nil, name, "") img, err := srv.images.Create(archive, nil, name, "")
if err != nil { if err != nil {
@ -450,23 +455,6 @@ func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string
return nil return nil
} }
func (srv *Server) CmdPut(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
cmd := rcli.Subcmd(stdout, "put", "[OPTIONS] NAME", "Import a new image from a local archive.")
if err := cmd.Parse(args); err != nil {
return nil
}
name := cmd.Arg(0)
if name == "" {
return errors.New("Not enough arguments")
}
img, err := srv.images.Create(stdin, nil, name, "")
if err != nil {
return err
}
fmt.Fprintln(stdout, img.Id)
return nil
}
func (srv *Server) CmdImages(stdin io.ReadCloser, stdout io.Writer, args ...string) error { func (srv *Server) CmdImages(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
cmd := rcli.Subcmd(stdout, "images", "[OPTIONS] [NAME]", "List images") cmd := rcli.Subcmd(stdout, "images", "[OPTIONS] [NAME]", "List images")
limit := cmd.Int("l", 0, "Only show the N most recent versions of each image") limit := cmd.Int("l", 0, "Only show the N most recent versions of each image")