krata: move api proto to /proto and version api

This commit is contained in:
Alex Zenla
2024-03-24 05:52:25 +00:00
parent cb6839b0f6
commit 655b8029cb
26 changed files with 41 additions and 36 deletions

View File

@ -4,11 +4,15 @@ fn main() -> Result<()> {
let mut config = prost_build::Config::new();
prost_reflect_build::Builder::new()
.descriptor_pool("crate::DESCRIPTOR_POOL")
.configure(&mut config, &["proto/krata/control.proto"], &["proto/"])?;
.configure(
&mut config,
&["../../proto/krata/v1/control.proto"],
&["../../proto/"],
)?;
tonic_build::configure().compile_with_config(
config,
&["proto/krata/control.proto"],
&["proto/"],
&["../../proto/krata/v1/control.proto"],
&["../../proto/"],
)?;
Ok(())
}

View File

@ -1,67 +0,0 @@
syntax = "proto3";
package krata.common;
option java_multiple_files = true;
option java_package = "dev.krata.proto.common";
option java_outer_classname = "CommonProto";
message Guest {
string id = 1;
GuestSpec spec = 2;
GuestState state = 3;
}
message GuestSpec {
string name = 1;
GuestImageSpec image = 2;
uint32 vcpus = 3;
uint64 mem = 4;
repeated GuestEnvVar env = 5;
repeated string run = 6;
}
message GuestImageSpec {
oneof image {
GuestOciImageSpec oci = 1;
}
}
message GuestOciImageSpec {
string image = 1;
}
message GuestEnvVar {
string key = 1;
string value = 2;
}
message GuestState {
GuestStatus status = 1;
GuestNetworkState network = 2;
GuestExitInfo exit_info = 3;
GuestErrorInfo error_info = 4;
}
enum GuestStatus {
GUEST_STATUS_UNKNOWN = 0;
GUEST_STATUS_STARTING = 1;
GUEST_STATUS_STARTED = 2;
GUEST_STATUS_EXITED = 3;
GUEST_STATUS_DESTROYING = 4;
GUEST_STATUS_DESTROYED = 5;
GUEST_STATUS_FAILED = 6;
}
message GuestNetworkState {
string ipv4 = 1;
string ipv6 = 2;
}
message GuestExitInfo {
int32 code = 1;
}
message GuestErrorInfo {
string message = 1;
}

View File

@ -1,67 +0,0 @@
syntax = "proto3";
package krata.control;
option java_multiple_files = true;
option java_package = "dev.krata.proto.control";
option java_outer_classname = "ControlProto";
import "krata/common.proto";
service ControlService {
rpc CreateGuest(CreateGuestRequest) returns (CreateGuestReply);
rpc DestroyGuest(DestroyGuestRequest) returns (DestroyGuestReply);
rpc ResolveGuest(ResolveGuestRequest) returns (ResolveGuestReply);
rpc ListGuests(ListGuestsRequest) returns (ListGuestsReply);
rpc ConsoleData(stream ConsoleDataRequest) returns (stream ConsoleDataReply);
rpc WatchEvents(WatchEventsRequest) returns (stream WatchEventsReply);
}
message CreateGuestRequest {
krata.common.GuestSpec spec = 1;
}
message CreateGuestReply {
string guest_id = 1;
}
message DestroyGuestRequest {
string guest_id = 1;
}
message DestroyGuestReply {}
message ResolveGuestRequest {
string name = 1;
}
message ResolveGuestReply {
krata.common.Guest guest = 1;
}
message ListGuestsRequest {}
message ListGuestsReply {
repeated krata.common.Guest guests = 1;
}
message ConsoleDataRequest {
string guest_id = 1;
bytes data = 2;
}
message ConsoleDataReply {
bytes data = 1;
}
message WatchEventsRequest {}
message WatchEventsReply {
oneof event {
GuestChangedEvent guest_changed = 1;
}
}
message GuestChangedEvent {
krata.common.Guest guest = 1;
}

View File

@ -1 +0,0 @@
tonic::include_proto!("krata.common");

View File

@ -1 +0,0 @@
tonic::include_proto!("krata.control");

View File

@ -1,10 +1,9 @@
use once_cell::sync::Lazy;
use prost_reflect::DescriptorPool;
pub mod common;
pub mod control;
pub mod dial;
pub mod launchcfg;
pub mod v1;
#[cfg(target_os = "linux")]
pub mod ethtool;

View File

@ -0,0 +1 @@
tonic::include_proto!("krata.v1.common");

View File

@ -0,0 +1 @@
tonic::include_proto!("krata.v1.control");

View File

@ -0,0 +1,2 @@
pub mod common;
pub mod control;