mirror of
https://github.com/psviderski/uncloud.git
synced 2026-10-06 13:18:58 +00:00
feat(store): add WaitForStoreVersion API to wait for cluster store replication up to target version
This commit is contained in:
1 parent
c6d0371f15
commit
0f6c03240b
9 files changed
+450
-134
No files matched your search
+207
-116
@@ -570,8 +570,8 @@ type JoinClusterRequest struct {
|
||||
// MTU of the WireGuard interface on this machine. The daemon auto-detects the optimal MTU if 0 or not set.
|
||||
WireguardMtu int32 `protobuf:"varint,7,opt,name=wireguard_mtu,json=wireguardMtu,proto3" json:"wireguard_mtu,omitempty"`
|
||||
// Cluster store version this machine must reach before participating.
|
||||
// Per-actor vector (Corrosion actor UUID → max applied db_version).
|
||||
MinStoreVersion map[string]int64 `protobuf:"bytes,6,rep,name=min_store_version,json=minStoreVersion,proto3" json:"min_store_version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
// Per-actor vector (Corrosion actor UUID → minimum required db_version).
|
||||
MinStoreVersion map[string]uint64 `protobuf:"bytes,6,rep,name=min_store_version,json=minStoreVersion,proto3" json:"min_store_version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
}
|
||||
|
||||
func (x *JoinClusterRequest) Reset() {
|
||||
@@ -634,7 +634,7 @@ func (x *JoinClusterRequest) GetWireguardMtu() int32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *JoinClusterRequest) GetMinStoreVersion() map[string]int64 {
|
||||
func (x *JoinClusterRequest) GetMinStoreVersion() map[string]uint64 {
|
||||
if x != nil {
|
||||
return x.MinStoreVersion
|
||||
}
|
||||
@@ -698,9 +698,16 @@ type MachineDetails struct {
|
||||
Machine *MachineInfo `protobuf:"bytes,2,opt,name=machine,proto3" json:"machine,omitempty"`
|
||||
// Round-trip times to other machines in the cluster, keyed by peer machine ID.
|
||||
Rtts map[string]*RTTStats `protobuf:"bytes,4,rep,name=rtts,proto3" json:"rtts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
// Current cluster store version observed on this machine.
|
||||
// Per-actor vector (Corrosion actor UUID → max applied db_version) read from Corrosion crsql_db_versions.
|
||||
StoreVersion map[string]int64 `protobuf:"bytes,5,rep,name=store_version,json=storeVersion,proto3" json:"store_version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
// Store replication progress observed on this machine.
|
||||
// Maps each Corrosion actor UUID to its highest processed database version. Corrosion also counts versions whose
|
||||
// changes were superseded and skipped. Versions at or below a reported version may still be missing or pending
|
||||
// locally.
|
||||
//
|
||||
// Pass this vector to WaitForStoreVersion on another machine to wait for replication through these versions.
|
||||
// See that RPC's data-availability limitations. To combine observations from several machines, take the maximum
|
||||
// for each actor.
|
||||
// Capturing this vector does not wait for replication or prevent further writes.
|
||||
StoreVersion map[string]uint64 `protobuf:"bytes,5,rep,name=store_version,json=storeVersion,proto3" json:"store_version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
}
|
||||
|
||||
func (x *MachineDetails) Reset() {
|
||||
@@ -756,13 +763,64 @@ func (x *MachineDetails) GetRtts() map[string]*RTTStats {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *MachineDetails) GetStoreVersion() map[string]int64 {
|
||||
func (x *MachineDetails) GetStoreVersion() map[string]uint64 {
|
||||
if x != nil {
|
||||
return x.StoreVersion
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type WaitForStoreVersionRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// Minimum database version to reach for each Corrosion actor UUID.
|
||||
// Obtain a vector from InspectMachine. To combine several responses, take the maximum version for each actor.
|
||||
// Actors omitted from this vector and versions above its targets are not awaited. An empty vector requires
|
||||
// no replication. Unknown actors with positive targets remain pending until replication reaches them or the RPC ends.
|
||||
MinVersion map[string]uint64 `protobuf:"bytes,1,rep,name=min_version,json=minVersion,proto3" json:"min_version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
}
|
||||
|
||||
func (x *WaitForStoreVersionRequest) Reset() {
|
||||
*x = WaitForStoreVersionRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[10]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *WaitForStoreVersionRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*WaitForStoreVersionRequest) ProtoMessage() {}
|
||||
|
||||
func (x *WaitForStoreVersionRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[10]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use WaitForStoreVersionRequest.ProtoReflect.Descriptor instead.
|
||||
func (*WaitForStoreVersionRequest) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{10}
|
||||
}
|
||||
|
||||
func (x *WaitForStoreVersionRequest) GetMinVersion() map[string]uint64 {
|
||||
if x != nil {
|
||||
return x.MinVersion
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type TokenResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
@@ -774,7 +832,7 @@ type TokenResponse struct {
|
||||
func (x *TokenResponse) Reset() {
|
||||
*x = TokenResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[10]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[11]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -787,7 +845,7 @@ func (x *TokenResponse) String() string {
|
||||
func (*TokenResponse) ProtoMessage() {}
|
||||
|
||||
func (x *TokenResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[10]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[11]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -800,7 +858,7 @@ func (x *TokenResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use TokenResponse.ProtoReflect.Descriptor instead.
|
||||
func (*TokenResponse) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{10}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{11}
|
||||
}
|
||||
|
||||
func (x *TokenResponse) GetToken() string {
|
||||
@@ -819,7 +877,7 @@ type ResetRequest struct {
|
||||
func (x *ResetRequest) Reset() {
|
||||
*x = ResetRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[11]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[12]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -832,7 +890,7 @@ func (x *ResetRequest) String() string {
|
||||
func (*ResetRequest) ProtoMessage() {}
|
||||
|
||||
func (x *ResetRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[11]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[12]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -845,7 +903,7 @@ func (x *ResetRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use ResetRequest.ProtoReflect.Descriptor instead.
|
||||
func (*ResetRequest) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{11}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{12}
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
@@ -862,7 +920,7 @@ type Service struct {
|
||||
func (x *Service) Reset() {
|
||||
*x = Service{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[12]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[13]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -875,7 +933,7 @@ func (x *Service) String() string {
|
||||
func (*Service) ProtoMessage() {}
|
||||
|
||||
func (x *Service) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[12]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[13]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -888,7 +946,7 @@ func (x *Service) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use Service.ProtoReflect.Descriptor instead.
|
||||
func (*Service) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{12}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{13}
|
||||
}
|
||||
|
||||
func (x *Service) GetId() string {
|
||||
@@ -930,7 +988,7 @@ type InspectServiceRequest struct {
|
||||
func (x *InspectServiceRequest) Reset() {
|
||||
*x = InspectServiceRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[13]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[14]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -943,7 +1001,7 @@ func (x *InspectServiceRequest) String() string {
|
||||
func (*InspectServiceRequest) ProtoMessage() {}
|
||||
|
||||
func (x *InspectServiceRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[13]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[14]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -956,7 +1014,7 @@ func (x *InspectServiceRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use InspectServiceRequest.ProtoReflect.Descriptor instead.
|
||||
func (*InspectServiceRequest) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{13}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{14}
|
||||
}
|
||||
|
||||
func (x *InspectServiceRequest) GetId() string {
|
||||
@@ -977,7 +1035,7 @@ type InspectServiceResponse struct {
|
||||
func (x *InspectServiceResponse) Reset() {
|
||||
*x = InspectServiceResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[14]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[15]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -990,7 +1048,7 @@ func (x *InspectServiceResponse) String() string {
|
||||
func (*InspectServiceResponse) ProtoMessage() {}
|
||||
|
||||
func (x *InspectServiceResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[14]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[15]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -1003,7 +1061,7 @@ func (x *InspectServiceResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use InspectServiceResponse.ProtoReflect.Descriptor instead.
|
||||
func (*InspectServiceResponse) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{14}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{15}
|
||||
}
|
||||
|
||||
func (x *InspectServiceResponse) GetService() *Service {
|
||||
@@ -1027,7 +1085,7 @@ type InspectWireGuardNetworkResponse struct {
|
||||
func (x *InspectWireGuardNetworkResponse) Reset() {
|
||||
*x = InspectWireGuardNetworkResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[15]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[16]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -1040,7 +1098,7 @@ func (x *InspectWireGuardNetworkResponse) String() string {
|
||||
func (*InspectWireGuardNetworkResponse) ProtoMessage() {}
|
||||
|
||||
func (x *InspectWireGuardNetworkResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[15]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[16]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -1053,7 +1111,7 @@ func (x *InspectWireGuardNetworkResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use InspectWireGuardNetworkResponse.ProtoReflect.Descriptor instead.
|
||||
func (*InspectWireGuardNetworkResponse) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{15}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{16}
|
||||
}
|
||||
|
||||
func (x *InspectWireGuardNetworkResponse) GetInterfaceName() string {
|
||||
@@ -1100,7 +1158,7 @@ type WireGuardPeer struct {
|
||||
func (x *WireGuardPeer) Reset() {
|
||||
*x = WireGuardPeer{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[16]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[17]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -1113,7 +1171,7 @@ func (x *WireGuardPeer) String() string {
|
||||
func (*WireGuardPeer) ProtoMessage() {}
|
||||
|
||||
func (x *WireGuardPeer) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[16]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[17]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -1126,7 +1184,7 @@ func (x *WireGuardPeer) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use WireGuardPeer.ProtoReflect.Descriptor instead.
|
||||
func (*WireGuardPeer) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{16}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{17}
|
||||
}
|
||||
|
||||
func (x *WireGuardPeer) GetPublicKey() []byte {
|
||||
@@ -1183,7 +1241,7 @@ type RTTStats struct {
|
||||
func (x *RTTStats) Reset() {
|
||||
*x = RTTStats{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[17]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[18]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -1196,7 +1254,7 @@ func (x *RTTStats) String() string {
|
||||
func (*RTTStats) ProtoMessage() {}
|
||||
|
||||
func (x *RTTStats) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[17]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[18]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -1209,7 +1267,7 @@ func (x *RTTStats) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use RTTStats.ProtoReflect.Descriptor instead.
|
||||
func (*RTTStats) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{17}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{18}
|
||||
}
|
||||
|
||||
func (x *RTTStats) GetMedian() *durationpb.Duration {
|
||||
@@ -1239,7 +1297,7 @@ type Service_Container struct {
|
||||
func (x *Service_Container) Reset() {
|
||||
*x = Service_Container{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[21]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[23]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -1252,7 +1310,7 @@ func (x *Service_Container) String() string {
|
||||
func (*Service_Container) ProtoMessage() {}
|
||||
|
||||
func (x *Service_Container) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_pb_machine_proto_msgTypes[21]
|
||||
mi := &file_api_pb_machine_proto_msgTypes[23]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -1265,7 +1323,7 @@ func (x *Service_Container) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use Service_Container.ProtoReflect.Descriptor instead.
|
||||
func (*Service_Container) Descriptor() ([]byte, []int) {
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{12, 0}
|
||||
return file_api_pb_machine_proto_rawDescGZIP(), []int{13, 0}
|
||||
}
|
||||
|
||||
func (x *Service_Container) GetMachineId() string {
|
||||
@@ -1392,7 +1450,7 @@ var file_api_pb_machine_proto_rawDesc = []byte{
|
||||
0x14, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
|
||||
0x01, 0x22, 0x49, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x63, 0x68,
|
||||
0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6d,
|
||||
0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
|
||||
@@ -1420,7 +1478,18 @@ var file_api_pb_machine_proto_rawDesc = []byte{
|
||||
0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74,
|
||||
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25,
|
||||
0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xad,
|
||||
0x01, 0x0a, 0x1a, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x56,
|
||||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a,
|
||||
0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03,
|
||||
0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72,
|
||||
0x53, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e,
|
||||
0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a,
|
||||
0x3d, 0x0a, 0x0f, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74,
|
||||
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25,
|
||||
0x0a, 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
|
||||
0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
||||
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65,
|
||||
@@ -1478,7 +1547,7 @@ var file_api_pb_machine_proto_rawDesc = []byte{
|
||||
0x12, 0x32, 0x0a, 0x07, 0x73, 0x74, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x74,
|
||||
0x64, 0x44, 0x65, 0x76, 0x32, 0xdd, 0x05, 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
|
||||
0x64, 0x44, 0x65, 0x76, 0x32, 0xad, 0x06, 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
|
||||
0x12, 0x4d, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75,
|
||||
0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f,
|
||||
@@ -1503,7 +1572,12 @@ var file_api_pb_machine_proto_rawDesc = []byte{
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70,
|
||||
0x65, 0x63, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68,
|
||||
0x73, 0x65, 0x12, 0x4e, 0x0a, 0x13, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f,
|
||||
0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
|
||||
0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68,
|
||||
0x69, 0x6e, 0x65, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a,
|
||||
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69,
|
||||
@@ -1542,7 +1616,7 @@ func file_api_pb_machine_proto_rawDescGZIP() []byte {
|
||||
return file_api_pb_machine_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_api_pb_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
|
||||
var file_api_pb_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
|
||||
var file_api_pb_machine_proto_goTypes = []any{
|
||||
(*MachineInfo)(nil), // 0: api.MachineInfo
|
||||
(*NetworkConfig)(nil), // 1: api.NetworkConfig
|
||||
@@ -1554,83 +1628,88 @@ var file_api_pb_machine_proto_goTypes = []any{
|
||||
(*JoinClusterRequest)(nil), // 7: api.JoinClusterRequest
|
||||
(*InspectMachineResponse)(nil), // 8: api.InspectMachineResponse
|
||||
(*MachineDetails)(nil), // 9: api.MachineDetails
|
||||
(*TokenResponse)(nil), // 10: api.TokenResponse
|
||||
(*ResetRequest)(nil), // 11: api.ResetRequest
|
||||
(*Service)(nil), // 12: api.Service
|
||||
(*InspectServiceRequest)(nil), // 13: api.InspectServiceRequest
|
||||
(*InspectServiceResponse)(nil), // 14: api.InspectServiceResponse
|
||||
(*InspectWireGuardNetworkResponse)(nil), // 15: api.InspectWireGuardNetworkResponse
|
||||
(*WireGuardPeer)(nil), // 16: api.WireGuardPeer
|
||||
(*RTTStats)(nil), // 17: api.RTTStats
|
||||
nil, // 18: api.JoinClusterRequest.MinStoreVersionEntry
|
||||
nil, // 19: api.MachineDetails.RttsEntry
|
||||
nil, // 20: api.MachineDetails.StoreVersionEntry
|
||||
(*Service_Container)(nil), // 21: api.Service.Container
|
||||
(*IP)(nil), // 22: api.IP
|
||||
(*IPPrefix)(nil), // 23: api.IPPrefix
|
||||
(*IPPort)(nil), // 24: api.IPPort
|
||||
(*Metadata)(nil), // 25: api.Metadata
|
||||
(*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp
|
||||
(*durationpb.Duration)(nil), // 27: google.protobuf.Duration
|
||||
(*emptypb.Empty)(nil), // 28: google.protobuf.Empty
|
||||
(*LogsRequest)(nil), // 29: api.LogsRequest
|
||||
(*LogEntry)(nil), // 30: api.LogEntry
|
||||
(*WaitForStoreVersionRequest)(nil), // 10: api.WaitForStoreVersionRequest
|
||||
(*TokenResponse)(nil), // 11: api.TokenResponse
|
||||
(*ResetRequest)(nil), // 12: api.ResetRequest
|
||||
(*Service)(nil), // 13: api.Service
|
||||
(*InspectServiceRequest)(nil), // 14: api.InspectServiceRequest
|
||||
(*InspectServiceResponse)(nil), // 15: api.InspectServiceResponse
|
||||
(*InspectWireGuardNetworkResponse)(nil), // 16: api.InspectWireGuardNetworkResponse
|
||||
(*WireGuardPeer)(nil), // 17: api.WireGuardPeer
|
||||
(*RTTStats)(nil), // 18: api.RTTStats
|
||||
nil, // 19: api.JoinClusterRequest.MinStoreVersionEntry
|
||||
nil, // 20: api.MachineDetails.RttsEntry
|
||||
nil, // 21: api.MachineDetails.StoreVersionEntry
|
||||
nil, // 22: api.WaitForStoreVersionRequest.MinVersionEntry
|
||||
(*Service_Container)(nil), // 23: api.Service.Container
|
||||
(*IP)(nil), // 24: api.IP
|
||||
(*IPPrefix)(nil), // 25: api.IPPrefix
|
||||
(*IPPort)(nil), // 26: api.IPPort
|
||||
(*Metadata)(nil), // 27: api.Metadata
|
||||
(*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp
|
||||
(*durationpb.Duration)(nil), // 29: google.protobuf.Duration
|
||||
(*emptypb.Empty)(nil), // 30: google.protobuf.Empty
|
||||
(*LogsRequest)(nil), // 31: api.LogsRequest
|
||||
(*LogEntry)(nil), // 32: api.LogEntry
|
||||
}
|
||||
var file_api_pb_machine_proto_depIdxs = []int32{
|
||||
1, // 0: api.MachineInfo.network:type_name -> api.NetworkConfig
|
||||
22, // 1: api.MachineInfo.public_ip:type_name -> api.IP
|
||||
23, // 2: api.NetworkConfig.subnet:type_name -> api.IPPrefix
|
||||
22, // 3: api.NetworkConfig.management_ip:type_name -> api.IP
|
||||
24, // 4: api.NetworkConfig.endpoints:type_name -> api.IPPort
|
||||
22, // 5: api.UpdateMachineRequest.public_ip:type_name -> api.IP
|
||||
24, // 6: api.UpdateMachineRequest.endpoints:type_name -> api.IPPort
|
||||
24, // 1: api.MachineInfo.public_ip:type_name -> api.IP
|
||||
25, // 2: api.NetworkConfig.subnet:type_name -> api.IPPrefix
|
||||
24, // 3: api.NetworkConfig.management_ip:type_name -> api.IP
|
||||
26, // 4: api.NetworkConfig.endpoints:type_name -> api.IPPort
|
||||
24, // 5: api.UpdateMachineRequest.public_ip:type_name -> api.IP
|
||||
26, // 6: api.UpdateMachineRequest.endpoints:type_name -> api.IPPort
|
||||
0, // 7: api.UpdateMachineResponse.machine:type_name -> api.MachineInfo
|
||||
23, // 8: api.InitClusterRequest.network:type_name -> api.IPPrefix
|
||||
22, // 9: api.InitClusterRequest.public_ip:type_name -> api.IP
|
||||
24, // 10: api.InitClusterRequest.wireguard_endpoints:type_name -> api.IPPort
|
||||
25, // 8: api.InitClusterRequest.network:type_name -> api.IPPrefix
|
||||
24, // 9: api.InitClusterRequest.public_ip:type_name -> api.IP
|
||||
26, // 10: api.InitClusterRequest.wireguard_endpoints:type_name -> api.IPPort
|
||||
0, // 11: api.InitClusterResponse.machine:type_name -> api.MachineInfo
|
||||
0, // 12: api.JoinClusterRequest.machine:type_name -> api.MachineInfo
|
||||
0, // 13: api.JoinClusterRequest.other_machines:type_name -> api.MachineInfo
|
||||
18, // 14: api.JoinClusterRequest.min_store_version:type_name -> api.JoinClusterRequest.MinStoreVersionEntry
|
||||
19, // 14: api.JoinClusterRequest.min_store_version:type_name -> api.JoinClusterRequest.MinStoreVersionEntry
|
||||
9, // 15: api.InspectMachineResponse.machines:type_name -> api.MachineDetails
|
||||
25, // 16: api.MachineDetails.metadata:type_name -> api.Metadata
|
||||
27, // 16: api.MachineDetails.metadata:type_name -> api.Metadata
|
||||
0, // 17: api.MachineDetails.machine:type_name -> api.MachineInfo
|
||||
19, // 18: api.MachineDetails.rtts:type_name -> api.MachineDetails.RttsEntry
|
||||
20, // 19: api.MachineDetails.store_version:type_name -> api.MachineDetails.StoreVersionEntry
|
||||
21, // 20: api.Service.containers:type_name -> api.Service.Container
|
||||
12, // 21: api.InspectServiceResponse.service:type_name -> api.Service
|
||||
16, // 22: api.InspectWireGuardNetworkResponse.peers:type_name -> api.WireGuardPeer
|
||||
26, // 23: api.WireGuardPeer.last_handshake_time:type_name -> google.protobuf.Timestamp
|
||||
27, // 24: api.RTTStats.median:type_name -> google.protobuf.Duration
|
||||
27, // 25: api.RTTStats.std_dev:type_name -> google.protobuf.Duration
|
||||
17, // 26: api.MachineDetails.RttsEntry.value:type_name -> api.RTTStats
|
||||
28, // 27: api.Machine.CheckPrerequisites:input_type -> google.protobuf.Empty
|
||||
5, // 28: api.Machine.InitCluster:input_type -> api.InitClusterRequest
|
||||
7, // 29: api.Machine.JoinCluster:input_type -> api.JoinClusterRequest
|
||||
28, // 30: api.Machine.Token:input_type -> google.protobuf.Empty
|
||||
28, // 31: api.Machine.Inspect:input_type -> google.protobuf.Empty
|
||||
28, // 32: api.Machine.InspectMachine:input_type -> google.protobuf.Empty
|
||||
2, // 33: api.Machine.UpdateMachine:input_type -> api.UpdateMachineRequest
|
||||
28, // 34: api.Machine.InspectWireGuardNetwork:input_type -> google.protobuf.Empty
|
||||
11, // 35: api.Machine.Reset:input_type -> api.ResetRequest
|
||||
13, // 36: api.Machine.InspectService:input_type -> api.InspectServiceRequest
|
||||
29, // 37: api.Machine.MachineLogs:input_type -> api.LogsRequest
|
||||
4, // 38: api.Machine.CheckPrerequisites:output_type -> api.CheckPrerequisitesResponse
|
||||
6, // 39: api.Machine.InitCluster:output_type -> api.InitClusterResponse
|
||||
28, // 40: api.Machine.JoinCluster:output_type -> google.protobuf.Empty
|
||||
10, // 41: api.Machine.Token:output_type -> api.TokenResponse
|
||||
0, // 42: api.Machine.Inspect:output_type -> api.MachineInfo
|
||||
8, // 43: api.Machine.InspectMachine:output_type -> api.InspectMachineResponse
|
||||
3, // 44: api.Machine.UpdateMachine:output_type -> api.UpdateMachineResponse
|
||||
15, // 45: api.Machine.InspectWireGuardNetwork:output_type -> api.InspectWireGuardNetworkResponse
|
||||
28, // 46: api.Machine.Reset:output_type -> google.protobuf.Empty
|
||||
14, // 47: api.Machine.InspectService:output_type -> api.InspectServiceResponse
|
||||
30, // 48: api.Machine.MachineLogs:output_type -> api.LogEntry
|
||||
38, // [38:49] is the sub-list for method output_type
|
||||
27, // [27:38] is the sub-list for method input_type
|
||||
27, // [27:27] is the sub-list for extension type_name
|
||||
27, // [27:27] is the sub-list for extension extendee
|
||||
0, // [0:27] is the sub-list for field type_name
|
||||
20, // 18: api.MachineDetails.rtts:type_name -> api.MachineDetails.RttsEntry
|
||||
21, // 19: api.MachineDetails.store_version:type_name -> api.MachineDetails.StoreVersionEntry
|
||||
22, // 20: api.WaitForStoreVersionRequest.min_version:type_name -> api.WaitForStoreVersionRequest.MinVersionEntry
|
||||
23, // 21: api.Service.containers:type_name -> api.Service.Container
|
||||
13, // 22: api.InspectServiceResponse.service:type_name -> api.Service
|
||||
17, // 23: api.InspectWireGuardNetworkResponse.peers:type_name -> api.WireGuardPeer
|
||||
28, // 24: api.WireGuardPeer.last_handshake_time:type_name -> google.protobuf.Timestamp
|
||||
29, // 25: api.RTTStats.median:type_name -> google.protobuf.Duration
|
||||
29, // 26: api.RTTStats.std_dev:type_name -> google.protobuf.Duration
|
||||
18, // 27: api.MachineDetails.RttsEntry.value:type_name -> api.RTTStats
|
||||
30, // 28: api.Machine.CheckPrerequisites:input_type -> google.protobuf.Empty
|
||||
5, // 29: api.Machine.InitCluster:input_type -> api.InitClusterRequest
|
||||
7, // 30: api.Machine.JoinCluster:input_type -> api.JoinClusterRequest
|
||||
30, // 31: api.Machine.Token:input_type -> google.protobuf.Empty
|
||||
30, // 32: api.Machine.Inspect:input_type -> google.protobuf.Empty
|
||||
30, // 33: api.Machine.InspectMachine:input_type -> google.protobuf.Empty
|
||||
10, // 34: api.Machine.WaitForStoreVersion:input_type -> api.WaitForStoreVersionRequest
|
||||
2, // 35: api.Machine.UpdateMachine:input_type -> api.UpdateMachineRequest
|
||||
30, // 36: api.Machine.InspectWireGuardNetwork:input_type -> google.protobuf.Empty
|
||||
12, // 37: api.Machine.Reset:input_type -> api.ResetRequest
|
||||
14, // 38: api.Machine.InspectService:input_type -> api.InspectServiceRequest
|
||||
31, // 39: api.Machine.MachineLogs:input_type -> api.LogsRequest
|
||||
4, // 40: api.Machine.CheckPrerequisites:output_type -> api.CheckPrerequisitesResponse
|
||||
6, // 41: api.Machine.InitCluster:output_type -> api.InitClusterResponse
|
||||
30, // 42: api.Machine.JoinCluster:output_type -> google.protobuf.Empty
|
||||
11, // 43: api.Machine.Token:output_type -> api.TokenResponse
|
||||
0, // 44: api.Machine.Inspect:output_type -> api.MachineInfo
|
||||
8, // 45: api.Machine.InspectMachine:output_type -> api.InspectMachineResponse
|
||||
30, // 46: api.Machine.WaitForStoreVersion:output_type -> google.protobuf.Empty
|
||||
3, // 47: api.Machine.UpdateMachine:output_type -> api.UpdateMachineResponse
|
||||
16, // 48: api.Machine.InspectWireGuardNetwork:output_type -> api.InspectWireGuardNetworkResponse
|
||||
30, // 49: api.Machine.Reset:output_type -> google.protobuf.Empty
|
||||
15, // 50: api.Machine.InspectService:output_type -> api.InspectServiceResponse
|
||||
32, // 51: api.Machine.MachineLogs:output_type -> api.LogEntry
|
||||
40, // [40:52] is the sub-list for method output_type
|
||||
28, // [28:40] is the sub-list for method input_type
|
||||
28, // [28:28] is the sub-list for extension type_name
|
||||
28, // [28:28] is the sub-list for extension extendee
|
||||
0, // [0:28] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_api_pb_machine_proto_init() }
|
||||
@@ -1761,7 +1840,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[10].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*TokenResponse); i {
|
||||
switch v := v.(*WaitForStoreVersionRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1773,7 +1852,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[11].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*ResetRequest); i {
|
||||
switch v := v.(*TokenResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1785,7 +1864,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[12].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*Service); i {
|
||||
switch v := v.(*ResetRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1797,7 +1876,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[13].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*InspectServiceRequest); i {
|
||||
switch v := v.(*Service); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1809,7 +1888,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[14].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*InspectServiceResponse); i {
|
||||
switch v := v.(*InspectServiceRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1821,7 +1900,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[15].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*InspectWireGuardNetworkResponse); i {
|
||||
switch v := v.(*InspectServiceResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1833,7 +1912,7 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[16].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*WireGuardPeer); i {
|
||||
switch v := v.(*InspectWireGuardNetworkResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
@@ -1845,6 +1924,18 @@ func file_api_pb_machine_proto_init() {
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[17].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*WireGuardPeer); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[18].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*RTTStats); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
@@ -1856,7 +1947,7 @@ func file_api_pb_machine_proto_init() {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_pb_machine_proto_msgTypes[21].Exporter = func(v any, i int) any {
|
||||
file_api_pb_machine_proto_msgTypes[23].Exporter = func(v any, i int) any {
|
||||
switch v := v.(*Service_Container); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
@@ -1880,7 +1971,7 @@ func file_api_pb_machine_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_api_pb_machine_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 22,
|
||||
NumMessages: 24,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
|
||||
+36
-5
@@ -19,6 +19,22 @@ service Machine {
|
||||
rpc Inspect(google.protobuf.Empty) returns (MachineInfo);
|
||||
// InspectMachine retrieves detailed information about the machine. Supports broadcasting to multiple machines.
|
||||
rpc InspectMachine(google.protobuf.Empty) returns (InspectMachineResponse);
|
||||
// WaitForStoreVersion waits until the cluster store on this machine has reached each requested actor version, with
|
||||
// no known missing or pending transactions through those versions.
|
||||
// Corrosion may satisfy a version by applying its surviving changes or by marking it complete because its changes
|
||||
// have been superseded.
|
||||
//
|
||||
// Waiting normally makes the captured data available on this machine. However, another write may replace some of that
|
||||
// data before it arrives. Corrosion can then complete the older version without transferring the replaced data.
|
||||
// If the replacement is outside the requested versions, this RPC can succeed while the affected data is still missing
|
||||
// or outdated. This can happen during concurrent updates even when all machines are well connected.
|
||||
//
|
||||
// Success does not guarantee an exact snapshot or delivery of every historical value. Callers that require a specific
|
||||
// record or condition should verify it after waiting.
|
||||
//
|
||||
// This RPC observes native replication without initiating synchronisation.
|
||||
// Use the RPC deadline to bound the wait.
|
||||
rpc WaitForStoreVersion(WaitForStoreVersionRequest) returns (google.protobuf.Empty);
|
||||
// UpdateMachine updates the configuration of the machine.
|
||||
rpc UpdateMachine(UpdateMachineRequest) returns (UpdateMachineResponse);
|
||||
// InspectWireGuardNetwork retrieves the current WireGuard network configuration and peer status.
|
||||
@@ -105,8 +121,8 @@ message JoinClusterRequest {
|
||||
// MTU of the WireGuard interface on this machine. The daemon auto-detects the optimal MTU if 0 or not set.
|
||||
int32 wireguard_mtu = 7;
|
||||
// Cluster store version this machine must reach before participating.
|
||||
// Per-actor vector (Corrosion actor UUID → max applied db_version).
|
||||
map<string, int64> min_store_version = 6;
|
||||
// Per-actor vector (Corrosion actor UUID → minimum required db_version).
|
||||
map<string, uint64> min_store_version = 6;
|
||||
}
|
||||
|
||||
message InspectMachineResponse {
|
||||
@@ -119,9 +135,24 @@ message MachineDetails {
|
||||
MachineInfo machine = 2;
|
||||
// Round-trip times to other machines in the cluster, keyed by peer machine ID.
|
||||
map<string, RTTStats> rtts = 4;
|
||||
// Current cluster store version observed on this machine.
|
||||
// Per-actor vector (Corrosion actor UUID → max applied db_version) read from Corrosion crsql_db_versions.
|
||||
map<string, int64> store_version = 5;
|
||||
// Store replication progress observed on this machine.
|
||||
// Maps each Corrosion actor UUID to its highest processed database version. Corrosion also counts versions whose
|
||||
// changes were superseded and skipped. Versions at or below a reported version may still be missing or pending
|
||||
// locally.
|
||||
//
|
||||
// Pass this vector to WaitForStoreVersion on another machine to wait for replication through these versions.
|
||||
// See that RPC's data-availability limitations. To combine observations from several machines, take the maximum
|
||||
// for each actor.
|
||||
// Capturing this vector does not wait for replication or prevent further writes.
|
||||
map<string, uint64> store_version = 5;
|
||||
}
|
||||
|
||||
message WaitForStoreVersionRequest {
|
||||
// Minimum database version to reach for each Corrosion actor UUID.
|
||||
// Obtain a vector from InspectMachine. To combine several responses, take the maximum version for each actor.
|
||||
// Actors omitted from this vector and versions above its targets are not awaited. An empty vector requires
|
||||
// no replication. Unknown actors with positive targets remain pending until replication reaches them or the RPC ends.
|
||||
map<string, uint64> min_version = 1;
|
||||
}
|
||||
|
||||
message TokenResponse {
|
||||
|
||||
@@ -26,6 +26,7 @@ const (
|
||||
Machine_Token_FullMethodName = "/api.Machine/Token"
|
||||
Machine_Inspect_FullMethodName = "/api.Machine/Inspect"
|
||||
Machine_InspectMachine_FullMethodName = "/api.Machine/InspectMachine"
|
||||
Machine_WaitForStoreVersion_FullMethodName = "/api.Machine/WaitForStoreVersion"
|
||||
Machine_UpdateMachine_FullMethodName = "/api.Machine/UpdateMachine"
|
||||
Machine_InspectWireGuardNetwork_FullMethodName = "/api.Machine/InspectWireGuardNetwork"
|
||||
Machine_Reset_FullMethodName = "/api.Machine/Reset"
|
||||
@@ -46,6 +47,22 @@ type MachineClient interface {
|
||||
Inspect(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*MachineInfo, error)
|
||||
// InspectMachine retrieves detailed information about the machine. Supports broadcasting to multiple machines.
|
||||
InspectMachine(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*InspectMachineResponse, error)
|
||||
// WaitForStoreVersion waits until the cluster store on this machine has reached each requested actor version, with
|
||||
// no known missing or pending transactions through those versions.
|
||||
// Corrosion may satisfy a version by applying its surviving changes or by marking it complete because its changes
|
||||
// have been superseded.
|
||||
//
|
||||
// Waiting normally makes the captured data available on this machine. However, another write may replace some of that
|
||||
// data before it arrives. Corrosion can then complete the older version without transferring the replaced data.
|
||||
// If the replacement is outside the requested versions, this RPC can succeed while the affected data is still missing
|
||||
// or outdated. This can happen during concurrent updates even when all machines are well connected.
|
||||
//
|
||||
// Success does not guarantee an exact snapshot or delivery of every historical value. Callers that require a specific
|
||||
// record or condition should verify it after waiting.
|
||||
//
|
||||
// This RPC observes native replication without initiating synchronisation.
|
||||
// Use the RPC deadline to bound the wait.
|
||||
WaitForStoreVersion(ctx context.Context, in *WaitForStoreVersionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
// UpdateMachine updates the configuration of the machine.
|
||||
UpdateMachine(ctx context.Context, in *UpdateMachineRequest, opts ...grpc.CallOption) (*UpdateMachineResponse, error)
|
||||
// InspectWireGuardNetwork retrieves the current WireGuard network configuration and peer status.
|
||||
@@ -124,6 +141,16 @@ func (c *machineClient) InspectMachine(ctx context.Context, in *emptypb.Empty, o
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *machineClient) WaitForStoreVersion(ctx context.Context, in *WaitForStoreVersionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, Machine_WaitForStoreVersion_FullMethodName, in, out, cOpts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *machineClient) UpdateMachine(ctx context.Context, in *UpdateMachineRequest, opts ...grpc.CallOption) (*UpdateMachineResponse, error) {
|
||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||
out := new(UpdateMachineResponse)
|
||||
@@ -196,6 +223,22 @@ type MachineServer interface {
|
||||
Inspect(context.Context, *emptypb.Empty) (*MachineInfo, error)
|
||||
// InspectMachine retrieves detailed information about the machine. Supports broadcasting to multiple machines.
|
||||
InspectMachine(context.Context, *emptypb.Empty) (*InspectMachineResponse, error)
|
||||
// WaitForStoreVersion waits until the cluster store on this machine has reached each requested actor version, with
|
||||
// no known missing or pending transactions through those versions.
|
||||
// Corrosion may satisfy a version by applying its surviving changes or by marking it complete because its changes
|
||||
// have been superseded.
|
||||
//
|
||||
// Waiting normally makes the captured data available on this machine. However, another write may replace some of that
|
||||
// data before it arrives. Corrosion can then complete the older version without transferring the replaced data.
|
||||
// If the replacement is outside the requested versions, this RPC can succeed while the affected data is still missing
|
||||
// or outdated. This can happen during concurrent updates even when all machines are well connected.
|
||||
//
|
||||
// Success does not guarantee an exact snapshot or delivery of every historical value. Callers that require a specific
|
||||
// record or condition should verify it after waiting.
|
||||
//
|
||||
// This RPC observes native replication without initiating synchronisation.
|
||||
// Use the RPC deadline to bound the wait.
|
||||
WaitForStoreVersion(context.Context, *WaitForStoreVersionRequest) (*emptypb.Empty, error)
|
||||
// UpdateMachine updates the configuration of the machine.
|
||||
UpdateMachine(context.Context, *UpdateMachineRequest) (*UpdateMachineResponse, error)
|
||||
// InspectWireGuardNetwork retrieves the current WireGuard network configuration and peer status.
|
||||
@@ -232,6 +275,9 @@ func (UnimplementedMachineServer) Inspect(context.Context, *emptypb.Empty) (*Mac
|
||||
func (UnimplementedMachineServer) InspectMachine(context.Context, *emptypb.Empty) (*InspectMachineResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method InspectMachine not implemented")
|
||||
}
|
||||
func (UnimplementedMachineServer) WaitForStoreVersion(context.Context, *WaitForStoreVersionRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method WaitForStoreVersion not implemented")
|
||||
}
|
||||
func (UnimplementedMachineServer) UpdateMachine(context.Context, *UpdateMachineRequest) (*UpdateMachineResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateMachine not implemented")
|
||||
}
|
||||
@@ -376,6 +422,24 @@ func _Machine_InspectMachine_Handler(srv interface{}, ctx context.Context, dec f
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Machine_WaitForStoreVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(WaitForStoreVersionRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(MachineServer).WaitForStoreVersion(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: Machine_WaitForStoreVersion_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(MachineServer).WaitForStoreVersion(ctx, req.(*WaitForStoreVersionRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Machine_UpdateMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdateMachineRequest)
|
||||
if err := dec(in); err != nil {
|
||||
@@ -490,6 +554,10 @@ var Machine_ServiceDesc = grpc.ServiceDesc{
|
||||
MethodName: "InspectMachine",
|
||||
Handler: _Machine_InspectMachine_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "WaitForStoreVersion",
|
||||
Handler: _Machine_WaitForStoreVersion_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdateMachine",
|
||||
Handler: _Machine_UpdateMachine_Handler,
|
||||
|
||||
Reference in new issue
Block a user