first droplet create (the protobuf anyway)
This commit is contained in:
parent
d261a220df
commit
bf01596f30
66
doDroplet.go
66
doDroplet.go
|
@ -11,6 +11,7 @@ import (
|
|||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"go.wit.com/lib/protobuf/virtpb"
|
||||
"go.wit.com/log"
|
||||
)
|
||||
|
@ -123,6 +124,26 @@ func doEvent(e *virtpb.Event) *virtpb.Event {
|
|||
return result
|
||||
}
|
||||
|
||||
if e.Etype == virtpb.EventType_ADD {
|
||||
log.Println("START ADD droplet event", e.Droplet.FormatTEXT())
|
||||
if e.Droplet == nil {
|
||||
result.State = virtpb.Event_FAIL
|
||||
return result
|
||||
}
|
||||
result.DropletName = e.Droplet.Hostname
|
||||
result.Error = e.Droplet.FormatTEXT() // feedback to the other side for debugging
|
||||
if e.Droplet != nil {
|
||||
if err := createDroplet(e.Droplet, result); err != nil {
|
||||
result.Error += fmt.Sprintf("createDroplet() err: %v", err)
|
||||
result.State = virtpb.Event_FAIL
|
||||
return result
|
||||
}
|
||||
}
|
||||
log.Println("create droplet worked", e.Droplet.FormatTEXT())
|
||||
result.State = virtpb.Event_DONE
|
||||
return result
|
||||
}
|
||||
|
||||
log.Println("unknown event", e)
|
||||
result.Etype = e.Etype
|
||||
result.State = virtpb.Event_FAIL
|
||||
|
@ -178,3 +199,48 @@ func updateDroplet(newd *virtpb.Droplet) *virtpb.Event {
|
|||
result.State = virtpb.Event_DONE
|
||||
return result
|
||||
}
|
||||
|
||||
func createDroplet(newd *virtpb.Droplet, result *virtpb.Event) error {
|
||||
if newd == nil {
|
||||
return fmt.Errorf("droplet protobuf == nil")
|
||||
}
|
||||
|
||||
if newd.Uuid == "" {
|
||||
newd.Uuid = uuid.New().String()
|
||||
}
|
||||
|
||||
d := me.cluster.FindDropletByUuid(newd.Uuid)
|
||||
if d != nil {
|
||||
return fmt.Errorf("droplet uuid already used")
|
||||
}
|
||||
|
||||
log.Println("found droplet to update:", newd.Uuid, newd.Hostname, newd.Cpus, newd.Memory)
|
||||
|
||||
if newd.Hostname == "" {
|
||||
return fmt.Errorf("Hostname can not be blank")
|
||||
}
|
||||
d = me.cluster.FindDropletByName(newd.Hostname)
|
||||
if d != nil {
|
||||
return fmt.Errorf("hostname already defined")
|
||||
}
|
||||
|
||||
newd.LocalOnly = "yes on: " + "farm03"
|
||||
|
||||
// by default, on locally imported domains, set the preferred hypervisor!
|
||||
newd.PreferredHypervisor = "farm03"
|
||||
|
||||
newd.Current = new(virtpb.Current)
|
||||
newd.Current.Hypervisor = "farm03"
|
||||
newd.StartState = virtpb.DropletState_OFF
|
||||
newd.Current.State = virtpb.DropletState_OFF
|
||||
|
||||
me.cluster.AddDroplet(newd)
|
||||
|
||||
if err := me.cluster.ConfigSave(); err != nil {
|
||||
log.Info("configsave error", err)
|
||||
return fmt.Errorf("ConfigSave() error: %v", err)
|
||||
}
|
||||
|
||||
result.State = virtpb.Event_DONE
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue