mirror of https://github.com/docker/docs.git
basic ec2 config
Docker-DCO-1.1-Signed-off-by: Aaron Feng <aaron.feng@gmail.com> (github: aaronfeng)
This commit is contained in:
parent
cfb7f6188b
commit
3b2f87aa77
|
@ -3,10 +3,24 @@ package backends
|
|||
import (
|
||||
"time"
|
||||
"fmt"
|
||||
"strings"
|
||||
"github.com/docker/libswarm/beam"
|
||||
)
|
||||
|
||||
type ec2Config struct {
|
||||
access_key string
|
||||
secret_key string
|
||||
security_group string
|
||||
instance_type string
|
||||
keypair string
|
||||
region string
|
||||
zone string
|
||||
ami string
|
||||
tag string
|
||||
}
|
||||
|
||||
type ec2Client struct {
|
||||
config *ec2Config
|
||||
Server *beam.Server
|
||||
}
|
||||
|
||||
|
@ -64,12 +78,52 @@ func (c *ec2Client) attach(ctx *beam.Message) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func newConfig(args []string) (config *ec2Config, err error) {
|
||||
// TODO (aaron): fail fast on incorrect number of args
|
||||
|
||||
var optValPair []string
|
||||
var opt, val string
|
||||
|
||||
config = new(ec2Config)
|
||||
for _, value := range args {
|
||||
optValPair = strings.Split(value, "=")
|
||||
opt = optValPair[0]
|
||||
val = optValPair[1]
|
||||
|
||||
switch opt {
|
||||
case "--region":
|
||||
config.region = val
|
||||
case "--zone":
|
||||
config.zone = val
|
||||
case "--tag":
|
||||
config.tag = val
|
||||
case "--ami":
|
||||
config.ami = val
|
||||
case "--keypair":
|
||||
config.keypair = val
|
||||
case "--security_group":
|
||||
config.security_group = val
|
||||
case "--instance_type":
|
||||
config.instance_type = val
|
||||
default:
|
||||
fmt.Printf("Unrecognizable option: %s value: %s", opt, val)
|
||||
}
|
||||
}
|
||||
return config, nil
|
||||
}
|
||||
|
||||
func Ec2() beam.Sender {
|
||||
backend := beam.NewServer()
|
||||
backend.OnSpawn(beam.Handler(func(ctx *beam.Message) error {
|
||||
fmt.Println("*** init ***")
|
||||
client := &ec2Client{beam.NewServer()}
|
||||
|
||||
var config, err = newConfig(ctx.Args)
|
||||
|
||||
if (err != nil) {
|
||||
return err
|
||||
}
|
||||
|
||||
client := &ec2Client{config, beam.NewServer()}
|
||||
client.Server.OnSpawn(beam.Handler(client.spawn))
|
||||
client.Server.OnStart(beam.Handler(client.start))
|
||||
client.Server.OnStop(beam.Handler(client.stop))
|
||||
|
@ -78,7 +132,7 @@ func Ec2() beam.Sender {
|
|||
client.Server.OnError(beam.Handler(client.error))
|
||||
client.Server.OnLs(beam.Handler(client.ls))
|
||||
client.Server.OnGet(beam.Handler(client.get))
|
||||
_, err := ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server})
|
||||
_, err = ctx.Ret.Send(&beam.Message{Verb: beam.Ack, Ret: client.Server})
|
||||
return err
|
||||
}))
|
||||
return backend
|
||||
|
|
Loading…
Reference in New Issue