summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-10-31 09:13:02 -0500
committerJeff Carr <[email protected]>2024-10-31 09:13:02 -0500
commitcc0ca1dd7caf5aa93624428a2d254b71e8b09a81 (patch)
tree2ed32f655977bea77da308265df8af30d15032b9
parent1ca936e98e910280a63ef72502a1c017e92aa4e2 (diff)
add flags for marking droplets as archived
Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--config.go11
-rw-r--r--droplet.proto37
2 files changed, 35 insertions, 13 deletions
diff --git a/config.go b/config.go
index 4ae6f31..2fd4c33 100644
--- a/config.go
+++ b/config.go
@@ -23,9 +23,18 @@ func (c *Cluster) ConfigSave() error {
return err
}
+ // make a new droplets struct
var d *Droplets
d = new(Droplets)
d.Droplets = c.Droplets
+ // copy all the records over to the new struct
+ for _, drop := range c.Droplets {
+ d.Droplets = append(d.Droplets, drop)
+ }
+ // delete all the Current data so it's not put in the config file
+ for _, drop := range d.Droplets {
+ drop.Current = nil
+ }
if err := ConfigWriteJSON(d, "droplets.json"); err != nil {
fmt.Println("droplets.json write failed")
return err
@@ -139,6 +148,8 @@ func (c *Cluster) ConfigLoad() error {
e = new(Events)
if c.E == nil {
+ // this seems to panic on nil. something is wrong about doing this
+ // does it not stay allocated after this function ends?
c.E = new(Events)
}
if err := e.loadEvents(); err != nil {
diff --git a/droplet.proto b/droplet.proto
index 21333a0..c40d730 100644
--- a/droplet.proto
+++ b/droplet.proto
@@ -11,23 +11,24 @@ message Droplets {
}
message Droplet {
- string uuid = 1; // should be unique across the cluster
- string hostname = 2; // should be unique and work in DNS
- int64 cpus = 3; // what's the point of int64 vs int32
- int64 memory = 4; // in bytes
- Current current = 5; // what the state and values of the droplet is
- DropletState start_state = 6; // what the state of the droplet is SUPPOSED TO BE ('on' or 'off')
- string preferred_hypervisor = 7; // the hypervisor to prefer to run the droplet on
- string force_hypervisor = 8; // use this hypervisor and this hypervisor only
- string preferred_arch = 9; // the cpu arch to use "x86_64" (should really get this from the disk?)
- string qemu_machine = 10; // the qemu machine type to use "pc-q35-9.0"
- int64 spice_port = 11; // preferred port to use for spice
+ string uuid = 1; // should be unique across the cluster
+ string hostname = 2; // should be unique and work in DNS
+ int64 cpus = 3; // what's the point of int64 vs int32
+ int64 memory = 4; // in bytes
+ Current current = 5; // what the state and values of the droplet is
+ DropletState start_state = 6; // what the state of the droplet is SUPPOSED TO BE ('on' or 'off')
+ string qemu_machine = 7; // the qemu machine type to use "pc-q35-9.0"
+ int64 spice_port = 8; // preferred port to use for spice
+ string preferred_hypervisor = 9; // the hypervisor to prefer to run the droplet on
+ string force_hypervisor = 10; // use this hypervisor and this hypervisor only
+ string preferred_arch = 11; // the cpu arch to use "x86_64" (should really get this from the disk?)
repeated Network networks = 12; // really just mac addresses. should be unique across cluster
repeated Disk disks = 13; // disks to attach
- string local_only = 14; // this is only defined locally on the hypervisor
- string custom_xml = 15; // if needed,
+ string local_only = 14; // this is only defined locally on the hypervisor
+ string custom_xml = 15; // if needed,
+ DropletArchive archive = 16; // what the state of the droplet is SUPPOSED TO BE ('on' or 'off')
}
// volatile data. the current settings and values of things.
@@ -42,6 +43,11 @@ message Current {
string image_url = 6; // url to the image
}
+message Archive {
+ DropletArchive reason = 1; // why the droplet was archived
+ google.protobuf.Timestamp when = 2; // when it was archived
+}
+
// virtual machine state
enum DropletState {
ON = 0;
@@ -52,6 +58,11 @@ enum DropletState {
INMIGRATE = 5;
}
+enum DropletArchive {
+ ARCHIVE_DUP = 0;
+ ARCHIVE_USER = 1;
+}
+
message Network {
string mac = 1;
string name = 2;