55 lines
1.9 KiB
Protocol Buffer
55 lines
1.9 KiB
Protocol Buffer
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.
|
|
}
|