blob: d7b8e0713249e4cd95630b3a1fe89e4fc6e34e4d (
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
52
53
|
syntax = "proto3";
package virtbuf;
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp
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
DropletState current_state = 16; // used to track the current state before taking any action
int64 starts = 17; // how many times a start has been attempted
string current_hypervisor = 18; // the current hypervisor the droplet is running on
google.protobuf.Timestamp last_poll = 19; // the last time we heard anything from this droplet
}
enum DropletState {
ON = 0;
OFF = 1;
UNKNOWN = 2;
MIGRATING = 3;
}
message Network {
string mac = 1;
string name = 2;
}
message Disk {
string filename = 1;
string filepath = 2;
int64 size = 3;
}
|