Files
krata/crates/krata/proto/krata/v1/common.proto
2024-07-19 03:47:18 +00:00

119 lines
2.4 KiB
Protocol Buffer

syntax = "proto3";
package krata.v1.common;
option java_multiple_files = true;
option java_package = "dev.krata.proto.v1.common";
option java_outer_classname = "CommonProto";
import "google/protobuf/struct.proto";
message Zone {
string id = 1;
ZoneSpec spec = 2;
ZoneState state = 3;
}
message ZoneSpec {
string name = 1;
ZoneImageSpec image = 2;
// If not specified, defaults to the daemon default kernel.
ZoneImageSpec kernel = 3;
// If not specified, defaults to the daemon default initrd.
ZoneImageSpec initrd = 4;
uint32 vcpus = 5;
uint64 mem = 6;
ZoneTaskSpec task = 7;
repeated ZoneSpecAnnotation annotations = 8;
repeated ZoneSpecDevice devices = 9;
}
message ZoneImageSpec {
oneof image {
ZoneOciImageSpec oci = 1;
}
}
enum OciImageFormat {
OCI_IMAGE_FORMAT_UNKNOWN = 0;
OCI_IMAGE_FORMAT_SQUASHFS = 1;
OCI_IMAGE_FORMAT_EROFS = 2;
// Tar format is not launchable, and is intended for kernel images.
OCI_IMAGE_FORMAT_TAR = 3;
}
message ZoneOciImageSpec {
string digest = 1;
OciImageFormat format = 2;
}
message ZoneTaskSpec {
repeated ZoneTaskSpecEnvVar environment = 1;
repeated string command = 2;
string working_directory = 3;
}
message ZoneTaskSpecEnvVar {
string key = 1;
string value = 2;
}
message ZoneSpecAnnotation {
string key = 1;
string value = 2;
}
message ZoneSpecDevice {
string name = 1;
}
message ZoneState {
ZoneStatus status = 1;
ZoneNetworkState network = 2;
ZoneExitInfo exit_info = 3;
ZoneErrorInfo error_info = 4;
string host = 5;
uint32 domid = 6;
}
enum ZoneStatus {
ZONE_STATUS_UNKNOWN = 0;
ZONE_STATUS_STARTING = 1;
ZONE_STATUS_STARTED = 2;
ZONE_STATUS_EXITED = 3;
ZONE_STATUS_DESTROYING = 4;
ZONE_STATUS_DESTROYED = 5;
ZONE_STATUS_FAILED = 6;
}
message ZoneNetworkState {
string zone_ipv4 = 1;
string zone_ipv6 = 2;
string zone_mac = 3;
string gateway_ipv4 = 4;
string gateway_ipv6 = 5;
string gateway_mac = 6;
}
message ZoneExitInfo {
int32 code = 1;
}
message ZoneErrorInfo {
string message = 1;
}
message ZoneMetricNode {
string name = 1;
google.protobuf.Value value = 2;
ZoneMetricFormat format = 3;
repeated ZoneMetricNode children = 4;
}
enum ZoneMetricFormat {
ZONE_METRIC_FORMAT_UNKNOWN = 0;
ZONE_METRIC_FORMAT_BYTES = 1;
ZONE_METRIC_FORMAT_INTEGER = 2;
ZONE_METRIC_FORMAT_DURATION_SECONDS = 3;
}