esxlib/api/cloud/cloud.proto

139 lines
2.2 KiB
Protocol Buffer

syntax = "proto3";
option go_package = "esxlib/api/cloud";
package api.cloud;
service Cloud {
rpc VMList(VMListRequest) returns (VMListResponse);
rpc VMGet(VMGetRequest) returns (VMGetResponse);
rpc VMPower(VMPowerRequest) returns (VMPowerResponse);
rpc VMCreate(VMCreateRequest) returns (VMCreateResponse);
rpc VMDestroy(VMDestroyRequest) returns (VMDestroyResponse);
rpc VMListSlugs(VMListSlugsRequest) returns (VMListSlugsResponse);
rpc ZonesList(ZonesListRequest) returns (ZonesListResponse);
rpc NetworksList(NetworksListRequest) returns (NetworksListResponse);
}
enum PowerState {
UNKNOWN = 0;
OFF = 1;
SUSPENDED = 2;
ON = 3;
}
message VMPowerRequest {
string id = 1;
PowerState State = 2;
}
message VMPowerResponse {
}
message VMNetworkInfo{
string address = 1;
string lan = 2;
}
message VMInfo {
string id = 1;
string name = 2;
string slug = 3;
PowerState State = 4;
repeated VMNetworkInfo network = 5;
}
message VMListRequest {
string zone_id = 1;
}
message VMListResponse {
repeated VMInfo vms = 1;
}
message VMGetRequest {
// TODO: add some filters
oneof search {
string id = 1;
string name = 2;
}
}
message VMGetResponse {
VMInfo vm = 1;
}
message CreateOptions {
uint32 cpu_count = 1;
uint32 memory_mb = 2;
uint32 disk_gb = 3;
string network_id = 4;
}
message VMCreateRequest{
string zone_id = 1;
string name = 2;
string slug = 3;
repeated string AuthorizedHosts = 4;
string init_script = 5;
}
message VMCreateResponse{
VMInfo vm = 1;
}
message VMDestroyRequest{
string id = 1;
}
message VMDestroyResponse{
}
message Slug{
string id = 1;
string name = 2;
string description = 3;
uint32 cpu_count = 4;
uint32 memory_mb = 5;
uint32 disk_gb = 6;
uint32 cost = 7;
}
message VMListSlugsRequest{
string zone_id = 1;
}
message VMListSlugsResponse{
repeated Slug slugs = 1;
}
message Zone {
string id = 1;
string name = 2;
string description = 3;
}
message ZonesListRequest{
}
message ZonesListResponse {
repeated Zone zones = 1;
}
message Network {
string id = 1;
string name = 2;
int32 VLAN = 3;
}
message NetworksListRequest {
string zone_id = 1;
}
message NetworksListResponse {
repeated Network networks = 1;
}