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 // is it possible to have custom formatting in JSON and TEXT marshal/unmarshal ? StorageInfo humantest = 5; } 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 google.protobuf.Any orig_val = 9; // original value google.protobuf.Any new_val = 10; // new value } 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 } message StorageInfo { int64 capacity = 1; // Stores the storage capacity in bytes. }