krata: api cleanup and improvements

This commit is contained in:
Alex Zenla
2024-03-24 05:25:48 +00:00
parent 7543fccfaf
commit cb6839b0f6
7 changed files with 99 additions and 69 deletions

View File

@ -1,13 +1,24 @@
syntax = "proto3";
package krata.common;
option java_multiple_files = true;
option java_package = "dev.krata.proto.common";
option java_outer_classname = "CommonProto";
package krata.common;
message Guest {
string id = 1;
GuestSpec spec = 2;
GuestState state = 3;
}
message GuestOciImageSpec {
string image = 1;
message GuestSpec {
string name = 1;
GuestImageSpec image = 2;
uint32 vcpus = 3;
uint64 mem = 4;
repeated GuestEnvVar env = 5;
repeated string run = 6;
}
message GuestImageSpec {
@ -16,13 +27,30 @@ message GuestImageSpec {
}
}
message GuestSpec {
string name = 1;
GuestImageSpec image = 2;
uint32 vcpus = 3;
uint64 mem = 4;
repeated string env = 5;
repeated string run = 6;
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 {
@ -37,26 +65,3 @@ message GuestExitInfo {
message GuestErrorInfo {
string message = 1;
}
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 GuestState {
GuestStatus status = 1;
GuestNetworkState network = 2;
GuestExitInfo exit_info = 3;
GuestErrorInfo error_info = 4;
}
message Guest {
string id = 1;
GuestSpec spec = 2;
GuestState state = 3;
}

View File

@ -1,13 +1,22 @@
syntax = "proto3";
package krata.control;
option java_multiple_files = true;
option java_package = "dev.krata.proto.control";
option java_outer_classname = "ControlProto";
package krata.control;
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;
}
@ -16,12 +25,12 @@ message CreateGuestReply {
string guest_id = 1;
}
message ListGuestsRequest {}
message ListGuestsReply {
repeated krata.common.Guest guests = 1;
message DestroyGuestRequest {
string guest_id = 1;
}
message DestroyGuestReply {}
message ResolveGuestRequest {
string name = 1;
}
@ -30,11 +39,11 @@ message ResolveGuestReply {
krata.common.Guest guest = 1;
}
message DestroyGuestRequest {
string guest_id = 1;
}
message ListGuestsRequest {}
message DestroyGuestReply {}
message ListGuestsReply {
repeated krata.common.Guest guests = 1;
}
message ConsoleDataRequest {
string guest_id = 1;
@ -47,21 +56,12 @@ message ConsoleDataReply {
message WatchEventsRequest {}
message GuestChangedEvent {
krata.common.Guest guest = 1;
}
message WatchEventsReply {
oneof event {
GuestChangedEvent guest_changed = 1;
}
}
service ControlService {
rpc CreateGuest(CreateGuestRequest) returns (CreateGuestReply);
rpc DestroyGuest(DestroyGuestRequest) returns (DestroyGuestReply);
rpc ListGuests(ListGuestsRequest) returns (ListGuestsReply);
rpc ResolveGuest(ResolveGuestRequest) returns (ResolveGuestReply);
rpc ConsoleData(stream ConsoleDataRequest) returns (stream ConsoleDataReply);
rpc WatchEvents(WatchEventsRequest) returns (stream WatchEventsReply);
message GuestChangedEvent {
krata.common.Guest guest = 1;
}

View File

@ -1,3 +1,5 @@
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
@ -28,6 +30,6 @@ pub struct LaunchNetwork {
#[derive(Serialize, Deserialize, Debug)]
pub struct LaunchInfo {
pub network: Option<LaunchNetwork>,
pub env: Option<Vec<String>>,
pub env: HashMap<String, String>,
pub run: Option<Vec<String>>,
}