virtbuf/event.proto

52 lines
2.5 KiB
Protocol Buffer

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
// global settings for autogenpb `autogenpb:no-sort` `autogenpb:mutex`
message Events { // `autogenpb:marshal`
string uuid = 1; // `autogenpb:uuid:1e3a50c7-5916-4423-b33c-f0b977a7e446`
string version = 2; // `autogenpb:version:v0.0.1`
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; // `autogenpb:unique` // should be unique across the cluster
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
}