summaryrefslogtreecommitdiff
path: root/event.proto
diff options
context:
space:
mode:
Diffstat (limited to 'event.proto')
-rw-r--r--event.proto49
1 files changed, 49 insertions, 0 deletions
diff --git a/event.proto b/event.proto
new file mode 100644
index 0000000..49a8543
--- /dev/null
+++ b/event.proto
@@ -0,0 +1,49 @@
+syntax = "proto3";
+package virtbuf;
+
+import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
+import "google/protobuf/any.proto"; // Import the well-known type for Timestamp
+
+message Events {
+ string uuid = 1; // I guess why not just have this on each file
+ string version = 2; // maybe can be used for protobuf schema change violations
+ int64 event_size = 3; // max events to store in a single
+ repeated Event events = 4; // all the events
+}
+
+// this information leans towards being human readable not programatic
+// in other words, it's better to just have the droplet name here rather than the uuid
+// at least for now in the early days. but maybe forever.
+// homelab clouds normally don't have many events.
+// we are talking less than 1 a minute. even 1 an hour is often a lot
+message Event {
+ int32 id = 1;
+ EventType etype = 2;
+ string droplet = 3; // name of the droplet
+ string droplet_uuid = 4; // uuid of the droplet
+ string hypervisor = 5; // name of the hypervisor
+ string hypervisor_uuid = 6; // uuid of the hypervisor
+ google.protobuf.Timestamp start = 7; // start time
+ google.protobuf.Timestamp end = 8; // end time
+ string field_name = 9; // the field name that changed
+ string orig_val = 10; // original value
+ string new_val = 11; // new value
+ google.protobuf.Any orig_any = 12; // anypb format. probably overkill
+ google.protobuf.Any new_any = 13; // anypb format
+}
+
+enum EventType {
+ ADD = 0;
+ DELETE = 1;
+ POWERON = 2;
+ POWEROFF = 3; // should indicate a "normal" shutdown
+ HIBERNATE = 4;
+ MIGRATE = 5;
+ DEMO = 6;
+ GET = 7; // request something
+ LOGIN = 8; // attempt to login
+ OK = 9; // everything is ok
+ FAIL = 10; // everything failed
+ CRASH = 11; // droplet hard crashed
+ CHANGE = 12; // droplet or hypervisor config change
+}