summaryrefslogtreecommitdiff
path: root/event.proto
blob: 303dddf614f0703a524ec78528c75039eaaf808f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
syntax = "proto3";
package virtpb;

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` `autogenpb:gui`
        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
}