mirror of https://github.com/docker/docs.git
split main
This commit is contained in:
parent
74a6bff763
commit
8411d0ed94
|
@ -0,0 +1,30 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
log "github.com/Sirupsen/logrus"
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"github.com/docker/libcluster/discovery"
|
||||||
|
)
|
||||||
|
|
||||||
|
func join(c *cli.Context) {
|
||||||
|
|
||||||
|
if c.String("token") == "" {
|
||||||
|
log.Fatal("--token required to join a cluster")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := discovery.RegisterSlave(c.String("addr"), c.String("token")); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// heartbeat every 25 seconds
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
time.Sleep(25 * time.Second)
|
||||||
|
if err := discovery.RegisterSlave(c.String("addr"), c.String("token")); err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
76
main.go
76
main.go
|
@ -7,11 +7,7 @@ import (
|
||||||
|
|
||||||
log "github.com/Sirupsen/logrus"
|
log "github.com/Sirupsen/logrus"
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
"github.com/docker/libcluster/api"
|
|
||||||
"github.com/docker/libcluster/discovery"
|
"github.com/docker/libcluster/discovery"
|
||||||
"github.com/docker/libcluster/scheduler"
|
|
||||||
"github.com/docker/libcluster/scheduler/filter"
|
|
||||||
"github.com/docker/libcluster/scheduler/strategy"
|
|
||||||
"github.com/docker/libcluster/swarm"
|
"github.com/docker/libcluster/swarm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -79,82 +75,14 @@ func main() {
|
||||||
ShortName: "m",
|
ShortName: "m",
|
||||||
Usage: "manage a docker cluster",
|
Usage: "manage a docker cluster",
|
||||||
Flags: clusterFlags,
|
Flags: clusterFlags,
|
||||||
|
Action: manage,
|
||||||
Action: func(c *cli.Context) {
|
|
||||||
|
|
||||||
refresh := func(cluster *swarm.Cluster, nodes []string) error {
|
|
||||||
for _, addr := range nodes {
|
|
||||||
if cluster.Node(addr) == nil {
|
|
||||||
n := swarm.NewNode(addr, addr)
|
|
||||||
if err := n.Connect(nil); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := cluster.AddNode(n); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
cluster := swarm.NewCluster()
|
|
||||||
cluster.Events(&logHandler{})
|
|
||||||
|
|
||||||
if c.String("token") != "" {
|
|
||||||
nodes, err := discovery.FetchSlaves(c.String("token"))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
|
|
||||||
}
|
|
||||||
if err := refresh(cluster, nodes); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
for {
|
|
||||||
time.Sleep(25 * time.Second)
|
|
||||||
nodes, err = discovery.FetchSlaves(c.String("token"))
|
|
||||||
if err == nil {
|
|
||||||
refresh(cluster, nodes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
} else {
|
|
||||||
if err := refresh(cluster, c.Args()); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s := scheduler.NewScheduler(cluster, &strategy.BinPackingPlacementStrategy{}, []filter.Filter{})
|
|
||||||
|
|
||||||
log.Fatal(api.ListenAndServe(cluster, s, c.String("addr")))
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "join",
|
Name: "join",
|
||||||
ShortName: "j",
|
ShortName: "j",
|
||||||
Usage: "join a docker cluster",
|
Usage: "join a docker cluster",
|
||||||
Flags: clusterFlags,
|
Flags: clusterFlags,
|
||||||
|
Action: join,
|
||||||
Action: func(c *cli.Context) {
|
|
||||||
|
|
||||||
if c.String("token") == "" {
|
|
||||||
log.Fatal("--token required to join a cluster")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := discovery.RegisterSlave(c.String("addr"), c.String("token")); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// heartbeat every 25 seconds
|
|
||||||
go func() {
|
|
||||||
for {
|
|
||||||
time.Sleep(25 * time.Second)
|
|
||||||
if err := discovery.RegisterSlave(c.String("addr"), c.String("token")); err != nil {
|
|
||||||
log.Error(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"github.com/docker/libcluster/api"
|
||||||
|
"github.com/docker/libcluster/discovery"
|
||||||
|
"github.com/docker/libcluster/scheduler"
|
||||||
|
"github.com/docker/libcluster/scheduler/filter"
|
||||||
|
"github.com/docker/libcluster/scheduler/strategy"
|
||||||
|
"github.com/docker/libcluster/swarm"
|
||||||
|
)
|
||||||
|
|
||||||
|
func manage(c *cli.Context) {
|
||||||
|
|
||||||
|
refresh := func(cluster *swarm.Cluster, nodes []string) error {
|
||||||
|
for _, addr := range nodes {
|
||||||
|
if cluster.Node(addr) == nil {
|
||||||
|
n := swarm.NewNode(addr, addr)
|
||||||
|
if err := n.Connect(nil); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := cluster.AddNode(n); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
cluster := swarm.NewCluster()
|
||||||
|
cluster.Events(&logHandler{})
|
||||||
|
|
||||||
|
if c.String("token") != "" {
|
||||||
|
nodes, err := discovery.FetchSlaves(c.String("token"))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
|
||||||
|
}
|
||||||
|
if err := refresh(cluster, nodes); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
time.Sleep(25 * time.Second)
|
||||||
|
nodes, err = discovery.FetchSlaves(c.String("token"))
|
||||||
|
if err == nil {
|
||||||
|
refresh(cluster, nodes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
} else {
|
||||||
|
if err := refresh(cluster, c.Args()); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s := scheduler.NewScheduler(cluster, &strategy.BinPackingPlacementStrategy{}, []filter.Filter{})
|
||||||
|
|
||||||
|
log.Fatal(api.ListenAndServe(cluster, s, c.String("addr")))
|
||||||
|
}
|
Loading…
Reference in New Issue