summaryrefslogtreecommitdiff
path: root/doDroplet.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-04-20 19:40:50 -0500
committerJeff Carr <[email protected]>2025-04-20 19:40:50 -0500
commit3cd1f64d15465160770794187ca632953fdd4c86 (patch)
tree3b4184706f311f97e2ac87361a623378d952e9d3 /doDroplet.go
parent69ee3b95d0a2f5a3079e512a9f3315026912fcde (diff)
stub in droplet statusv0.2.52
Diffstat (limited to 'doDroplet.go')
-rw-r--r--doDroplet.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/doDroplet.go b/doDroplet.go
new file mode 100644
index 0000000..8a7cafc
--- /dev/null
+++ b/doDroplet.go
@@ -0,0 +1,81 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+// An app to submit patches for the 30 GO GUI repos
+
+import (
+ "fmt"
+ "net/http"
+ "net/url"
+ "time"
+
+ "go.wit.com/lib/protobuf/virtpb"
+ "go.wit.com/log"
+)
+
+func doDroplet() (string, error) {
+ err := me.clusters.ConfigLoad()
+ if err != nil {
+ return "", err
+ }
+
+ msg := []byte(`{"message": "Hello"}`)
+
+ // Initialize a persistent client with a custom Transport
+ client = &http.Client{
+ Transport: &http.Transport{
+ DisableKeepAlives: false, // Ensure Keep-Alive is enabled
+ },
+ Timeout: 10 * time.Second, // Set a reasonable timeout
+ }
+
+ me.cmap = make(map[*virtpb.Cluster]*adminT)
+ for c := range me.clusters.IterAll() {
+ var err error
+ admin := new(adminT)
+ me.cmap[c] = admin
+ log.Info("found in the config file", c.URL[0])
+ // a.makeClusterGroup(c)
+ admin.url, err = url.Parse(c.URL[0])
+ if err != nil {
+ return "", err
+ }
+
+ // update the droplet list
+ if data, err := postData(admin.url.String()+"/DropletsPB", msg); err != nil {
+ log.Info("/DropletsPB Error:", err)
+ continue
+ } else {
+ admin.droplets = new(virtpb.Droplets)
+ if err := admin.droplets.Unmarshal(data); err != nil {
+ log.Printf("DropletsPB Response len:%d\n", len(data))
+ log.Println("droplets marshal failed", err)
+ continue
+ }
+ }
+ log.Printf("Cluster Name: %s\n", c.Name)
+ log.Printf("Number of Droplets: %d\n", admin.droplets.Len())
+
+ if argv.Droplet.Name == "" {
+ return "", fmt.Errorf("--name droplet name was empty")
+ }
+
+ var found *virtpb.Droplets
+ found = virtpb.NewDroplets()
+ all := admin.droplets.All()
+ for all.Scan() {
+ vm := all.Next()
+ if argv.Droplet.Name == vm.Hostname {
+ log.Info(vm.SprintHeader())
+ txt := vm.FormatTEXT()
+ log.Info(txt)
+ return "droplet found", nil
+ }
+ found.Append(vm)
+ }
+ log.Println("On Droplet count=", found.Len())
+ }
+ return "", fmt.Errorf("droplet %s not found", argv.Droplet.Name)
+}