Sfoglia il codice sorgente

Merge pull request #7497 from shykes/cleanup-server

Remove deprecated server package
Michael Crosby 11 anni fa
parent
commit
c9e359cf97

+ 1 - 1
api/server/server.go

@@ -1194,7 +1194,7 @@ func ServeFd(addr string, handle http.Handler) error {
 	chErrors := make(chan error, len(ls))
 	chErrors := make(chan error, len(ls))
 
 
 	// We don't want to start serving on these sockets until the
 	// We don't want to start serving on these sockets until the
-	// "initserver" job has completed. Otherwise required handlers
+	// daemon is initialized and installed. Otherwise required handlers
 	// won't be ready.
 	// won't be ready.
 	<-activationLock
 	<-activationLock
 
 

+ 0 - 4
builtins/builtins.go

@@ -11,7 +11,6 @@ import (
 	"github.com/docker/docker/events"
 	"github.com/docker/docker/events"
 	"github.com/docker/docker/pkg/parsers/kernel"
 	"github.com/docker/docker/pkg/parsers/kernel"
 	"github.com/docker/docker/registry"
 	"github.com/docker/docker/registry"
-	"github.com/docker/docker/server"
 )
 )
 
 
 func Register(eng *engine.Engine) error {
 func Register(eng *engine.Engine) error {
@@ -54,9 +53,6 @@ func remote(eng *engine.Engine) error {
 // These components should be broken off into plugins of their own.
 // These components should be broken off into plugins of their own.
 //
 //
 func daemon(eng *engine.Engine) error {
 func daemon(eng *engine.Engine) error {
-	if err := eng.Register("initserver", server.InitServer); err != nil {
-		return err
-	}
 	return eng.Register("init_networkdriver", bridge.InitDriver)
 	return eng.Register("init_networkdriver", bridge.InitDriver)
 }
 }
 
 

+ 88 - 8
builder/builder.go → daemon/build.go

@@ -1,4 +1,4 @@
-package builder
+package daemon
 
 
 import (
 import (
 	"crypto/sha256"
 	"crypto/sha256"
@@ -10,6 +10,7 @@ import (
 	"io/ioutil"
 	"io/ioutil"
 	"net/url"
 	"net/url"
 	"os"
 	"os"
+	"os/exec"
 	"path"
 	"path"
 	"path/filepath"
 	"path/filepath"
 	"reflect"
 	"reflect"
@@ -20,7 +21,6 @@ import (
 	"time"
 	"time"
 
 
 	"github.com/docker/docker/archive"
 	"github.com/docker/docker/archive"
-	"github.com/docker/docker/daemon"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/nat"
 	"github.com/docker/docker/nat"
 	"github.com/docker/docker/pkg/parsers"
 	"github.com/docker/docker/pkg/parsers"
@@ -32,6 +32,86 @@ import (
 	"github.com/docker/docker/utils"
 	"github.com/docker/docker/utils"
 )
 )
 
 
+func (daemon *Daemon) CmdBuild(job *engine.Job) engine.Status {
+	if len(job.Args) != 0 {
+		return job.Errorf("Usage: %s\n", job.Name)
+	}
+	var (
+		remoteURL      = job.Getenv("remote")
+		repoName       = job.Getenv("t")
+		suppressOutput = job.GetenvBool("q")
+		noCache        = job.GetenvBool("nocache")
+		rm             = job.GetenvBool("rm")
+		forceRm        = job.GetenvBool("forcerm")
+		authConfig     = &registry.AuthConfig{}
+		configFile     = &registry.ConfigFile{}
+		tag            string
+		context        io.ReadCloser
+	)
+	job.GetenvJson("authConfig", authConfig)
+	job.GetenvJson("configFile", configFile)
+	repoName, tag = parsers.ParseRepositoryTag(repoName)
+
+	if remoteURL == "" {
+		context = ioutil.NopCloser(job.Stdin)
+	} else if utils.IsGIT(remoteURL) {
+		if !strings.HasPrefix(remoteURL, "git://") {
+			remoteURL = "https://" + remoteURL
+		}
+		root, err := ioutil.TempDir("", "docker-build-git")
+		if err != nil {
+			return job.Error(err)
+		}
+		defer os.RemoveAll(root)
+
+		if output, err := exec.Command("git", "clone", "--recursive", remoteURL, root).CombinedOutput(); err != nil {
+			return job.Errorf("Error trying to use git: %s (%s)", err, output)
+		}
+
+		c, err := archive.Tar(root, archive.Uncompressed)
+		if err != nil {
+			return job.Error(err)
+		}
+		context = c
+	} else if utils.IsURL(remoteURL) {
+		f, err := utils.Download(remoteURL)
+		if err != nil {
+			return job.Error(err)
+		}
+		defer f.Body.Close()
+		dockerFile, err := ioutil.ReadAll(f.Body)
+		if err != nil {
+			return job.Error(err)
+		}
+		c, err := archive.Generate("Dockerfile", string(dockerFile))
+		if err != nil {
+			return job.Error(err)
+		}
+		context = c
+	}
+	defer context.Close()
+
+	sf := utils.NewStreamFormatter(job.GetenvBool("json"))
+	b := NewBuildFile(daemon, daemon.eng,
+		&utils.StdoutFormater{
+			Writer:          job.Stdout,
+			StreamFormatter: sf,
+		},
+		&utils.StderrFormater{
+			Writer:          job.Stdout,
+			StreamFormatter: sf,
+		},
+		!suppressOutput, !noCache, rm, forceRm, job.Stdout, sf, authConfig, configFile)
+	id, err := b.Build(context)
+	if err != nil {
+		return job.Error(err)
+	}
+	if repoName != "" {
+		daemon.Repositories().Set(repoName, tag, id, false)
+	}
+	return engine.StatusOK
+}
+
 var (
 var (
 	ErrDockerfileEmpty = errors.New("Dockerfile cannot be empty")
 	ErrDockerfileEmpty = errors.New("Dockerfile cannot be empty")
 )
 )
@@ -43,7 +123,7 @@ type BuildFile interface {
 }
 }
 
 
 type buildFile struct {
 type buildFile struct {
-	daemon *daemon.Daemon
+	daemon *Daemon
 	eng    *engine.Engine
 	eng    *engine.Engine
 
 
 	image      string
 	image      string
@@ -124,7 +204,7 @@ func (b *buildFile) CmdFrom(name string) error {
 		b.config = image.Config
 		b.config = image.Config
 	}
 	}
 	if b.config.Env == nil || len(b.config.Env) == 0 {
 	if b.config.Env == nil || len(b.config.Env) == 0 {
-		b.config.Env = append(b.config.Env, "PATH="+daemon.DefaultPathEnv)
+		b.config.Env = append(b.config.Env, "PATH="+DefaultPathEnv)
 	}
 	}
 	// Process ONBUILD triggers if they exist
 	// Process ONBUILD triggers if they exist
 	if nTriggers := len(b.config.OnBuild); nTriggers != 0 {
 	if nTriggers := len(b.config.OnBuild); nTriggers != 0 {
@@ -416,7 +496,7 @@ func (b *buildFile) checkPathForAddition(orig string) error {
 	return nil
 	return nil
 }
 }
 
 
-func (b *buildFile) addContext(container *daemon.Container, orig, dest string, decompress bool) error {
+func (b *buildFile) addContext(container *Container, orig, dest string, decompress bool) error {
 	var (
 	var (
 		err        error
 		err        error
 		destExists = true
 		destExists = true
@@ -668,7 +748,7 @@ func (b *buildFile) CmdAdd(args string) error {
 	return b.runContextCommand(args, true, true, "ADD")
 	return b.runContextCommand(args, true, true, "ADD")
 }
 }
 
 
-func (b *buildFile) create() (*daemon.Container, error) {
+func (b *buildFile) create() (*Container, error) {
 	if b.image == "" {
 	if b.image == "" {
 		return nil, fmt.Errorf("Please provide a source image with `from` prior to run")
 		return nil, fmt.Errorf("Please provide a source image with `from` prior to run")
 	}
 	}
@@ -689,7 +769,7 @@ func (b *buildFile) create() (*daemon.Container, error) {
 	return c, nil
 	return c, nil
 }
 }
 
 
-func (b *buildFile) run(c *daemon.Container) error {
+func (b *buildFile) run(c *Container) error {
 	var errCh chan error
 	var errCh chan error
 	if b.verbose {
 	if b.verbose {
 		errCh = utils.Go(func() error {
 		errCh = utils.Go(func() error {
@@ -906,7 +986,7 @@ func fixPermissions(destination string, uid, gid int) error {
 	})
 	})
 }
 }
 
 
-func NewBuildFile(d *daemon.Daemon, eng *engine.Engine, outStream, errStream io.Writer, verbose, utilizeCache, rm bool, forceRm bool, outOld io.Writer, sf *utils.StreamFormatter, auth *registry.AuthConfig, authConfigFile *registry.ConfigFile) BuildFile {
+func NewBuildFile(d *Daemon, eng *engine.Engine, outStream, errStream io.Writer, verbose, utilizeCache, rm bool, forceRm bool, outOld io.Writer, sf *utils.StreamFormatter, auth *registry.AuthConfig, authConfigFile *registry.ConfigFile) BuildFile {
 	return &buildFile{
 	return &buildFile{
 		daemon:        d,
 		daemon:        d,
 		eng:           eng,
 		eng:           eng,

+ 7 - 0
daemon/daemon.go

@@ -109,6 +109,7 @@ func (daemon *Daemon) Install(eng *engine.Engine) error {
 	// FIXME: remove ImageDelete's dependency on Daemon, then move to graph/
 	// FIXME: remove ImageDelete's dependency on Daemon, then move to graph/
 	for name, method := range map[string]engine.Handler{
 	for name, method := range map[string]engine.Handler{
 		"attach":            daemon.ContainerAttach,
 		"attach":            daemon.ContainerAttach,
+		"build":             daemon.CmdBuild,
 		"commit":            daemon.ContainerCommit,
 		"commit":            daemon.ContainerCommit,
 		"container_changes": daemon.ContainerChanges,
 		"container_changes": daemon.ContainerChanges,
 		"container_copy":    daemon.ContainerCopy,
 		"container_copy":    daemon.ContainerCopy,
@@ -134,6 +135,12 @@ func (daemon *Daemon) Install(eng *engine.Engine) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
+	if err := daemon.Repositories().Install(eng); err != nil {
+		return err
+	}
+	// FIXME: this hack is necessary for legacy integration tests to access
+	// the daemon object.
+	eng.Hack_SetGlobalVar("httpapi.daemon", daemon)
 	return nil
 	return nil
 }
 }
 
 

+ 0 - 41
daemonconfig/config.go

@@ -2,7 +2,6 @@ package daemonconfig
 
 
 import (
 import (
 	"github.com/docker/docker/daemon/networkdriver"
 	"github.com/docker/docker/daemon/networkdriver"
-	"github.com/docker/docker/engine"
 	"net"
 	"net"
 )
 )
 
 
@@ -34,46 +33,6 @@ type Config struct {
 	Sockets                     []string
 	Sockets                     []string
 }
 }
 
 
-// ConfigFromJob creates and returns a new DaemonConfig object
-// by parsing the contents of a job's environment.
-func ConfigFromJob(job *engine.Job) *Config {
-	config := &Config{
-		Pidfile:                     job.Getenv("Pidfile"),
-		Root:                        job.Getenv("Root"),
-		AutoRestart:                 job.GetenvBool("AutoRestart"),
-		EnableIptables:              job.GetenvBool("EnableIptables"),
-		EnableIpForward:             job.GetenvBool("EnableIpForward"),
-		BridgeIP:                    job.Getenv("BridgeIP"),
-		BridgeIface:                 job.Getenv("BridgeIface"),
-		DefaultIp:                   net.ParseIP(job.Getenv("DefaultIp")),
-		InterContainerCommunication: job.GetenvBool("InterContainerCommunication"),
-		GraphDriver:                 job.Getenv("GraphDriver"),
-		ExecDriver:                  job.Getenv("ExecDriver"),
-		EnableSelinuxSupport:        job.GetenvBool("EnableSelinuxSupport"),
-	}
-	if graphOpts := job.GetenvList("GraphOptions"); graphOpts != nil {
-		config.GraphOptions = graphOpts
-	}
-
-	if dns := job.GetenvList("Dns"); dns != nil {
-		config.Dns = dns
-	}
-	if dnsSearch := job.GetenvList("DnsSearch"); dnsSearch != nil {
-		config.DnsSearch = dnsSearch
-	}
-	if mtu := job.GetenvInt("Mtu"); mtu != 0 {
-		config.Mtu = mtu
-	} else {
-		config.Mtu = GetDefaultNetworkMtu()
-	}
-	config.DisableNetwork = config.BridgeIface == DisableNetworkBridge
-	if sockets := job.GetenvList("Sockets"); sockets != nil {
-		config.Sockets = sockets
-	}
-
-	return config
-}
-
 func GetDefaultNetworkMtu() int {
 func GetDefaultNetworkMtu() int {
 	if iface, err := networkdriver.GetDefaultRouteIface(); err == nil {
 	if iface, err := networkdriver.GetDefaultRouteIface(); err == nil {
 		return iface.MTU
 		return iface.MTU

+ 34 - 22
docker/daemon.go

@@ -7,8 +7,10 @@ import (
 	"net"
 	"net"
 
 
 	"github.com/docker/docker/builtins"
 	"github.com/docker/docker/builtins"
+	"github.com/docker/docker/daemon"
 	_ "github.com/docker/docker/daemon/execdriver/lxc"
 	_ "github.com/docker/docker/daemon/execdriver/lxc"
 	_ "github.com/docker/docker/daemon/execdriver/native"
 	_ "github.com/docker/docker/daemon/execdriver/native"
+	"github.com/docker/docker/daemonconfig"
 	"github.com/docker/docker/dockerversion"
 	"github.com/docker/docker/dockerversion"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/engine"
 	flag "github.com/docker/docker/pkg/mflag"
 	flag "github.com/docker/docker/pkg/mflag"
@@ -46,27 +48,38 @@ func mainDaemon() {
 	// the http api so that connections don't fail while the daemon
 	// the http api so that connections don't fail while the daemon
 	// is booting
 	// is booting
 	go func() {
 	go func() {
-		// Load plugin: httpapi
-		job := eng.Job("initserver")
-		// include the variable here too, for the server config
-		job.Setenv("Pidfile", *pidfile)
-		job.Setenv("Root", *flRoot)
-		job.SetenvBool("AutoRestart", *flAutoRestart)
-		job.SetenvList("Dns", flDns.GetAll())
-		job.SetenvList("DnsSearch", flDnsSearch.GetAll())
-		job.SetenvBool("EnableIptables", *flEnableIptables)
-		job.SetenvBool("EnableIpForward", *flEnableIpForward)
-		job.Setenv("BridgeIface", *bridgeName)
-		job.Setenv("BridgeIP", *bridgeIp)
-		job.Setenv("DefaultIp", *flDefaultIp)
-		job.SetenvBool("InterContainerCommunication", *flInterContainerComm)
-		job.Setenv("GraphDriver", *flGraphDriver)
-		job.SetenvList("GraphOptions", flGraphOpts.GetAll())
-		job.Setenv("ExecDriver", *flExecDriver)
-		job.SetenvInt("Mtu", *flMtu)
-		job.SetenvBool("EnableSelinuxSupport", *flSelinuxEnabled)
-		job.SetenvList("Sockets", flHosts.GetAll())
-		if err := job.Run(); err != nil {
+		// FIXME: daemonconfig and CLI flag parsing should be directly integrated
+		cfg := &daemonconfig.Config{
+			Pidfile:                     *pidfile,
+			Root:                        *flRoot,
+			AutoRestart:                 *flAutoRestart,
+			EnableIptables:              *flEnableIptables,
+			EnableIpForward:             *flEnableIpForward,
+			BridgeIP:                    *bridgeIp,
+			BridgeIface:                 *bridgeName,
+			DefaultIp:                   net.ParseIP(*flDefaultIp),
+			InterContainerCommunication: *flInterContainerComm,
+			GraphDriver:                 *flGraphDriver,
+			ExecDriver:                  *flExecDriver,
+			EnableSelinuxSupport:        *flSelinuxEnabled,
+			GraphOptions:                flGraphOpts.GetAll(),
+			Dns:                         flDns.GetAll(),
+			DnsSearch:                   flDnsSearch.GetAll(),
+			Mtu:                         *flMtu,
+			Sockets:                     flHosts.GetAll(),
+		}
+		// FIXME this should be initialized in NewDaemon or somewhere in daemonconfig.
+		// Currently it is copy-pasted in `integration` to create test daemons that work.
+		if cfg.Mtu == 0 {
+			cfg.Mtu = daemonconfig.GetDefaultNetworkMtu()
+		}
+		cfg.DisableNetwork = cfg.BridgeIface == daemonconfig.DisableNetworkBridge
+
+		d, err := daemon.NewDaemon(cfg, eng)
+		if err != nil {
+			log.Fatal(err)
+		}
+		if err := d.Install(eng); err != nil {
 			log.Fatal(err)
 			log.Fatal(err)
 		}
 		}
 		// after the daemon is done setting up we can tell the api to start
 		// after the daemon is done setting up we can tell the api to start
@@ -75,7 +88,6 @@ func mainDaemon() {
 			log.Fatal(err)
 			log.Fatal(err)
 		}
 		}
 	}()
 	}()
-
 	// TODO actually have a resolved graphdriver to show?
 	// TODO actually have a resolved graphdriver to show?
 	log.Printf("docker daemon: %s %s; execdriver: %s; graphdriver: %s",
 	log.Printf("docker daemon: %s %s; execdriver: %s; graphdriver: %s",
 		dockerversion.VERSION,
 		dockerversion.VERSION,

+ 1 - 1
integration/runtime_test.go

@@ -202,7 +202,7 @@ func spawnHttpsDaemon(addr, cacert, cert, key string) *engine.Engine {
 	if err != nil {
 	if err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
-	// FIXME: here we don't use NewTestEngine because it calls initserver with Autorestart=false,
+	// FIXME: here we don't use NewTestEngine because it configures the daemon with Autorestart=false,
 	// and we want to set it to true.
 	// and we want to set it to true.
 
 
 	eng := newTestEngine(t, true, root)
 	eng := newTestEngine(t, true, root)

+ 4 - 7
integration/server_test.go

@@ -100,7 +100,6 @@ func TestMergeConfigOnCommit(t *testing.T) {
 
 
 func TestRestartKillWait(t *testing.T) {
 func TestRestartKillWait(t *testing.T) {
 	eng := NewTestEngine(t)
 	eng := NewTestEngine(t)
-	srv := mkServerFromEngine(eng, t)
 	runtime := mkDaemonFromEngine(eng, t)
 	runtime := mkDaemonFromEngine(eng, t)
 	defer runtime.Nuke()
 	defer runtime.Nuke()
 
 
@@ -138,9 +137,8 @@ func TestRestartKillWait(t *testing.T) {
 	}
 	}
 
 
 	eng = newTestEngine(t, false, runtime.Config().Root)
 	eng = newTestEngine(t, false, runtime.Config().Root)
-	srv = mkServerFromEngine(eng, t)
 
 
-	job = srv.Eng.Job("containers")
+	job = eng.Job("containers")
 	job.SetenvBool("all", true)
 	job.SetenvBool("all", true)
 	outs, err = job.Stdout.AddListTable()
 	outs, err = job.Stdout.AddListTable()
 	if err != nil {
 	if err != nil {
@@ -155,7 +153,7 @@ func TestRestartKillWait(t *testing.T) {
 	}
 	}
 
 
 	setTimeout(t, "Waiting on stopped container timedout", 5*time.Second, func() {
 	setTimeout(t, "Waiting on stopped container timedout", 5*time.Second, func() {
-		job = srv.Eng.Job("wait", outs.Data[0].Get("Id"))
+		job = eng.Job("wait", outs.Data[0].Get("Id"))
 		if err := job.Run(); err != nil {
 		if err := job.Run(); err != nil {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
@@ -164,7 +162,6 @@ func TestRestartKillWait(t *testing.T) {
 
 
 func TestCreateStartRestartStopStartKillRm(t *testing.T) {
 func TestCreateStartRestartStopStartKillRm(t *testing.T) {
 	eng := NewTestEngine(t)
 	eng := NewTestEngine(t)
-	srv := mkServerFromEngine(eng, t)
 	defer mkDaemonFromEngine(eng, t).Nuke()
 	defer mkDaemonFromEngine(eng, t).Nuke()
 
 
 	config, hostConfig, _, err := runconfig.Parse([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
 	config, hostConfig, _, err := runconfig.Parse([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
@@ -174,7 +171,7 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) {
 
 
 	id := createTestContainer(eng, config, t)
 	id := createTestContainer(eng, config, t)
 
 
-	job := srv.Eng.Job("containers")
+	job := eng.Job("containers")
 	job.SetenvBool("all", true)
 	job.SetenvBool("all", true)
 	outs, err := job.Stdout.AddListTable()
 	outs, err := job.Stdout.AddListTable()
 	if err != nil {
 	if err != nil {
@@ -227,7 +224,7 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 
 
-	job = srv.Eng.Job("containers")
+	job = eng.Job("containers")
 	job.SetenvBool("all", true)
 	job.SetenvBool("all", true)
 	outs, err = job.Stdout.AddListTable()
 	outs, err = job.Stdout.AddListTable()
 	if err != nil {
 	if err != nil {

+ 17 - 20
integration/utils_test.go

@@ -17,9 +17,9 @@ import (
 
 
 	"github.com/docker/docker/builtins"
 	"github.com/docker/docker/builtins"
 	"github.com/docker/docker/daemon"
 	"github.com/docker/docker/daemon"
+	"github.com/docker/docker/daemonconfig"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/runconfig"
 	"github.com/docker/docker/runconfig"
-	"github.com/docker/docker/server"
 	"github.com/docker/docker/utils"
 	"github.com/docker/docker/utils"
 )
 )
 
 
@@ -153,18 +153,6 @@ func getContainer(eng *engine.Engine, id string, t utils.Fataler) *daemon.Contai
 	return c
 	return c
 }
 }
 
 
-func mkServerFromEngine(eng *engine.Engine, t utils.Fataler) *server.Server {
-	iSrv := eng.Hack_GetGlobalVar("httpapi.server")
-	if iSrv == nil {
-		panic("Legacy server field not set in engine")
-	}
-	srv, ok := iSrv.(*server.Server)
-	if !ok {
-		panic("Legacy server field in engine does not cast to *server.Server")
-	}
-	return srv
-}
-
 func mkDaemonFromEngine(eng *engine.Engine, t utils.Fataler) *daemon.Daemon {
 func mkDaemonFromEngine(eng *engine.Engine, t utils.Fataler) *daemon.Daemon {
 	iDaemon := eng.Hack_GetGlobalVar("httpapi.daemon")
 	iDaemon := eng.Hack_GetGlobalVar("httpapi.daemon")
 	if iDaemon == nil {
 	if iDaemon == nil {
@@ -191,13 +179,22 @@ func newTestEngine(t utils.Fataler, autorestart bool, root string) *engine.Engin
 	// Load default plugins
 	// Load default plugins
 	builtins.Register(eng)
 	builtins.Register(eng)
 	// (This is manually copied and modified from main() until we have a more generic plugin system)
 	// (This is manually copied and modified from main() until we have a more generic plugin system)
-	job := eng.Job("initserver")
-	job.Setenv("Root", root)
-	job.SetenvBool("AutoRestart", autorestart)
-	job.Setenv("ExecDriver", "native")
-	// TestGetEnabledCors and TestOptionsRoute require EnableCors=true
-	job.SetenvBool("EnableCors", true)
-	if err := job.Run(); err != nil {
+	cfg := &daemonconfig.Config{
+		Root:        root,
+		AutoRestart: autorestart,
+		ExecDriver:  "native",
+	}
+	// FIXME: this should be initialized in NewDaemon or somewhere in daemonconfig.
+	// Currently it is copy-pasted from daemonMain()
+	if cfg.Mtu == 0 {
+		cfg.Mtu = daemonconfig.GetDefaultNetworkMtu()
+	}
+	cfg.DisableNetwork = cfg.BridgeIface == daemonconfig.DisableNetworkBridge
+	d, err := daemon.NewDaemon(cfg, eng)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if err := d.Install(eng); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 	return eng
 	return eng

+ 0 - 3
server/MAINTAINERS

@@ -1,3 +0,0 @@
-Solomon Hykes <solomon@docker.com> (@shykes)
-Victor Vieux <vieux@docker.com> (@vieux)
-buildfile.go: Tibor Vass <teabee89@gmail.com> (@tiborvass)

+ 0 - 100
server/image.go

@@ -1,100 +0,0 @@
-// DEPRECATION NOTICE. PLEASE DO NOT ADD ANYTHING TO THIS FILE.
-//
-// For additional commments see server/server.go
-//
-package server
-
-import (
-	"io"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"strings"
-
-	"github.com/docker/docker/archive"
-	"github.com/docker/docker/builder"
-	"github.com/docker/docker/engine"
-	"github.com/docker/docker/pkg/parsers"
-	"github.com/docker/docker/registry"
-	"github.com/docker/docker/utils"
-)
-
-func (srv *Server) Build(job *engine.Job) engine.Status {
-	if len(job.Args) != 0 {
-		return job.Errorf("Usage: %s\n", job.Name)
-	}
-	var (
-		remoteURL      = job.Getenv("remote")
-		repoName       = job.Getenv("t")
-		suppressOutput = job.GetenvBool("q")
-		noCache        = job.GetenvBool("nocache")
-		rm             = job.GetenvBool("rm")
-		forceRm        = job.GetenvBool("forcerm")
-		authConfig     = &registry.AuthConfig{}
-		configFile     = &registry.ConfigFile{}
-		tag            string
-		context        io.ReadCloser
-	)
-	job.GetenvJson("authConfig", authConfig)
-	job.GetenvJson("configFile", configFile)
-	repoName, tag = parsers.ParseRepositoryTag(repoName)
-
-	if remoteURL == "" {
-		context = ioutil.NopCloser(job.Stdin)
-	} else if utils.IsGIT(remoteURL) {
-		if !strings.HasPrefix(remoteURL, "git://") {
-			remoteURL = "https://" + remoteURL
-		}
-		root, err := ioutil.TempDir("", "docker-build-git")
-		if err != nil {
-			return job.Error(err)
-		}
-		defer os.RemoveAll(root)
-
-		if output, err := exec.Command("git", "clone", "--recursive", remoteURL, root).CombinedOutput(); err != nil {
-			return job.Errorf("Error trying to use git: %s (%s)", err, output)
-		}
-
-		c, err := archive.Tar(root, archive.Uncompressed)
-		if err != nil {
-			return job.Error(err)
-		}
-		context = c
-	} else if utils.IsURL(remoteURL) {
-		f, err := utils.Download(remoteURL)
-		if err != nil {
-			return job.Error(err)
-		}
-		defer f.Body.Close()
-		dockerFile, err := ioutil.ReadAll(f.Body)
-		if err != nil {
-			return job.Error(err)
-		}
-		c, err := archive.Generate("Dockerfile", string(dockerFile))
-		if err != nil {
-			return job.Error(err)
-		}
-		context = c
-	}
-	defer context.Close()
-
-	sf := utils.NewStreamFormatter(job.GetenvBool("json"))
-	b := builder.NewBuildFile(srv.daemon, srv.Eng,
-		&utils.StdoutFormater{
-			Writer:          job.Stdout,
-			StreamFormatter: sf,
-		},
-		&utils.StderrFormater{
-			Writer:          job.Stdout,
-			StreamFormatter: sf,
-		},
-		!suppressOutput, !noCache, rm, forceRm, job.Stdout, sf, authConfig, configFile)
-	id, err := b.Build(context)
-	if err != nil {
-		return job.Error(err)
-	}
-	if repoName != "" {
-		srv.daemon.Repositories().Set(repoName, tag, id, false)
-	}
-	return engine.StatusOK
-}

+ 0 - 64
server/init.go

@@ -1,64 +0,0 @@
-// DEPRECATION NOTICE. PLEASE DO NOT ADD ANYTHING TO THIS FILE.
-//
-// For additional commments see server/server.go
-//
-package server
-
-import (
-	"github.com/docker/docker/daemon"
-	"github.com/docker/docker/daemonconfig"
-	"github.com/docker/docker/engine"
-)
-
-func (srv *Server) handlerWrap(h engine.Handler) engine.Handler {
-	return func(job *engine.Job) engine.Status {
-		srv.tasks.Add(1)
-		defer srv.tasks.Done()
-		return h(job)
-	}
-}
-
-// jobInitApi runs the remote api server `srv` as a daemon,
-// Only one api server can run at the same time - this is enforced by a pidfile.
-// The signals SIGINT, SIGQUIT and SIGTERM are intercepted for cleanup.
-func InitServer(job *engine.Job) engine.Status {
-	job.Logf("Creating server")
-	cfg := daemonconfig.ConfigFromJob(job)
-	srv, err := NewServer(job.Eng, cfg)
-	if err != nil {
-		return job.Error(err)
-	}
-	job.Eng.Hack_SetGlobalVar("httpapi.server", srv)
-	job.Eng.Hack_SetGlobalVar("httpapi.daemon", srv.daemon)
-
-	for name, handler := range map[string]engine.Handler{
-		"build": srv.Build,
-	} {
-		if err := job.Eng.Register(name, srv.handlerWrap(handler)); err != nil {
-			return job.Error(err)
-		}
-	}
-	// Install image-related commands from the image subsystem.
-	// See `graph/service.go`
-	if err := srv.daemon.Repositories().Install(job.Eng); err != nil {
-		return job.Error(err)
-	}
-	// Install daemon-related commands from the daemon subsystem.
-	// See `daemon/`
-	if err := srv.daemon.Install(job.Eng); err != nil {
-		return job.Error(err)
-	}
-	return engine.StatusOK
-}
-
-func NewServer(eng *engine.Engine, config *daemonconfig.Config) (*Server, error) {
-	daemon, err := daemon.NewDaemon(config, eng)
-	if err != nil {
-		return nil, err
-	}
-	srv := &Server{
-		Eng:    eng,
-		daemon: daemon,
-	}
-	return srv, nil
-}

+ 0 - 36
server/server.go

@@ -1,36 +0,0 @@
-// DEPRECATION NOTICE. PLEASE DO NOT ADD ANYTHING TO THIS FILE.
-//
-// server/server.go is deprecated. We are working on breaking it up into smaller, cleaner
-// pieces which will be easier to find and test. This will help make the code less
-// redundant and more readable.
-//
-// Contributors, please don't add anything to server/server.go, unless it has the explicit
-// goal of helping the deprecation effort.
-//
-// Maintainers, please refuse patches which add code to server/server.go.
-//
-// Instead try the following files:
-// * For code related to local image management, try graph/
-// * For code related to image downloading, uploading, remote search etc, try registry/
-// * For code related to the docker daemon, try daemon/
-// * For small utilities which could potentially be useful outside of Docker, try pkg/
-// * For miscalleneous "util" functions which are docker-specific, try encapsulating them
-//     inside one of the subsystems above. If you really think they should be more widely
-//     available, are you sure you can't remove the docker dependencies and move them to
-//     pkg? In last resort, you can add them to utils/ (but please try not to).
-
-package server
-
-import (
-	"sync"
-
-	"github.com/docker/docker/daemon"
-	"github.com/docker/docker/engine"
-)
-
-type Server struct {
-	sync.RWMutex
-	daemon *daemon.Daemon
-	Eng    *engine.Engine
-	tasks  sync.WaitGroup
-}