summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go21
-rw-r--r--structs.go22
-rw-r--r--watchdog.go24
3 files changed, 29 insertions, 38 deletions
diff --git a/main.go b/main.go
index db6449c..9dcd3dc 100644
--- a/main.go
+++ b/main.go
@@ -52,19 +52,6 @@ func main() {
os.Exit(-1)
}
- // me.cluster.Events = new(pb.Events)
- // u := uuid.New()
- // me.events.Uuid = u.String()
- // me.events.Version = "dirty v1"
-
- /*
- err := cfgfile()
- if err != nil {
- log.Warn("reading config file failed", err)
- os.Exit(-1)
- }
- */
-
for i, d := range me.cluster.Droplets {
d.CurrentState = pb.DropletState_OFF
log.Info(i, "droplet", d.Hostname)
@@ -147,12 +134,6 @@ func main() {
}
// initialize each hypervisor
for _, pbh := range me.cluster.Hypervisors {
- /*
- h := findHypervisor(pbh.Hostname)
- if h != nil {
- continue
- }
- */
// this is a new unknown droplet (not in the config file)
h := new(HyperT)
h.pb = pbh
@@ -167,6 +148,8 @@ func main() {
// start the watchdog polling for each hypervisor
for _, h := range me.hypers {
log.Info("starting polling on", h.pb.Hostname)
+ // inititialize the search directories on each hypervisor
+ h.sendDirs()
go h.NewWatchdog()
}
diff --git a/structs.go b/structs.go
index d2dd8cb..de1f0bc 100644
--- a/structs.go
+++ b/structs.go
@@ -22,17 +22,13 @@ func (b *virtigoT) Enable() {
type virtigoT struct {
cluster *pb.Cluster // basic cluster settings
delay time.Duration // how often to poll the hypervisors
- // events *pb.Events // cluster events
- // dmap map[*pb.Droplet]*DropletT // map to the local struct
hmap map[*pb.Hypervisor]*HyperT // map to the local struct
names []string
hypers []*HyperT
- // droplets []*DropletT
- killcount int
- unstable time.Time // the last time the cluster was incorrect
- changed bool
+ killcount int
+ unstable time.Time // the last time the cluster was incorrect
+ changed bool
unstableTimeout time.Duration
- // dirs []string // all the paths too search for a qcow image
}
// the stuff that is needed for a hypervisor
@@ -42,15 +38,3 @@ type HyperT struct {
lastpoll time.Time // the last time the hypervisor polled
killcount int
}
-
-/*
-// the stuff that is needed for a hypervisor
-type DropletT struct {
- pb *pb.Droplet // the Droplet protobuf
- xml *libvirtxml.Domain // a xml representation from libvirt
- h *HyperT // the hypervisor it's currently running on
- CurrentState pb.DropletState // what the state of the droplet is ACTUALLY IS
- lastpoll time.Time // the last time the droplet was seen running
- starts int // how many times a start event has been attempted
-}
-*/
diff --git a/watchdog.go b/watchdog.go
index e3a4f0c..be6f8cf 100644
--- a/watchdog.go
+++ b/watchdog.go
@@ -4,6 +4,7 @@ import (
"fmt"
"time"
+ pb "go.wit.com/lib/protobuf/virtbuf"
"go.wit.com/log"
)
@@ -14,6 +15,29 @@ func TimeFunction(f func()) time.Duration {
return time.Since(startTime) // Calculate the elapsed time
}
+func (h *HyperT) sendDirs() {
+ url := "http://" + h.pb.Hostname + ":2520/cluster"
+ var msg string
+ var data []byte
+
+ var c *pb.Cluster
+ c = new(pb.Cluster)
+ for _, dir := range me.cluster.Dirs {
+ c.Dirs = append(c.Dirs, dir)
+ }
+ msg = c.FormatJSON()
+ data = []byte(msg) // Convert the string to []byte
+ req, err := httpPost(url, data)
+ if err != nil {
+ log.Info("error:", err)
+ return
+ }
+ // log.Info("http post url:", url)
+ // log.Info("http post data:", msg)
+
+ log.Info("EVENT start droplet response: " + string(req))
+}
+
func (h *HyperT) NewWatchdog() {
h.dog = time.NewTicker(me.delay)
defer h.dog.Stop()