syntax = "proto3"; package virtbuf; import "google/protobuf/any.proto"; message Droplets { 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 repeated Droplet droplets = 3; } 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 DropletState start_state = 5; // what the state of the droplet is SUPPOSED TO BE ('on' or 'off') string notes = 6; // maybe useful for something string preferred_hypervisor = 7; // the hypervisor to prefer to run the droplet on string qemu_arch = 8; // what arch. example: "x86_64" or "riscv64" string qemu_cpu = 9; // qemu-system -cpu help string qemu_machine = 10; // qemu-system -machine help int64 spice_port = 11; // preferred port to use for spice repeated Network networks = 12; // really just mac addresses. should be unique across cluster repeated Disk disks = 13; // disks to attach DropletState state = 14; // if the droplet is on, off, etc string image_url = 15; // url to the image // is it possible to have custom formatting in JSON and TEXT marshal/unmarshal ? // JunkInfo humantest = 16; } enum DropletState { ON = 0; OFF = 1; UNKNOWN = 2; MIGRATING = 3; } message Network { string mac = 1; string name = 2; } message Disk { string filename = 1; int64 size = 2; } message JunkInfo { int64 capacity = 1; // Stores the storage capacity in bytes. }