diff --git a/client/api/omni/specs/omni.pb.go b/client/api/omni/specs/omni.pb.go index 37486c37..11f213ba 100644 --- a/client/api/omni/specs/omni.pb.go +++ b/client/api/omni/specs/omni.pb.go @@ -609,7 +609,7 @@ func (x ControlPlaneStatusSpec_Condition_Status) Number() protoreflect.EnumNumbe // Deprecated: Use ControlPlaneStatusSpec_Condition_Status.Descriptor instead. func (ControlPlaneStatusSpec_Condition_Status) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 0, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{44, 0, 0} } type ControlPlaneStatusSpec_Condition_Severity int32 @@ -658,7 +658,7 @@ func (x ControlPlaneStatusSpec_Condition_Severity) Number() protoreflect.EnumNum // Deprecated: Use ControlPlaneStatusSpec_Condition_Severity.Descriptor instead. func (ControlPlaneStatusSpec_Condition_Severity) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 0, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{44, 0, 1} } type KubernetesUpgradeStatusSpec_Phase int32 @@ -713,7 +713,7 @@ func (x KubernetesUpgradeStatusSpec_Phase) Number() protoreflect.EnumNumber { // Deprecated: Use KubernetesUpgradeStatusSpec_Phase.Descriptor instead. func (KubernetesUpgradeStatusSpec_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{47, 0} } type ExtensionsConfigurationStatusSpec_Phase int32 @@ -762,7 +762,7 @@ func (x ExtensionsConfigurationStatusSpec_Phase) Number() protoreflect.EnumNumbe // Deprecated: Use ExtensionsConfigurationStatusSpec_Phase.Descriptor instead. func (ExtensionsConfigurationStatusSpec_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{66, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{68, 0} } type MachineExtensionsStatusSpec_Item_Phase int32 @@ -811,7 +811,7 @@ func (x MachineExtensionsStatusSpec_Item_Phase) Number() protoreflect.EnumNumber // Deprecated: Use MachineExtensionsStatusSpec_Item_Phase.Descriptor instead. func (MachineExtensionsStatusSpec_Item_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{68, 0, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{70, 0, 0} } // MachineSpec describes a Machine. @@ -3599,6 +3599,55 @@ func (x *MachineSetStatusSpec) GetLockedUpdates() uint32 { return 0 } +// MachineSetRequiredMachinesSpec describes the required machines for the machine set. +type MachineSetRequiredMachinesSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // RequiredMachines is the number of machines required to satisfy the machine set. + RequiredAdditionalMachines uint32 `protobuf:"varint,1,opt,name=required_additional_machines,json=requiredAdditionalMachines,proto3" json:"required_additional_machines,omitempty"` +} + +func (x *MachineSetRequiredMachinesSpec) Reset() { + *x = MachineSetRequiredMachinesSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_omni_specs_omni_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MachineSetRequiredMachinesSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MachineSetRequiredMachinesSpec) ProtoMessage() {} + +func (x *MachineSetRequiredMachinesSpec) ProtoReflect() protoreflect.Message { + mi := &file_omni_specs_omni_proto_msgTypes[40] + 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 MachineSetRequiredMachinesSpec.ProtoReflect.Descriptor instead. +func (*MachineSetRequiredMachinesSpec) Descriptor() ([]byte, []int) { + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40} +} + +func (x *MachineSetRequiredMachinesSpec) GetRequiredAdditionalMachines() uint32 { + if x != nil { + return x.RequiredAdditionalMachines + } + return 0 +} + // MachineSetNodeSpec is a binding between ClusterMachine and MachineSet. type MachineSetNodeSpec struct { state protoimpl.MessageState @@ -3609,7 +3658,7 @@ type MachineSetNodeSpec struct { func (x *MachineSetNodeSpec) Reset() { *x = MachineSetNodeSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[40] + mi := &file_omni_specs_omni_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3622,7 +3671,7 @@ func (x *MachineSetNodeSpec) String() string { func (*MachineSetNodeSpec) ProtoMessage() {} func (x *MachineSetNodeSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[40] + mi := &file_omni_specs_omni_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3635,7 +3684,7 @@ func (x *MachineSetNodeSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetNodeSpec.ProtoReflect.Descriptor instead. func (*MachineSetNodeSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{40} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{41} } // MachineLabelsSpec is the resource that adds user defined labels to the MachineStatus. @@ -3648,7 +3697,7 @@ type MachineLabelsSpec struct { func (x *MachineLabelsSpec) Reset() { *x = MachineLabelsSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[41] + mi := &file_omni_specs_omni_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3661,7 +3710,7 @@ func (x *MachineLabelsSpec) String() string { func (*MachineLabelsSpec) ProtoMessage() {} func (x *MachineLabelsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[41] + mi := &file_omni_specs_omni_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3674,7 +3723,7 @@ func (x *MachineLabelsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineLabelsSpec.ProtoReflect.Descriptor instead. func (*MachineLabelsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{41} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{42} } // MachineStatusSnapshotSpec describes latest known status of MachineStatus Talos resource. @@ -3689,7 +3738,7 @@ type MachineStatusSnapshotSpec struct { func (x *MachineStatusSnapshotSpec) Reset() { *x = MachineStatusSnapshotSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[42] + mi := &file_omni_specs_omni_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3702,7 +3751,7 @@ func (x *MachineStatusSnapshotSpec) String() string { func (*MachineStatusSnapshotSpec) ProtoMessage() {} func (x *MachineStatusSnapshotSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[42] + mi := &file_omni_specs_omni_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3715,7 +3764,7 @@ func (x *MachineStatusSnapshotSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineStatusSnapshotSpec.ProtoReflect.Descriptor instead. func (*MachineStatusSnapshotSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{42} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{43} } func (x *MachineStatusSnapshotSpec) GetMachineStatus() *machine.MachineStatusEvent { @@ -3737,7 +3786,7 @@ type ControlPlaneStatusSpec struct { func (x *ControlPlaneStatusSpec) Reset() { *x = ControlPlaneStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[43] + mi := &file_omni_specs_omni_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3750,7 +3799,7 @@ func (x *ControlPlaneStatusSpec) String() string { func (*ControlPlaneStatusSpec) ProtoMessage() {} func (x *ControlPlaneStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[43] + mi := &file_omni_specs_omni_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3763,7 +3812,7 @@ func (x *ControlPlaneStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlPlaneStatusSpec.ProtoReflect.Descriptor instead. func (*ControlPlaneStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{43} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{44} } func (x *ControlPlaneStatusSpec) GetConditions() []*ControlPlaneStatusSpec_Condition { @@ -3786,7 +3835,7 @@ type ClusterEndpointSpec struct { func (x *ClusterEndpointSpec) Reset() { *x = ClusterEndpointSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[44] + mi := &file_omni_specs_omni_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3799,7 +3848,7 @@ func (x *ClusterEndpointSpec) String() string { func (*ClusterEndpointSpec) ProtoMessage() {} func (x *ClusterEndpointSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[44] + mi := &file_omni_specs_omni_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3812,7 +3861,7 @@ func (x *ClusterEndpointSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterEndpointSpec.ProtoReflect.Descriptor instead. func (*ClusterEndpointSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{44} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{45} } func (x *ClusterEndpointSpec) GetManagementAddresses() []string { @@ -3837,7 +3886,7 @@ type KubernetesStatusSpec struct { func (x *KubernetesStatusSpec) Reset() { *x = KubernetesStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[45] + mi := &file_omni_specs_omni_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3850,7 +3899,7 @@ func (x *KubernetesStatusSpec) String() string { func (*KubernetesStatusSpec) ProtoMessage() {} func (x *KubernetesStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[45] + mi := &file_omni_specs_omni_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3863,7 +3912,7 @@ func (x *KubernetesStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46} } func (x *KubernetesStatusSpec) GetNodes() []*KubernetesStatusSpec_NodeStatus { @@ -3905,7 +3954,7 @@ type KubernetesUpgradeStatusSpec struct { func (x *KubernetesUpgradeStatusSpec) Reset() { *x = KubernetesUpgradeStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[46] + mi := &file_omni_specs_omni_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3918,7 +3967,7 @@ func (x *KubernetesUpgradeStatusSpec) String() string { func (*KubernetesUpgradeStatusSpec) ProtoMessage() {} func (x *KubernetesUpgradeStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[46] + mi := &file_omni_specs_omni_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3931,7 +3980,7 @@ func (x *KubernetesUpgradeStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUpgradeStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesUpgradeStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{46} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{47} } func (x *KubernetesUpgradeStatusSpec) GetPhase() KubernetesUpgradeStatusSpec_Phase { @@ -3998,7 +4047,7 @@ type KubernetesUpgradeManifestStatusSpec struct { func (x *KubernetesUpgradeManifestStatusSpec) Reset() { *x = KubernetesUpgradeManifestStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[47] + mi := &file_omni_specs_omni_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4011,7 +4060,7 @@ func (x *KubernetesUpgradeManifestStatusSpec) String() string { func (*KubernetesUpgradeManifestStatusSpec) ProtoMessage() {} func (x *KubernetesUpgradeManifestStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[47] + mi := &file_omni_specs_omni_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4024,7 +4073,7 @@ func (x *KubernetesUpgradeManifestStatusSpec) ProtoReflect() protoreflect.Messag // Deprecated: Use KubernetesUpgradeManifestStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesUpgradeManifestStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{47} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{48} } func (x *KubernetesUpgradeManifestStatusSpec) GetOutOfSync() int32 { @@ -4054,7 +4103,7 @@ type DestroyStatusSpec struct { func (x *DestroyStatusSpec) Reset() { *x = DestroyStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[48] + mi := &file_omni_specs_omni_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4067,7 +4116,7 @@ func (x *DestroyStatusSpec) String() string { func (*DestroyStatusSpec) ProtoMessage() {} func (x *DestroyStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[48] + mi := &file_omni_specs_omni_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4080,7 +4129,7 @@ func (x *DestroyStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyStatusSpec.ProtoReflect.Descriptor instead. func (*DestroyStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{48} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{49} } func (x *DestroyStatusSpec) GetPhase() string { @@ -4111,7 +4160,7 @@ type OngoingTaskSpec struct { func (x *OngoingTaskSpec) Reset() { *x = OngoingTaskSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[49] + mi := &file_omni_specs_omni_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4124,7 +4173,7 @@ func (x *OngoingTaskSpec) String() string { func (*OngoingTaskSpec) ProtoMessage() {} func (x *OngoingTaskSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[49] + mi := &file_omni_specs_omni_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4137,7 +4186,7 @@ func (x *OngoingTaskSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use OngoingTaskSpec.ProtoReflect.Descriptor instead. func (*OngoingTaskSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{49} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{50} } func (x *OngoingTaskSpec) GetTitle() string { @@ -4210,7 +4259,7 @@ type ClusterMachineEncryptionKeySpec struct { func (x *ClusterMachineEncryptionKeySpec) Reset() { *x = ClusterMachineEncryptionKeySpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[50] + mi := &file_omni_specs_omni_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4223,7 +4272,7 @@ func (x *ClusterMachineEncryptionKeySpec) String() string { func (*ClusterMachineEncryptionKeySpec) ProtoMessage() {} func (x *ClusterMachineEncryptionKeySpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[50] + mi := &file_omni_specs_omni_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4236,7 +4285,7 @@ func (x *ClusterMachineEncryptionKeySpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterMachineEncryptionKeySpec.ProtoReflect.Descriptor instead. func (*ClusterMachineEncryptionKeySpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{50} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{51} } func (x *ClusterMachineEncryptionKeySpec) GetData() []byte { @@ -4265,7 +4314,7 @@ type ExposedServiceSpec struct { func (x *ExposedServiceSpec) Reset() { *x = ExposedServiceSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[51] + mi := &file_omni_specs_omni_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4278,7 +4327,7 @@ func (x *ExposedServiceSpec) String() string { func (*ExposedServiceSpec) ProtoMessage() {} func (x *ExposedServiceSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[51] + mi := &file_omni_specs_omni_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4291,7 +4340,7 @@ func (x *ExposedServiceSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ExposedServiceSpec.ProtoReflect.Descriptor instead. func (*ExposedServiceSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{51} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{52} } func (x *ExposedServiceSpec) GetPort() uint32 { @@ -4334,7 +4383,7 @@ type ClusterWorkloadProxyStatusSpec struct { func (x *ClusterWorkloadProxyStatusSpec) Reset() { *x = ClusterWorkloadProxyStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[52] + mi := &file_omni_specs_omni_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4347,7 +4396,7 @@ func (x *ClusterWorkloadProxyStatusSpec) String() string { func (*ClusterWorkloadProxyStatusSpec) ProtoMessage() {} func (x *ClusterWorkloadProxyStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[52] + mi := &file_omni_specs_omni_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4360,7 +4409,7 @@ func (x *ClusterWorkloadProxyStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterWorkloadProxyStatusSpec.ProtoReflect.Descriptor instead. func (*ClusterWorkloadProxyStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{52} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{53} } func (x *ClusterWorkloadProxyStatusSpec) GetNumExposedServices() uint32 { @@ -4386,7 +4435,7 @@ type FeaturesConfigSpec struct { func (x *FeaturesConfigSpec) Reset() { *x = FeaturesConfigSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[53] + mi := &file_omni_specs_omni_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4399,7 +4448,7 @@ func (x *FeaturesConfigSpec) String() string { func (*FeaturesConfigSpec) ProtoMessage() {} func (x *FeaturesConfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[53] + mi := &file_omni_specs_omni_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4412,7 +4461,7 @@ func (x *FeaturesConfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use FeaturesConfigSpec.ProtoReflect.Descriptor instead. func (*FeaturesConfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{53} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{54} } func (x *FeaturesConfigSpec) GetEnableWorkloadProxying() bool { @@ -4452,7 +4501,7 @@ type EtcdBackupSettings struct { func (x *EtcdBackupSettings) Reset() { *x = EtcdBackupSettings{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[54] + mi := &file_omni_specs_omni_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4465,7 +4514,7 @@ func (x *EtcdBackupSettings) String() string { func (*EtcdBackupSettings) ProtoMessage() {} func (x *EtcdBackupSettings) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[54] + mi := &file_omni_specs_omni_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4478,7 +4527,7 @@ func (x *EtcdBackupSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use EtcdBackupSettings.ProtoReflect.Descriptor instead. func (*EtcdBackupSettings) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{54} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{55} } func (x *EtcdBackupSettings) GetTickInterval() *durationpb.Duration { @@ -4515,7 +4564,7 @@ type MachineClassSpec struct { func (x *MachineClassSpec) Reset() { *x = MachineClassSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[55] + mi := &file_omni_specs_omni_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4528,7 +4577,7 @@ func (x *MachineClassSpec) String() string { func (*MachineClassSpec) ProtoMessage() {} func (x *MachineClassSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[55] + mi := &file_omni_specs_omni_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4541,7 +4590,7 @@ func (x *MachineClassSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineClassSpec.ProtoReflect.Descriptor instead. func (*MachineClassSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{55} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{56} } func (x *MachineClassSpec) GetMatchLabels() []string { @@ -4551,6 +4600,55 @@ func (x *MachineClassSpec) GetMatchLabels() []string { return nil } +// MachineClassStatusSpec describes an Omni MachineClassStatus resource spec. +type MachineClassStatusSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // RequiredAdditionalMachines is the number of additional machines required to satisfy the machine class. + RequiredAdditionalMachines uint32 `protobuf:"varint,1,opt,name=required_additional_machines,json=requiredAdditionalMachines,proto3" json:"required_additional_machines,omitempty"` +} + +func (x *MachineClassStatusSpec) Reset() { + *x = MachineClassStatusSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_omni_specs_omni_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MachineClassStatusSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MachineClassStatusSpec) ProtoMessage() {} + +func (x *MachineClassStatusSpec) ProtoReflect() protoreflect.Message { + mi := &file_omni_specs_omni_proto_msgTypes[57] + 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 MachineClassStatusSpec.ProtoReflect.Descriptor instead. +func (*MachineClassStatusSpec) Descriptor() ([]byte, []int) { + return file_omni_specs_omni_proto_rawDescGZIP(), []int{57} +} + +func (x *MachineClassStatusSpec) GetRequiredAdditionalMachines() uint32 { + if x != nil { + return x.RequiredAdditionalMachines + } + return 0 +} + // MachineConfigGenOptionsSpec describes machine related config generation inputs. type MachineConfigGenOptionsSpec struct { state protoimpl.MessageState @@ -4565,7 +4663,7 @@ type MachineConfigGenOptionsSpec struct { func (x *MachineConfigGenOptionsSpec) Reset() { *x = MachineConfigGenOptionsSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[56] + mi := &file_omni_specs_omni_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4578,7 +4676,7 @@ func (x *MachineConfigGenOptionsSpec) String() string { func (*MachineConfigGenOptionsSpec) ProtoMessage() {} func (x *MachineConfigGenOptionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[56] + mi := &file_omni_specs_omni_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4591,7 +4689,7 @@ func (x *MachineConfigGenOptionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineConfigGenOptionsSpec.ProtoReflect.Descriptor instead. func (*MachineConfigGenOptionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{56} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{58} } func (x *MachineConfigGenOptionsSpec) GetInstallDisk() string { @@ -4624,7 +4722,7 @@ type EtcdAuditResultSpec struct { func (x *EtcdAuditResultSpec) Reset() { *x = EtcdAuditResultSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[57] + mi := &file_omni_specs_omni_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4637,7 +4735,7 @@ func (x *EtcdAuditResultSpec) String() string { func (*EtcdAuditResultSpec) ProtoMessage() {} func (x *EtcdAuditResultSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[57] + mi := &file_omni_specs_omni_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4650,7 +4748,7 @@ func (x *EtcdAuditResultSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use EtcdAuditResultSpec.ProtoReflect.Descriptor instead. func (*EtcdAuditResultSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{57} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{59} } func (x *EtcdAuditResultSpec) GetEtcdMemberIds() []uint64 { @@ -4673,7 +4771,7 @@ type KubeconfigSpec struct { func (x *KubeconfigSpec) Reset() { *x = KubeconfigSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[58] + mi := &file_omni_specs_omni_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4686,7 +4784,7 @@ func (x *KubeconfigSpec) String() string { func (*KubeconfigSpec) ProtoMessage() {} func (x *KubeconfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[58] + mi := &file_omni_specs_omni_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4699,7 +4797,7 @@ func (x *KubeconfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubeconfigSpec.ProtoReflect.Descriptor instead. func (*KubeconfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{58} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{60} } func (x *KubeconfigSpec) GetData() []byte { @@ -4724,7 +4822,7 @@ type KubernetesUsageSpec struct { func (x *KubernetesUsageSpec) Reset() { *x = KubernetesUsageSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[59] + mi := &file_omni_specs_omni_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4737,7 +4835,7 @@ func (x *KubernetesUsageSpec) String() string { func (*KubernetesUsageSpec) ProtoMessage() {} func (x *KubernetesUsageSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[59] + mi := &file_omni_specs_omni_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4750,7 +4848,7 @@ func (x *KubernetesUsageSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{59} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{61} } func (x *KubernetesUsageSpec) GetCpu() *KubernetesUsageSpec_Quantity { @@ -4794,7 +4892,7 @@ type ImagePullRequestSpec struct { func (x *ImagePullRequestSpec) Reset() { *x = ImagePullRequestSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[60] + mi := &file_omni_specs_omni_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4807,7 +4905,7 @@ func (x *ImagePullRequestSpec) String() string { func (*ImagePullRequestSpec) ProtoMessage() {} func (x *ImagePullRequestSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[60] + mi := &file_omni_specs_omni_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4820,7 +4918,7 @@ func (x *ImagePullRequestSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ImagePullRequestSpec.ProtoReflect.Descriptor instead. func (*ImagePullRequestSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{60} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{62} } func (x *ImagePullRequestSpec) GetNodeImageList() []*ImagePullRequestSpec_NodeImageList { @@ -4848,7 +4946,7 @@ type ImagePullStatusSpec struct { func (x *ImagePullStatusSpec) Reset() { *x = ImagePullStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[61] + mi := &file_omni_specs_omni_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4861,7 +4959,7 @@ func (x *ImagePullStatusSpec) String() string { func (*ImagePullStatusSpec) ProtoMessage() {} func (x *ImagePullStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[61] + mi := &file_omni_specs_omni_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4874,7 +4972,7 @@ func (x *ImagePullStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ImagePullStatusSpec.ProtoReflect.Descriptor instead. func (*ImagePullStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{61} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{63} } func (x *ImagePullStatusSpec) GetLastProcessedNode() string { @@ -4930,7 +5028,7 @@ type SchematicSpec struct { func (x *SchematicSpec) Reset() { *x = SchematicSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[62] + mi := &file_omni_specs_omni_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4943,7 +5041,7 @@ func (x *SchematicSpec) String() string { func (*SchematicSpec) ProtoMessage() {} func (x *SchematicSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[62] + mi := &file_omni_specs_omni_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4956,7 +5054,7 @@ func (x *SchematicSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use SchematicSpec.ProtoReflect.Descriptor instead. func (*SchematicSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{62} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{64} } // TalosExtensionsSpec represents all available extensions for a particular Talos version. @@ -4971,7 +5069,7 @@ type TalosExtensionsSpec struct { func (x *TalosExtensionsSpec) Reset() { *x = TalosExtensionsSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[63] + mi := &file_omni_specs_omni_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4984,7 +5082,7 @@ func (x *TalosExtensionsSpec) String() string { func (*TalosExtensionsSpec) ProtoMessage() {} func (x *TalosExtensionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[63] + mi := &file_omni_specs_omni_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4997,7 +5095,7 @@ func (x *TalosExtensionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosExtensionsSpec.ProtoReflect.Descriptor instead. func (*TalosExtensionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{63} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{65} } func (x *TalosExtensionsSpec) GetItems() []*TalosExtensionsSpec_Info { @@ -5020,7 +5118,7 @@ type SchematicConfigurationSpec struct { func (x *SchematicConfigurationSpec) Reset() { *x = SchematicConfigurationSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[64] + mi := &file_omni_specs_omni_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5033,7 +5131,7 @@ func (x *SchematicConfigurationSpec) String() string { func (*SchematicConfigurationSpec) ProtoMessage() {} func (x *SchematicConfigurationSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[64] + mi := &file_omni_specs_omni_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5046,7 +5144,7 @@ func (x *SchematicConfigurationSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use SchematicConfigurationSpec.ProtoReflect.Descriptor instead. func (*SchematicConfigurationSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{64} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{66} } func (x *SchematicConfigurationSpec) GetSchematicId() string { @@ -5075,7 +5173,7 @@ type ExtensionsConfigurationSpec struct { func (x *ExtensionsConfigurationSpec) Reset() { *x = ExtensionsConfigurationSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[65] + mi := &file_omni_specs_omni_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5088,7 +5186,7 @@ func (x *ExtensionsConfigurationSpec) String() string { func (*ExtensionsConfigurationSpec) ProtoMessage() {} func (x *ExtensionsConfigurationSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[65] + mi := &file_omni_specs_omni_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5101,7 +5199,7 @@ func (x *ExtensionsConfigurationSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtensionsConfigurationSpec.ProtoReflect.Descriptor instead. func (*ExtensionsConfigurationSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{65} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{67} } func (x *ExtensionsConfigurationSpec) GetExtensions() []string { @@ -5126,7 +5224,7 @@ type ExtensionsConfigurationStatusSpec struct { func (x *ExtensionsConfigurationStatusSpec) Reset() { *x = ExtensionsConfigurationStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[66] + mi := &file_omni_specs_omni_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5139,7 +5237,7 @@ func (x *ExtensionsConfigurationStatusSpec) String() string { func (*ExtensionsConfigurationStatusSpec) ProtoMessage() {} func (x *ExtensionsConfigurationStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[66] + mi := &file_omni_specs_omni_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5152,7 +5250,7 @@ func (x *ExtensionsConfigurationStatusSpec) ProtoReflect() protoreflect.Message // Deprecated: Use ExtensionsConfigurationStatusSpec.ProtoReflect.Descriptor instead. func (*ExtensionsConfigurationStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{66} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{68} } func (x *ExtensionsConfigurationStatusSpec) GetPhase() ExtensionsConfigurationStatusSpec_Phase { @@ -5188,7 +5286,7 @@ type MachineExtensionsSpec struct { func (x *MachineExtensionsSpec) Reset() { *x = MachineExtensionsSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[67] + mi := &file_omni_specs_omni_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5201,7 +5299,7 @@ func (x *MachineExtensionsSpec) String() string { func (*MachineExtensionsSpec) ProtoMessage() {} func (x *MachineExtensionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[67] + mi := &file_omni_specs_omni_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5214,7 +5312,7 @@ func (x *MachineExtensionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsSpec.ProtoReflect.Descriptor instead. func (*MachineExtensionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{67} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{69} } func (x *MachineExtensionsSpec) GetExtensions() []string { @@ -5237,7 +5335,7 @@ type MachineExtensionsStatusSpec struct { func (x *MachineExtensionsStatusSpec) Reset() { *x = MachineExtensionsStatusSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[68] + mi := &file_omni_specs_omni_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5250,7 +5348,7 @@ func (x *MachineExtensionsStatusSpec) String() string { func (*MachineExtensionsStatusSpec) ProtoMessage() {} func (x *MachineExtensionsStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[68] + mi := &file_omni_specs_omni_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5263,7 +5361,7 @@ func (x *MachineExtensionsStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsStatusSpec.ProtoReflect.Descriptor instead. func (*MachineExtensionsStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{68} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{70} } func (x *MachineExtensionsStatusSpec) GetExtensions() []*MachineExtensionsStatusSpec_Item { @@ -5294,7 +5392,7 @@ type MachineStatusMetricsSpec struct { func (x *MachineStatusMetricsSpec) Reset() { *x = MachineStatusMetricsSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[69] + mi := &file_omni_specs_omni_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5307,7 +5405,7 @@ func (x *MachineStatusMetricsSpec) String() string { func (*MachineStatusMetricsSpec) ProtoMessage() {} func (x *MachineStatusMetricsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[69] + mi := &file_omni_specs_omni_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5320,7 +5418,7 @@ func (x *MachineStatusMetricsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineStatusMetricsSpec.ProtoReflect.Descriptor instead. func (*MachineStatusMetricsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{69} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{71} } func (x *MachineStatusMetricsSpec) GetRegisteredMachinesCount() uint32 { @@ -5359,7 +5457,7 @@ type ClusterKubernetesNodesSpec struct { func (x *ClusterKubernetesNodesSpec) Reset() { *x = ClusterKubernetesNodesSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[70] + mi := &file_omni_specs_omni_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5372,7 +5470,7 @@ func (x *ClusterKubernetesNodesSpec) String() string { func (*ClusterKubernetesNodesSpec) ProtoMessage() {} func (x *ClusterKubernetesNodesSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[70] + mi := &file_omni_specs_omni_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5385,7 +5483,7 @@ func (x *ClusterKubernetesNodesSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterKubernetesNodesSpec.ProtoReflect.Descriptor instead. func (*ClusterKubernetesNodesSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{70} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{72} } func (x *ClusterKubernetesNodesSpec) GetNodes() []string { @@ -5410,7 +5508,7 @@ type KubernetesNodeAuditResultSpec struct { func (x *KubernetesNodeAuditResultSpec) Reset() { *x = KubernetesNodeAuditResultSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[71] + mi := &file_omni_specs_omni_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5423,7 +5521,7 @@ func (x *KubernetesNodeAuditResultSpec) String() string { func (*KubernetesNodeAuditResultSpec) ProtoMessage() {} func (x *KubernetesNodeAuditResultSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[71] + mi := &file_omni_specs_omni_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5436,7 +5534,7 @@ func (x *KubernetesNodeAuditResultSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesNodeAuditResultSpec.ProtoReflect.Descriptor instead. func (*KubernetesNodeAuditResultSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{71} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{73} } func (x *KubernetesNodeAuditResultSpec) GetDeletedNodes() []string { @@ -5465,7 +5563,7 @@ type MachineStatusSpec_HardwareStatus struct { func (x *MachineStatusSpec_HardwareStatus) Reset() { *x = MachineStatusSpec_HardwareStatus{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[72] + mi := &file_omni_specs_omni_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5478,7 +5576,7 @@ func (x *MachineStatusSpec_HardwareStatus) String() string { func (*MachineStatusSpec_HardwareStatus) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[72] + mi := &file_omni_specs_omni_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5543,7 +5641,7 @@ type MachineStatusSpec_NetworkStatus struct { func (x *MachineStatusSpec_NetworkStatus) Reset() { *x = MachineStatusSpec_NetworkStatus{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[73] + mi := &file_omni_specs_omni_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5556,7 +5654,7 @@ func (x *MachineStatusSpec_NetworkStatus) String() string { func (*MachineStatusSpec_NetworkStatus) ProtoMessage() {} func (x *MachineStatusSpec_NetworkStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[73] + mi := &file_omni_specs_omni_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5634,7 +5732,7 @@ type MachineStatusSpec_PlatformMetadata struct { func (x *MachineStatusSpec_PlatformMetadata) Reset() { *x = MachineStatusSpec_PlatformMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[74] + mi := &file_omni_specs_omni_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5647,7 +5745,7 @@ func (x *MachineStatusSpec_PlatformMetadata) String() string { func (*MachineStatusSpec_PlatformMetadata) ProtoMessage() {} func (x *MachineStatusSpec_PlatformMetadata) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[74] + mi := &file_omni_specs_omni_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5753,7 +5851,7 @@ type MachineStatusSpec_Schematic struct { func (x *MachineStatusSpec_Schematic) Reset() { *x = MachineStatusSpec_Schematic{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[75] + mi := &file_omni_specs_omni_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5766,7 +5864,7 @@ func (x *MachineStatusSpec_Schematic) String() string { func (*MachineStatusSpec_Schematic) ProtoMessage() {} func (x *MachineStatusSpec_Schematic) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[75] + mi := &file_omni_specs_omni_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5859,7 +5957,7 @@ type MachineStatusSpec_HardwareStatus_Processor struct { func (x *MachineStatusSpec_HardwareStatus_Processor) Reset() { *x = MachineStatusSpec_HardwareStatus_Processor{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[77] + mi := &file_omni_specs_omni_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5872,7 +5970,7 @@ func (x *MachineStatusSpec_HardwareStatus_Processor) String() string { func (*MachineStatusSpec_HardwareStatus_Processor) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_Processor) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[77] + mi := &file_omni_specs_omni_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5938,7 +6036,7 @@ type MachineStatusSpec_HardwareStatus_MemoryModule struct { func (x *MachineStatusSpec_HardwareStatus_MemoryModule) Reset() { *x = MachineStatusSpec_HardwareStatus_MemoryModule{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[78] + mi := &file_omni_specs_omni_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5951,7 +6049,7 @@ func (x *MachineStatusSpec_HardwareStatus_MemoryModule) String() string { func (*MachineStatusSpec_HardwareStatus_MemoryModule) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_MemoryModule) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[78] + mi := &file_omni_specs_omni_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6012,7 +6110,7 @@ type MachineStatusSpec_HardwareStatus_BlockDevice struct { func (x *MachineStatusSpec_HardwareStatus_BlockDevice) Reset() { *x = MachineStatusSpec_HardwareStatus_BlockDevice{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[79] + mi := &file_omni_specs_omni_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6025,7 +6123,7 @@ func (x *MachineStatusSpec_HardwareStatus_BlockDevice) String() string { func (*MachineStatusSpec_HardwareStatus_BlockDevice) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_BlockDevice) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[79] + mi := &file_omni_specs_omni_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6132,7 +6230,7 @@ type MachineStatusSpec_NetworkStatus_NetworkLinkStatus struct { func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) Reset() { *x = MachineStatusSpec_NetworkStatus_NetworkLinkStatus{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[80] + mi := &file_omni_specs_omni_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6145,7 +6243,7 @@ func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) String() string { func (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoMessage() {} func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[80] + mi := &file_omni_specs_omni_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6208,7 +6306,7 @@ type MachineStatusSpec_Schematic_Overlay struct { func (x *MachineStatusSpec_Schematic_Overlay) Reset() { *x = MachineStatusSpec_Schematic_Overlay{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[81] + mi := &file_omni_specs_omni_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6221,7 +6319,7 @@ func (x *MachineStatusSpec_Schematic_Overlay) String() string { func (*MachineStatusSpec_Schematic_Overlay) ProtoMessage() {} func (x *MachineStatusSpec_Schematic_Overlay) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[81] + mi := &file_omni_specs_omni_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6263,7 +6361,7 @@ type MachineStatusSpec_Schematic_MetaValue struct { func (x *MachineStatusSpec_Schematic_MetaValue) Reset() { *x = MachineStatusSpec_Schematic_MetaValue{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[82] + mi := &file_omni_specs_omni_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6276,7 +6374,7 @@ func (x *MachineStatusSpec_Schematic_MetaValue) String() string { func (*MachineStatusSpec_Schematic_MetaValue) ProtoMessage() {} func (x *MachineStatusSpec_Schematic_MetaValue) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[82] + mi := &file_omni_specs_omni_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6322,7 +6420,7 @@ type ClusterSpec_Features struct { func (x *ClusterSpec_Features) Reset() { *x = ClusterSpec_Features{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[83] + mi := &file_omni_specs_omni_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6335,7 +6433,7 @@ func (x *ClusterSpec_Features) String() string { func (*ClusterSpec_Features) ProtoMessage() {} func (x *ClusterSpec_Features) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[83] + mi := &file_omni_specs_omni_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6389,7 +6487,7 @@ type MachineSetSpec_MachineClass struct { func (x *MachineSetSpec_MachineClass) Reset() { *x = MachineSetSpec_MachineClass{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[84] + mi := &file_omni_specs_omni_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6402,7 +6500,7 @@ func (x *MachineSetSpec_MachineClass) String() string { func (*MachineSetSpec_MachineClass) ProtoMessage() {} func (x *MachineSetSpec_MachineClass) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[84] + mi := &file_omni_specs_omni_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6455,7 +6553,7 @@ type MachineSetSpec_BootstrapSpec struct { func (x *MachineSetSpec_BootstrapSpec) Reset() { *x = MachineSetSpec_BootstrapSpec{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[85] + mi := &file_omni_specs_omni_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6468,7 +6566,7 @@ func (x *MachineSetSpec_BootstrapSpec) String() string { func (*MachineSetSpec_BootstrapSpec) ProtoMessage() {} func (x *MachineSetSpec_BootstrapSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[85] + mi := &file_omni_specs_omni_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6512,7 +6610,7 @@ type MachineSetSpec_RollingUpdateStrategyConfig struct { func (x *MachineSetSpec_RollingUpdateStrategyConfig) Reset() { *x = MachineSetSpec_RollingUpdateStrategyConfig{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[86] + mi := &file_omni_specs_omni_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6525,7 +6623,7 @@ func (x *MachineSetSpec_RollingUpdateStrategyConfig) String() string { func (*MachineSetSpec_RollingUpdateStrategyConfig) ProtoMessage() {} func (x *MachineSetSpec_RollingUpdateStrategyConfig) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[86] + mi := &file_omni_specs_omni_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6562,7 +6660,7 @@ type MachineSetSpec_UpdateStrategyConfig struct { func (x *MachineSetSpec_UpdateStrategyConfig) Reset() { *x = MachineSetSpec_UpdateStrategyConfig{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[87] + mi := &file_omni_specs_omni_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6575,7 +6673,7 @@ func (x *MachineSetSpec_UpdateStrategyConfig) String() string { func (*MachineSetSpec_UpdateStrategyConfig) ProtoMessage() {} func (x *MachineSetSpec_UpdateStrategyConfig) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[87] + mi := &file_omni_specs_omni_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6612,7 +6710,7 @@ type ControlPlaneStatusSpec_Condition struct { func (x *ControlPlaneStatusSpec_Condition) Reset() { *x = ControlPlaneStatusSpec_Condition{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[88] + mi := &file_omni_specs_omni_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6625,7 +6723,7 @@ func (x *ControlPlaneStatusSpec_Condition) String() string { func (*ControlPlaneStatusSpec_Condition) ProtoMessage() {} func (x *ControlPlaneStatusSpec_Condition) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[88] + mi := &file_omni_specs_omni_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6638,7 +6736,7 @@ func (x *ControlPlaneStatusSpec_Condition) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlPlaneStatusSpec_Condition.ProtoReflect.Descriptor instead. func (*ControlPlaneStatusSpec_Condition) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{43, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{44, 0} } func (x *ControlPlaneStatusSpec_Condition) GetType() ConditionType { @@ -6682,7 +6780,7 @@ type KubernetesStatusSpec_NodeStatus struct { func (x *KubernetesStatusSpec_NodeStatus) Reset() { *x = KubernetesStatusSpec_NodeStatus{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[89] + mi := &file_omni_specs_omni_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6695,7 +6793,7 @@ func (x *KubernetesStatusSpec_NodeStatus) String() string { func (*KubernetesStatusSpec_NodeStatus) ProtoMessage() {} func (x *KubernetesStatusSpec_NodeStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[89] + mi := &file_omni_specs_omni_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6708,7 +6806,7 @@ func (x *KubernetesStatusSpec_NodeStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesStatusSpec_NodeStatus.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_NodeStatus) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 0} } func (x *KubernetesStatusSpec_NodeStatus) GetNodename() string { @@ -6745,7 +6843,7 @@ type KubernetesStatusSpec_StaticPodStatus struct { func (x *KubernetesStatusSpec_StaticPodStatus) Reset() { *x = KubernetesStatusSpec_StaticPodStatus{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[90] + mi := &file_omni_specs_omni_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6758,7 +6856,7 @@ func (x *KubernetesStatusSpec_StaticPodStatus) String() string { func (*KubernetesStatusSpec_StaticPodStatus) ProtoMessage() {} func (x *KubernetesStatusSpec_StaticPodStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[90] + mi := &file_omni_specs_omni_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6771,7 +6869,7 @@ func (x *KubernetesStatusSpec_StaticPodStatus) ProtoReflect() protoreflect.Messa // Deprecated: Use KubernetesStatusSpec_StaticPodStatus.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_StaticPodStatus) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 1} } func (x *KubernetesStatusSpec_StaticPodStatus) GetApp() string { @@ -6807,7 +6905,7 @@ type KubernetesStatusSpec_NodeStaticPods struct { func (x *KubernetesStatusSpec_NodeStaticPods) Reset() { *x = KubernetesStatusSpec_NodeStaticPods{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[91] + mi := &file_omni_specs_omni_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6820,7 +6918,7 @@ func (x *KubernetesStatusSpec_NodeStaticPods) String() string { func (*KubernetesStatusSpec_NodeStaticPods) ProtoMessage() {} func (x *KubernetesStatusSpec_NodeStaticPods) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[91] + mi := &file_omni_specs_omni_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6833,7 +6931,7 @@ func (x *KubernetesStatusSpec_NodeStaticPods) ProtoReflect() protoreflect.Messag // Deprecated: Use KubernetesStatusSpec_NodeStaticPods.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_NodeStaticPods) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 2} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 2} } func (x *KubernetesStatusSpec_NodeStaticPods) GetNodename() string { @@ -6870,7 +6968,7 @@ type MachineConfigGenOptionsSpec_InstallImage struct { func (x *MachineConfigGenOptionsSpec_InstallImage) Reset() { *x = MachineConfigGenOptionsSpec_InstallImage{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[92] + mi := &file_omni_specs_omni_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6883,7 +6981,7 @@ func (x *MachineConfigGenOptionsSpec_InstallImage) String() string { func (*MachineConfigGenOptionsSpec_InstallImage) ProtoMessage() {} func (x *MachineConfigGenOptionsSpec_InstallImage) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[92] + mi := &file_omni_specs_omni_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6896,7 +6994,7 @@ func (x *MachineConfigGenOptionsSpec_InstallImage) ProtoReflect() protoreflect.M // Deprecated: Use MachineConfigGenOptionsSpec_InstallImage.ProtoReflect.Descriptor instead. func (*MachineConfigGenOptionsSpec_InstallImage) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{56, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{58, 0} } func (x *MachineConfigGenOptionsSpec_InstallImage) GetTalosVersion() string { @@ -6947,7 +7045,7 @@ type KubernetesUsageSpec_Quantity struct { func (x *KubernetesUsageSpec_Quantity) Reset() { *x = KubernetesUsageSpec_Quantity{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[93] + mi := &file_omni_specs_omni_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6960,7 +7058,7 @@ func (x *KubernetesUsageSpec_Quantity) String() string { func (*KubernetesUsageSpec_Quantity) ProtoMessage() {} func (x *KubernetesUsageSpec_Quantity) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[93] + mi := &file_omni_specs_omni_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6973,7 +7071,7 @@ func (x *KubernetesUsageSpec_Quantity) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec_Quantity.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec_Quantity) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{59, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{61, 0} } func (x *KubernetesUsageSpec_Quantity) GetRequests() float64 { @@ -7009,7 +7107,7 @@ type KubernetesUsageSpec_Pod struct { func (x *KubernetesUsageSpec_Pod) Reset() { *x = KubernetesUsageSpec_Pod{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[94] + mi := &file_omni_specs_omni_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7022,7 +7120,7 @@ func (x *KubernetesUsageSpec_Pod) String() string { func (*KubernetesUsageSpec_Pod) ProtoMessage() {} func (x *KubernetesUsageSpec_Pod) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[94] + mi := &file_omni_specs_omni_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7035,7 +7133,7 @@ func (x *KubernetesUsageSpec_Pod) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec_Pod.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec_Pod) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{59, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{61, 1} } func (x *KubernetesUsageSpec_Pod) GetCount() int32 { @@ -7064,7 +7162,7 @@ type ImagePullRequestSpec_NodeImageList struct { func (x *ImagePullRequestSpec_NodeImageList) Reset() { *x = ImagePullRequestSpec_NodeImageList{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[95] + mi := &file_omni_specs_omni_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7077,7 +7175,7 @@ func (x *ImagePullRequestSpec_NodeImageList) String() string { func (*ImagePullRequestSpec_NodeImageList) ProtoMessage() {} func (x *ImagePullRequestSpec_NodeImageList) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[95] + mi := &file_omni_specs_omni_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7090,7 +7188,7 @@ func (x *ImagePullRequestSpec_NodeImageList) ProtoReflect() protoreflect.Message // Deprecated: Use ImagePullRequestSpec_NodeImageList.ProtoReflect.Descriptor instead. func (*ImagePullRequestSpec_NodeImageList) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{60, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{62, 0} } func (x *ImagePullRequestSpec_NodeImageList) GetNode() string { @@ -7124,7 +7222,7 @@ type TalosExtensionsSpec_Info struct { func (x *TalosExtensionsSpec_Info) Reset() { *x = TalosExtensionsSpec_Info{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[96] + mi := &file_omni_specs_omni_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7137,7 +7235,7 @@ func (x *TalosExtensionsSpec_Info) String() string { func (*TalosExtensionsSpec_Info) ProtoMessage() {} func (x *TalosExtensionsSpec_Info) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[96] + mi := &file_omni_specs_omni_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7150,7 +7248,7 @@ func (x *TalosExtensionsSpec_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosExtensionsSpec_Info.ProtoReflect.Descriptor instead. func (*TalosExtensionsSpec_Info) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{63, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{65, 0} } func (x *TalosExtensionsSpec_Info) GetName() string { @@ -7208,7 +7306,7 @@ type MachineExtensionsStatusSpec_Item struct { func (x *MachineExtensionsStatusSpec_Item) Reset() { *x = MachineExtensionsStatusSpec_Item{} if protoimpl.UnsafeEnabled { - mi := &file_omni_specs_omni_proto_msgTypes[97] + mi := &file_omni_specs_omni_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7221,7 +7319,7 @@ func (x *MachineExtensionsStatusSpec_Item) String() string { func (*MachineExtensionsStatusSpec_Item) ProtoMessage() {} func (x *MachineExtensionsStatusSpec_Item) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[97] + mi := &file_omni_specs_omni_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7234,7 +7332,7 @@ func (x *MachineExtensionsStatusSpec_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsStatusSpec_Item.ProtoReflect.Descriptor instead. func (*MachineExtensionsStatusSpec_Item) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{68, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{70, 0} } func (x *MachineExtensionsStatusSpec_Item) GetName() string { @@ -7895,174 +7993,186 @@ var file_omni_specs_omni_proto_rawDesc = []byte{ 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x14, 0x0a, - 0x12, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x22, 0x13, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x53, 0x70, 0x65, 0x63, 0x22, 0x5f, 0x0a, 0x19, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa5, 0x03, 0x0a, 0x16, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x47, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc1, 0x02, - 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x46, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, - 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, - 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, - 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, - 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x64, - 0x79, 0x10, 0x02, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, - 0x02, 0x22, 0x48, 0x0a, 0x13, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xdb, 0x03, 0x0a, 0x14, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, + 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x62, 0x0a, + 0x1e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x40, 0x0a, 0x1c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x73, 0x22, 0x14, 0x0a, 0x12, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0x13, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x53, 0x70, 0x65, 0x63, 0x22, 0x5f, 0x0a, 0x19, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa5, 0x03, + 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x47, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0xc1, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x73, 0x65, 0x76, + 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x2e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, + 0x52, 0x65, 0x61, 0x64, 0x79, 0x10, 0x02, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x13, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, + 0xdb, 0x03, 0x0a, 0x14, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, - 0x6f, 0x64, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x1a, - 0x67, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x75, 0x62, - 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x53, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x7a, 0x0a, - 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x22, 0xfe, 0x02, 0x0a, 0x1b, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x05, 0x70, 0x68, 0x61, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, - 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x68, 0x61, - 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, - 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x48, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x52, - 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x22, 0x6f, 0x0a, 0x23, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x6e, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x4f, 0x66, 0x53, 0x79, 0x6e, - 0x63, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x29, 0x0a, 0x11, 0x44, - 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0f, 0x4f, 0x6e, 0x67, 0x6f, 0x69, - 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, - 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x64, - 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, - 0x70, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, - 0x79, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, 0x1f, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x45, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x71, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, - 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x73, 0x65, 0x36, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x52, 0x0a, 0x1e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x5f, - 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x70, 0x6f, 0x73, - 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x12, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x69, 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x14, 0x65, - 0x74, 0x63, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x65, 0x63, - 0x73, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x12, 0x65, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x65, 0x6d, 0x62, 0x65, - 0x64, 0x64, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x65, 0x6d, - 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x45, 0x74, 0x63, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, - 0x0d, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, - 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, - 0x0c, 0x74, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, - 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 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, 0x0b, - 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, - 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 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, 0x0b, 0x6d, 0x61, - 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, - 0x35, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x98, 0x03, 0x0a, 0x1b, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, + 0x6f, 0x64, 0x73, 0x1a, 0x67, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x1a, 0x53, 0x0a, 0x0f, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, + 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x1a, 0x7a, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, + 0x6f, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x4c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x50, 0x6f, 0x64, 0x73, 0x22, 0xfe, 0x02, + 0x0a, 0x1b, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, + 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, + 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x48, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x6e, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x22, 0x6f, + 0x0a, 0x23, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x4f, + 0x66, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, + 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x29, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0f, 0x4f, + 0x6e, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x5f, 0x75, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, + 0x65, 0x63, 0x73, 0x2e, 0x54, 0x61, 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x61, + 0x6c, 0x6f, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x12, 0x6b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x4b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x6b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x34, 0x0a, 0x07, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, + 0x73, 0x74, 0x72, 0x6f, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x35, 0x0a, 0x1f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x71, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x73, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x6f, 0x6e, 0x5f, + 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, + 0x6f, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x52, 0x0a, 0x1e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x14, + 0x6e, 0x75, 0x6d, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x45, + 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xd9, + 0x01, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x69, 0x6e, 0x67, 0x12, + 0x4b, 0x0a, 0x14, 0x65, 0x74, 0x63, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x12, 0x65, 0x74, 0x63, 0x64, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x1a, + 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x18, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x45, + 0x74, 0x63, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x01, 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, 0x0c, 0x74, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x3c, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 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, 0x0b, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x3c, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, + 0x03, 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, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x22, 0x35, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x5a, 0x0a, 0x16, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x40, 0x0a, 0x1c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x5f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x98, 0x03, 0x0a, 0x1b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x65, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, @@ -8267,7 +8377,7 @@ func file_omni_specs_omni_proto_rawDescGZIP() []byte { } var file_omni_specs_omni_proto_enumTypes = make([]protoimpl.EnumInfo, 15) -var file_omni_specs_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 98) +var file_omni_specs_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 100) var file_omni_specs_omni_proto_goTypes = []any{ (ConfigApplyStatus)(0), // 0: specs.ConfigApplyStatus (MachineSetPhase)(0), // 1: specs.MachineSetPhase @@ -8324,133 +8434,135 @@ var file_omni_specs_omni_proto_goTypes = []any{ (*MachineSetSpec)(nil), // 52: specs.MachineSetSpec (*TalosUpgradeStatusSpec)(nil), // 53: specs.TalosUpgradeStatusSpec (*MachineSetStatusSpec)(nil), // 54: specs.MachineSetStatusSpec - (*MachineSetNodeSpec)(nil), // 55: specs.MachineSetNodeSpec - (*MachineLabelsSpec)(nil), // 56: specs.MachineLabelsSpec - (*MachineStatusSnapshotSpec)(nil), // 57: specs.MachineStatusSnapshotSpec - (*ControlPlaneStatusSpec)(nil), // 58: specs.ControlPlaneStatusSpec - (*ClusterEndpointSpec)(nil), // 59: specs.ClusterEndpointSpec - (*KubernetesStatusSpec)(nil), // 60: specs.KubernetesStatusSpec - (*KubernetesUpgradeStatusSpec)(nil), // 61: specs.KubernetesUpgradeStatusSpec - (*KubernetesUpgradeManifestStatusSpec)(nil), // 62: specs.KubernetesUpgradeManifestStatusSpec - (*DestroyStatusSpec)(nil), // 63: specs.DestroyStatusSpec - (*OngoingTaskSpec)(nil), // 64: specs.OngoingTaskSpec - (*ClusterMachineEncryptionKeySpec)(nil), // 65: specs.ClusterMachineEncryptionKeySpec - (*ExposedServiceSpec)(nil), // 66: specs.ExposedServiceSpec - (*ClusterWorkloadProxyStatusSpec)(nil), // 67: specs.ClusterWorkloadProxyStatusSpec - (*FeaturesConfigSpec)(nil), // 68: specs.FeaturesConfigSpec - (*EtcdBackupSettings)(nil), // 69: specs.EtcdBackupSettings - (*MachineClassSpec)(nil), // 70: specs.MachineClassSpec - (*MachineConfigGenOptionsSpec)(nil), // 71: specs.MachineConfigGenOptionsSpec - (*EtcdAuditResultSpec)(nil), // 72: specs.EtcdAuditResultSpec - (*KubeconfigSpec)(nil), // 73: specs.KubeconfigSpec - (*KubernetesUsageSpec)(nil), // 74: specs.KubernetesUsageSpec - (*ImagePullRequestSpec)(nil), // 75: specs.ImagePullRequestSpec - (*ImagePullStatusSpec)(nil), // 76: specs.ImagePullStatusSpec - (*SchematicSpec)(nil), // 77: specs.SchematicSpec - (*TalosExtensionsSpec)(nil), // 78: specs.TalosExtensionsSpec - (*SchematicConfigurationSpec)(nil), // 79: specs.SchematicConfigurationSpec - (*ExtensionsConfigurationSpec)(nil), // 80: specs.ExtensionsConfigurationSpec - (*ExtensionsConfigurationStatusSpec)(nil), // 81: specs.ExtensionsConfigurationStatusSpec - (*MachineExtensionsSpec)(nil), // 82: specs.MachineExtensionsSpec - (*MachineExtensionsStatusSpec)(nil), // 83: specs.MachineExtensionsStatusSpec - (*MachineStatusMetricsSpec)(nil), // 84: specs.MachineStatusMetricsSpec - (*ClusterKubernetesNodesSpec)(nil), // 85: specs.ClusterKubernetesNodesSpec - (*KubernetesNodeAuditResultSpec)(nil), // 86: specs.KubernetesNodeAuditResultSpec - (*MachineStatusSpec_HardwareStatus)(nil), // 87: specs.MachineStatusSpec.HardwareStatus - (*MachineStatusSpec_NetworkStatus)(nil), // 88: specs.MachineStatusSpec.NetworkStatus - (*MachineStatusSpec_PlatformMetadata)(nil), // 89: specs.MachineStatusSpec.PlatformMetadata - (*MachineStatusSpec_Schematic)(nil), // 90: specs.MachineStatusSpec.Schematic - nil, // 91: specs.MachineStatusSpec.ImageLabelsEntry - (*MachineStatusSpec_HardwareStatus_Processor)(nil), // 92: specs.MachineStatusSpec.HardwareStatus.Processor - (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil), // 93: specs.MachineStatusSpec.HardwareStatus.MemoryModule - (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil), // 94: specs.MachineStatusSpec.HardwareStatus.BlockDevice - (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil), // 95: specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus - (*MachineStatusSpec_Schematic_Overlay)(nil), // 96: specs.MachineStatusSpec.Schematic.Overlay - (*MachineStatusSpec_Schematic_MetaValue)(nil), // 97: specs.MachineStatusSpec.Schematic.MetaValue - (*ClusterSpec_Features)(nil), // 98: specs.ClusterSpec.Features - (*MachineSetSpec_MachineClass)(nil), // 99: specs.MachineSetSpec.MachineClass - (*MachineSetSpec_BootstrapSpec)(nil), // 100: specs.MachineSetSpec.BootstrapSpec - (*MachineSetSpec_RollingUpdateStrategyConfig)(nil), // 101: specs.MachineSetSpec.RollingUpdateStrategyConfig - (*MachineSetSpec_UpdateStrategyConfig)(nil), // 102: specs.MachineSetSpec.UpdateStrategyConfig - (*ControlPlaneStatusSpec_Condition)(nil), // 103: specs.ControlPlaneStatusSpec.Condition - (*KubernetesStatusSpec_NodeStatus)(nil), // 104: specs.KubernetesStatusSpec.NodeStatus - (*KubernetesStatusSpec_StaticPodStatus)(nil), // 105: specs.KubernetesStatusSpec.StaticPodStatus - (*KubernetesStatusSpec_NodeStaticPods)(nil), // 106: specs.KubernetesStatusSpec.NodeStaticPods - (*MachineConfigGenOptionsSpec_InstallImage)(nil), // 107: specs.MachineConfigGenOptionsSpec.InstallImage - (*KubernetesUsageSpec_Quantity)(nil), // 108: specs.KubernetesUsageSpec.Quantity - (*KubernetesUsageSpec_Pod)(nil), // 109: specs.KubernetesUsageSpec.Pod - (*ImagePullRequestSpec_NodeImageList)(nil), // 110: specs.ImagePullRequestSpec.NodeImageList - (*TalosExtensionsSpec_Info)(nil), // 111: specs.TalosExtensionsSpec.Info - (*MachineExtensionsStatusSpec_Item)(nil), // 112: specs.MachineExtensionsStatusSpec.Item - (*durationpb.Duration)(nil), // 113: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 114: google.protobuf.Timestamp - (*machine.MachineStatusEvent)(nil), // 115: machine.MachineStatusEvent + (*MachineSetRequiredMachinesSpec)(nil), // 55: specs.MachineSetRequiredMachinesSpec + (*MachineSetNodeSpec)(nil), // 56: specs.MachineSetNodeSpec + (*MachineLabelsSpec)(nil), // 57: specs.MachineLabelsSpec + (*MachineStatusSnapshotSpec)(nil), // 58: specs.MachineStatusSnapshotSpec + (*ControlPlaneStatusSpec)(nil), // 59: specs.ControlPlaneStatusSpec + (*ClusterEndpointSpec)(nil), // 60: specs.ClusterEndpointSpec + (*KubernetesStatusSpec)(nil), // 61: specs.KubernetesStatusSpec + (*KubernetesUpgradeStatusSpec)(nil), // 62: specs.KubernetesUpgradeStatusSpec + (*KubernetesUpgradeManifestStatusSpec)(nil), // 63: specs.KubernetesUpgradeManifestStatusSpec + (*DestroyStatusSpec)(nil), // 64: specs.DestroyStatusSpec + (*OngoingTaskSpec)(nil), // 65: specs.OngoingTaskSpec + (*ClusterMachineEncryptionKeySpec)(nil), // 66: specs.ClusterMachineEncryptionKeySpec + (*ExposedServiceSpec)(nil), // 67: specs.ExposedServiceSpec + (*ClusterWorkloadProxyStatusSpec)(nil), // 68: specs.ClusterWorkloadProxyStatusSpec + (*FeaturesConfigSpec)(nil), // 69: specs.FeaturesConfigSpec + (*EtcdBackupSettings)(nil), // 70: specs.EtcdBackupSettings + (*MachineClassSpec)(nil), // 71: specs.MachineClassSpec + (*MachineClassStatusSpec)(nil), // 72: specs.MachineClassStatusSpec + (*MachineConfigGenOptionsSpec)(nil), // 73: specs.MachineConfigGenOptionsSpec + (*EtcdAuditResultSpec)(nil), // 74: specs.EtcdAuditResultSpec + (*KubeconfigSpec)(nil), // 75: specs.KubeconfigSpec + (*KubernetesUsageSpec)(nil), // 76: specs.KubernetesUsageSpec + (*ImagePullRequestSpec)(nil), // 77: specs.ImagePullRequestSpec + (*ImagePullStatusSpec)(nil), // 78: specs.ImagePullStatusSpec + (*SchematicSpec)(nil), // 79: specs.SchematicSpec + (*TalosExtensionsSpec)(nil), // 80: specs.TalosExtensionsSpec + (*SchematicConfigurationSpec)(nil), // 81: specs.SchematicConfigurationSpec + (*ExtensionsConfigurationSpec)(nil), // 82: specs.ExtensionsConfigurationSpec + (*ExtensionsConfigurationStatusSpec)(nil), // 83: specs.ExtensionsConfigurationStatusSpec + (*MachineExtensionsSpec)(nil), // 84: specs.MachineExtensionsSpec + (*MachineExtensionsStatusSpec)(nil), // 85: specs.MachineExtensionsStatusSpec + (*MachineStatusMetricsSpec)(nil), // 86: specs.MachineStatusMetricsSpec + (*ClusterKubernetesNodesSpec)(nil), // 87: specs.ClusterKubernetesNodesSpec + (*KubernetesNodeAuditResultSpec)(nil), // 88: specs.KubernetesNodeAuditResultSpec + (*MachineStatusSpec_HardwareStatus)(nil), // 89: specs.MachineStatusSpec.HardwareStatus + (*MachineStatusSpec_NetworkStatus)(nil), // 90: specs.MachineStatusSpec.NetworkStatus + (*MachineStatusSpec_PlatformMetadata)(nil), // 91: specs.MachineStatusSpec.PlatformMetadata + (*MachineStatusSpec_Schematic)(nil), // 92: specs.MachineStatusSpec.Schematic + nil, // 93: specs.MachineStatusSpec.ImageLabelsEntry + (*MachineStatusSpec_HardwareStatus_Processor)(nil), // 94: specs.MachineStatusSpec.HardwareStatus.Processor + (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil), // 95: specs.MachineStatusSpec.HardwareStatus.MemoryModule + (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil), // 96: specs.MachineStatusSpec.HardwareStatus.BlockDevice + (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil), // 97: specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus + (*MachineStatusSpec_Schematic_Overlay)(nil), // 98: specs.MachineStatusSpec.Schematic.Overlay + (*MachineStatusSpec_Schematic_MetaValue)(nil), // 99: specs.MachineStatusSpec.Schematic.MetaValue + (*ClusterSpec_Features)(nil), // 100: specs.ClusterSpec.Features + (*MachineSetSpec_MachineClass)(nil), // 101: specs.MachineSetSpec.MachineClass + (*MachineSetSpec_BootstrapSpec)(nil), // 102: specs.MachineSetSpec.BootstrapSpec + (*MachineSetSpec_RollingUpdateStrategyConfig)(nil), // 103: specs.MachineSetSpec.RollingUpdateStrategyConfig + (*MachineSetSpec_UpdateStrategyConfig)(nil), // 104: specs.MachineSetSpec.UpdateStrategyConfig + (*ControlPlaneStatusSpec_Condition)(nil), // 105: specs.ControlPlaneStatusSpec.Condition + (*KubernetesStatusSpec_NodeStatus)(nil), // 106: specs.KubernetesStatusSpec.NodeStatus + (*KubernetesStatusSpec_StaticPodStatus)(nil), // 107: specs.KubernetesStatusSpec.StaticPodStatus + (*KubernetesStatusSpec_NodeStaticPods)(nil), // 108: specs.KubernetesStatusSpec.NodeStaticPods + (*MachineConfigGenOptionsSpec_InstallImage)(nil), // 109: specs.MachineConfigGenOptionsSpec.InstallImage + (*KubernetesUsageSpec_Quantity)(nil), // 110: specs.KubernetesUsageSpec.Quantity + (*KubernetesUsageSpec_Pod)(nil), // 111: specs.KubernetesUsageSpec.Pod + (*ImagePullRequestSpec_NodeImageList)(nil), // 112: specs.ImagePullRequestSpec.NodeImageList + (*TalosExtensionsSpec_Info)(nil), // 113: specs.TalosExtensionsSpec.Info + (*MachineExtensionsStatusSpec_Item)(nil), // 114: specs.MachineExtensionsStatusSpec.Item + (*durationpb.Duration)(nil), // 115: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 116: google.protobuf.Timestamp + (*machine.MachineStatusEvent)(nil), // 117: machine.MachineStatusEvent } var file_omni_specs_omni_proto_depIdxs = []int32{ - 87, // 0: specs.MachineStatusSpec.hardware:type_name -> specs.MachineStatusSpec.HardwareStatus - 88, // 1: specs.MachineStatusSpec.network:type_name -> specs.MachineStatusSpec.NetworkStatus + 89, // 0: specs.MachineStatusSpec.hardware:type_name -> specs.MachineStatusSpec.HardwareStatus + 90, // 1: specs.MachineStatusSpec.network:type_name -> specs.MachineStatusSpec.NetworkStatus 3, // 2: specs.MachineStatusSpec.role:type_name -> specs.MachineStatusSpec.Role - 89, // 3: specs.MachineStatusSpec.platform_metadata:type_name -> specs.MachineStatusSpec.PlatformMetadata - 91, // 4: specs.MachineStatusSpec.image_labels:type_name -> specs.MachineStatusSpec.ImageLabelsEntry - 90, // 5: specs.MachineStatusSpec.schematic:type_name -> specs.MachineStatusSpec.Schematic + 91, // 3: specs.MachineStatusSpec.platform_metadata:type_name -> specs.MachineStatusSpec.PlatformMetadata + 93, // 4: specs.MachineStatusSpec.image_labels:type_name -> specs.MachineStatusSpec.ImageLabelsEntry + 92, // 5: specs.MachineStatusSpec.schematic:type_name -> specs.MachineStatusSpec.Schematic 16, // 6: specs.MachineStatusSpec.secure_boot_status:type_name -> specs.SecureBootStatus - 98, // 7: specs.ClusterSpec.features:type_name -> specs.ClusterSpec.Features + 100, // 7: specs.ClusterSpec.features:type_name -> specs.ClusterSpec.Features 21, // 8: specs.ClusterSpec.backup_configuration:type_name -> specs.EtcdBackupConf - 113, // 9: specs.EtcdBackupConf.interval:type_name -> google.protobuf.Duration - 114, // 10: specs.EtcdBackupSpec.created_at:type_name -> google.protobuf.Timestamp - 113, // 11: specs.BackupDataSpec.interval:type_name -> google.protobuf.Duration + 115, // 9: specs.EtcdBackupConf.interval:type_name -> google.protobuf.Duration + 116, // 10: specs.EtcdBackupSpec.created_at:type_name -> google.protobuf.Timestamp + 115, // 11: specs.BackupDataSpec.interval:type_name -> google.protobuf.Duration 4, // 12: specs.EtcdBackupStatusSpec.status:type_name -> specs.EtcdBackupStatusSpec.Status - 114, // 13: specs.EtcdBackupStatusSpec.last_backup_time:type_name -> google.protobuf.Timestamp - 114, // 14: specs.EtcdBackupStatusSpec.last_backup_attempt:type_name -> google.protobuf.Timestamp - 114, // 15: specs.EtcdManualBackupSpec.backup_at:type_name -> google.protobuf.Timestamp + 116, // 13: specs.EtcdBackupStatusSpec.last_backup_time:type_name -> google.protobuf.Timestamp + 116, // 14: specs.EtcdBackupStatusSpec.last_backup_attempt:type_name -> google.protobuf.Timestamp + 116, // 15: specs.EtcdManualBackupSpec.backup_at:type_name -> google.protobuf.Timestamp 27, // 16: specs.EtcdBackupOverallStatusSpec.last_backup_status:type_name -> specs.EtcdBackupStatusSpec 5, // 17: specs.ClusterMachineStatusSpec.stage:type_name -> specs.ClusterMachineStatusSpec.Stage 0, // 18: specs.ClusterMachineStatusSpec.config_apply_status:type_name -> specs.ConfigApplyStatus 39, // 19: specs.ClusterStatusSpec.machines:type_name -> specs.Machines 6, // 20: specs.ClusterStatusSpec.phase:type_name -> specs.ClusterStatusSpec.Phase 7, // 21: specs.MachineSetSpec.update_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy - 99, // 22: specs.MachineSetSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass - 100, // 23: specs.MachineSetSpec.bootstrap_spec:type_name -> specs.MachineSetSpec.BootstrapSpec + 101, // 22: specs.MachineSetSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass + 102, // 23: specs.MachineSetSpec.bootstrap_spec:type_name -> specs.MachineSetSpec.BootstrapSpec 7, // 24: specs.MachineSetSpec.delete_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy - 102, // 25: specs.MachineSetSpec.update_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig - 102, // 26: specs.MachineSetSpec.delete_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig + 104, // 25: specs.MachineSetSpec.update_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig + 104, // 26: specs.MachineSetSpec.delete_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig 9, // 27: specs.TalosUpgradeStatusSpec.phase:type_name -> specs.TalosUpgradeStatusSpec.Phase 1, // 28: specs.MachineSetStatusSpec.phase:type_name -> specs.MachineSetPhase 39, // 29: specs.MachineSetStatusSpec.machines:type_name -> specs.Machines - 99, // 30: specs.MachineSetStatusSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass - 115, // 31: specs.MachineStatusSnapshotSpec.machine_status:type_name -> machine.MachineStatusEvent - 103, // 32: specs.ControlPlaneStatusSpec.conditions:type_name -> specs.ControlPlaneStatusSpec.Condition - 104, // 33: specs.KubernetesStatusSpec.nodes:type_name -> specs.KubernetesStatusSpec.NodeStatus - 106, // 34: specs.KubernetesStatusSpec.static_pods:type_name -> specs.KubernetesStatusSpec.NodeStaticPods + 101, // 30: specs.MachineSetStatusSpec.machine_class:type_name -> specs.MachineSetSpec.MachineClass + 117, // 31: specs.MachineStatusSnapshotSpec.machine_status:type_name -> machine.MachineStatusEvent + 105, // 32: specs.ControlPlaneStatusSpec.conditions:type_name -> specs.ControlPlaneStatusSpec.Condition + 106, // 33: specs.KubernetesStatusSpec.nodes:type_name -> specs.KubernetesStatusSpec.NodeStatus + 108, // 34: specs.KubernetesStatusSpec.static_pods:type_name -> specs.KubernetesStatusSpec.NodeStaticPods 12, // 35: specs.KubernetesUpgradeStatusSpec.phase:type_name -> specs.KubernetesUpgradeStatusSpec.Phase 53, // 36: specs.OngoingTaskSpec.talos_upgrade:type_name -> specs.TalosUpgradeStatusSpec - 61, // 37: specs.OngoingTaskSpec.kubernetes_upgrade:type_name -> specs.KubernetesUpgradeStatusSpec - 63, // 38: specs.OngoingTaskSpec.destroy:type_name -> specs.DestroyStatusSpec - 69, // 39: specs.FeaturesConfigSpec.etcd_backup_settings:type_name -> specs.EtcdBackupSettings - 113, // 40: specs.EtcdBackupSettings.tick_interval:type_name -> google.protobuf.Duration - 113, // 41: specs.EtcdBackupSettings.min_interval:type_name -> google.protobuf.Duration - 113, // 42: specs.EtcdBackupSettings.max_interval:type_name -> google.protobuf.Duration - 107, // 43: specs.MachineConfigGenOptionsSpec.install_image:type_name -> specs.MachineConfigGenOptionsSpec.InstallImage - 108, // 44: specs.KubernetesUsageSpec.cpu:type_name -> specs.KubernetesUsageSpec.Quantity - 108, // 45: specs.KubernetesUsageSpec.mem:type_name -> specs.KubernetesUsageSpec.Quantity - 108, // 46: specs.KubernetesUsageSpec.storage:type_name -> specs.KubernetesUsageSpec.Quantity - 109, // 47: specs.KubernetesUsageSpec.pods:type_name -> specs.KubernetesUsageSpec.Pod - 110, // 48: specs.ImagePullRequestSpec.node_image_list:type_name -> specs.ImagePullRequestSpec.NodeImageList - 111, // 49: specs.TalosExtensionsSpec.items:type_name -> specs.TalosExtensionsSpec.Info + 62, // 37: specs.OngoingTaskSpec.kubernetes_upgrade:type_name -> specs.KubernetesUpgradeStatusSpec + 64, // 38: specs.OngoingTaskSpec.destroy:type_name -> specs.DestroyStatusSpec + 70, // 39: specs.FeaturesConfigSpec.etcd_backup_settings:type_name -> specs.EtcdBackupSettings + 115, // 40: specs.EtcdBackupSettings.tick_interval:type_name -> google.protobuf.Duration + 115, // 41: specs.EtcdBackupSettings.min_interval:type_name -> google.protobuf.Duration + 115, // 42: specs.EtcdBackupSettings.max_interval:type_name -> google.protobuf.Duration + 109, // 43: specs.MachineConfigGenOptionsSpec.install_image:type_name -> specs.MachineConfigGenOptionsSpec.InstallImage + 110, // 44: specs.KubernetesUsageSpec.cpu:type_name -> specs.KubernetesUsageSpec.Quantity + 110, // 45: specs.KubernetesUsageSpec.mem:type_name -> specs.KubernetesUsageSpec.Quantity + 110, // 46: specs.KubernetesUsageSpec.storage:type_name -> specs.KubernetesUsageSpec.Quantity + 111, // 47: specs.KubernetesUsageSpec.pods:type_name -> specs.KubernetesUsageSpec.Pod + 112, // 48: specs.ImagePullRequestSpec.node_image_list:type_name -> specs.ImagePullRequestSpec.NodeImageList + 113, // 49: specs.TalosExtensionsSpec.items:type_name -> specs.TalosExtensionsSpec.Info 13, // 50: specs.ExtensionsConfigurationStatusSpec.phase:type_name -> specs.ExtensionsConfigurationStatusSpec.Phase - 112, // 51: specs.MachineExtensionsStatusSpec.extensions:type_name -> specs.MachineExtensionsStatusSpec.Item - 92, // 52: specs.MachineStatusSpec.HardwareStatus.processors:type_name -> specs.MachineStatusSpec.HardwareStatus.Processor - 93, // 53: specs.MachineStatusSpec.HardwareStatus.memory_modules:type_name -> specs.MachineStatusSpec.HardwareStatus.MemoryModule - 94, // 54: specs.MachineStatusSpec.HardwareStatus.blockdevices:type_name -> specs.MachineStatusSpec.HardwareStatus.BlockDevice - 95, // 55: specs.MachineStatusSpec.NetworkStatus.network_links:type_name -> specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus - 96, // 56: specs.MachineStatusSpec.Schematic.overlay:type_name -> specs.MachineStatusSpec.Schematic.Overlay - 97, // 57: specs.MachineStatusSpec.Schematic.meta_values:type_name -> specs.MachineStatusSpec.Schematic.MetaValue + 114, // 51: specs.MachineExtensionsStatusSpec.extensions:type_name -> specs.MachineExtensionsStatusSpec.Item + 94, // 52: specs.MachineStatusSpec.HardwareStatus.processors:type_name -> specs.MachineStatusSpec.HardwareStatus.Processor + 95, // 53: specs.MachineStatusSpec.HardwareStatus.memory_modules:type_name -> specs.MachineStatusSpec.HardwareStatus.MemoryModule + 96, // 54: specs.MachineStatusSpec.HardwareStatus.blockdevices:type_name -> specs.MachineStatusSpec.HardwareStatus.BlockDevice + 97, // 55: specs.MachineStatusSpec.NetworkStatus.network_links:type_name -> specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus + 98, // 56: specs.MachineStatusSpec.Schematic.overlay:type_name -> specs.MachineStatusSpec.Schematic.Overlay + 99, // 57: specs.MachineStatusSpec.Schematic.meta_values:type_name -> specs.MachineStatusSpec.Schematic.MetaValue 8, // 58: specs.MachineSetSpec.MachineClass.allocation_type:type_name -> specs.MachineSetSpec.MachineClass.AllocationType - 101, // 59: specs.MachineSetSpec.UpdateStrategyConfig.rolling:type_name -> specs.MachineSetSpec.RollingUpdateStrategyConfig + 103, // 59: specs.MachineSetSpec.UpdateStrategyConfig.rolling:type_name -> specs.MachineSetSpec.RollingUpdateStrategyConfig 2, // 60: specs.ControlPlaneStatusSpec.Condition.type:type_name -> specs.ConditionType 10, // 61: specs.ControlPlaneStatusSpec.Condition.status:type_name -> specs.ControlPlaneStatusSpec.Condition.Status 11, // 62: specs.ControlPlaneStatusSpec.Condition.severity:type_name -> specs.ControlPlaneStatusSpec.Condition.Severity - 105, // 63: specs.KubernetesStatusSpec.NodeStaticPods.static_pods:type_name -> specs.KubernetesStatusSpec.StaticPodStatus + 107, // 63: specs.KubernetesStatusSpec.NodeStaticPods.static_pods:type_name -> specs.KubernetesStatusSpec.StaticPodStatus 16, // 64: specs.MachineConfigGenOptionsSpec.InstallImage.secure_boot_status:type_name -> specs.SecureBootStatus 14, // 65: specs.MachineExtensionsStatusSpec.Item.phase:type_name -> specs.MachineExtensionsStatusSpec.Item.Phase 66, // [66:66] is the sub-list for method output_type @@ -8947,7 +9059,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*MachineSetNodeSpec); i { + switch v := v.(*MachineSetRequiredMachinesSpec); i { case 0: return &v.state case 1: @@ -8959,7 +9071,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*MachineLabelsSpec); i { + switch v := v.(*MachineSetNodeSpec); i { case 0: return &v.state case 1: @@ -8971,7 +9083,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusSnapshotSpec); i { + switch v := v.(*MachineLabelsSpec); i { case 0: return &v.state case 1: @@ -8983,7 +9095,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*ControlPlaneStatusSpec); i { + switch v := v.(*MachineStatusSnapshotSpec); i { case 0: return &v.state case 1: @@ -8995,7 +9107,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*ClusterEndpointSpec); i { + switch v := v.(*ControlPlaneStatusSpec); i { case 0: return &v.state case 1: @@ -9007,7 +9119,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*KubernetesStatusSpec); i { + switch v := v.(*ClusterEndpointSpec); i { case 0: return &v.state case 1: @@ -9019,7 +9131,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*KubernetesUpgradeStatusSpec); i { + switch v := v.(*KubernetesStatusSpec); i { case 0: return &v.state case 1: @@ -9031,7 +9143,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*KubernetesUpgradeManifestStatusSpec); i { + switch v := v.(*KubernetesUpgradeStatusSpec); i { case 0: return &v.state case 1: @@ -9043,7 +9155,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*DestroyStatusSpec); i { + switch v := v.(*KubernetesUpgradeManifestStatusSpec); i { case 0: return &v.state case 1: @@ -9055,7 +9167,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*OngoingTaskSpec); i { + switch v := v.(*DestroyStatusSpec); i { case 0: return &v.state case 1: @@ -9067,7 +9179,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*ClusterMachineEncryptionKeySpec); i { + switch v := v.(*OngoingTaskSpec); i { case 0: return &v.state case 1: @@ -9079,7 +9191,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*ExposedServiceSpec); i { + switch v := v.(*ClusterMachineEncryptionKeySpec); i { case 0: return &v.state case 1: @@ -9091,7 +9203,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*ClusterWorkloadProxyStatusSpec); i { + switch v := v.(*ExposedServiceSpec); i { case 0: return &v.state case 1: @@ -9103,7 +9215,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*FeaturesConfigSpec); i { + switch v := v.(*ClusterWorkloadProxyStatusSpec); i { case 0: return &v.state case 1: @@ -9115,7 +9227,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*EtcdBackupSettings); i { + switch v := v.(*FeaturesConfigSpec); i { case 0: return &v.state case 1: @@ -9127,7 +9239,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*MachineClassSpec); i { + switch v := v.(*EtcdBackupSettings); i { case 0: return &v.state case 1: @@ -9139,7 +9251,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*MachineConfigGenOptionsSpec); i { + switch v := v.(*MachineClassSpec); i { case 0: return &v.state case 1: @@ -9151,7 +9263,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*EtcdAuditResultSpec); i { + switch v := v.(*MachineClassStatusSpec); i { case 0: return &v.state case 1: @@ -9163,7 +9275,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*KubeconfigSpec); i { + switch v := v.(*MachineConfigGenOptionsSpec); i { case 0: return &v.state case 1: @@ -9175,7 +9287,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*KubernetesUsageSpec); i { + switch v := v.(*EtcdAuditResultSpec); i { case 0: return &v.state case 1: @@ -9187,7 +9299,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*ImagePullRequestSpec); i { + switch v := v.(*KubeconfigSpec); i { case 0: return &v.state case 1: @@ -9199,7 +9311,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*ImagePullStatusSpec); i { + switch v := v.(*KubernetesUsageSpec); i { case 0: return &v.state case 1: @@ -9211,7 +9323,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*SchematicSpec); i { + switch v := v.(*ImagePullRequestSpec); i { case 0: return &v.state case 1: @@ -9223,7 +9335,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*TalosExtensionsSpec); i { + switch v := v.(*ImagePullStatusSpec); i { case 0: return &v.state case 1: @@ -9235,7 +9347,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*SchematicConfigurationSpec); i { + switch v := v.(*SchematicSpec); i { case 0: return &v.state case 1: @@ -9247,7 +9359,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*ExtensionsConfigurationSpec); i { + switch v := v.(*TalosExtensionsSpec); i { case 0: return &v.state case 1: @@ -9259,7 +9371,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*ExtensionsConfigurationStatusSpec); i { + switch v := v.(*SchematicConfigurationSpec); i { case 0: return &v.state case 1: @@ -9271,7 +9383,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*MachineExtensionsSpec); i { + switch v := v.(*ExtensionsConfigurationSpec); i { case 0: return &v.state case 1: @@ -9283,7 +9395,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*MachineExtensionsStatusSpec); i { + switch v := v.(*ExtensionsConfigurationStatusSpec); i { case 0: return &v.state case 1: @@ -9295,7 +9407,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusMetricsSpec); i { + switch v := v.(*MachineExtensionsSpec); i { case 0: return &v.state case 1: @@ -9307,7 +9419,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*ClusterKubernetesNodesSpec); i { + switch v := v.(*MachineExtensionsStatusSpec); i { case 0: return &v.state case 1: @@ -9319,7 +9431,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*KubernetesNodeAuditResultSpec); i { + switch v := v.(*MachineStatusMetricsSpec); i { case 0: return &v.state case 1: @@ -9331,7 +9443,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusSpec_HardwareStatus); i { + switch v := v.(*ClusterKubernetesNodesSpec); i { case 0: return &v.state case 1: @@ -9343,7 +9455,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusSpec_NetworkStatus); i { + switch v := v.(*KubernetesNodeAuditResultSpec); i { case 0: return &v.state case 1: @@ -9355,7 +9467,7 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusSpec_PlatformMetadata); i { + switch v := v.(*MachineStatusSpec_HardwareStatus); i { case 0: return &v.state case 1: @@ -9367,7 +9479,19 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[75].Exporter = func(v any, i int) any { - switch v := v.(*MachineStatusSpec_Schematic); i { + switch v := v.(*MachineStatusSpec_NetworkStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_omni_specs_omni_proto_msgTypes[76].Exporter = func(v any, i int) any { + switch v := v.(*MachineStatusSpec_PlatformMetadata); i { case 0: return &v.state case 1: @@ -9379,6 +9503,18 @@ func file_omni_specs_omni_proto_init() { } } file_omni_specs_omni_proto_msgTypes[77].Exporter = func(v any, i int) any { + switch v := v.(*MachineStatusSpec_Schematic); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_omni_specs_omni_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_HardwareStatus_Processor); i { case 0: return &v.state @@ -9390,7 +9526,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[78].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_HardwareStatus_MemoryModule); i { case 0: return &v.state @@ -9402,7 +9538,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[79].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_HardwareStatus_BlockDevice); i { case 0: return &v.state @@ -9414,7 +9550,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[80].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[82].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_NetworkStatus_NetworkLinkStatus); i { case 0: return &v.state @@ -9426,7 +9562,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[81].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[83].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_Schematic_Overlay); i { case 0: return &v.state @@ -9438,7 +9574,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[82].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[84].Exporter = func(v any, i int) any { switch v := v.(*MachineStatusSpec_Schematic_MetaValue); i { case 0: return &v.state @@ -9450,7 +9586,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[83].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[85].Exporter = func(v any, i int) any { switch v := v.(*ClusterSpec_Features); i { case 0: return &v.state @@ -9462,7 +9598,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[84].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[86].Exporter = func(v any, i int) any { switch v := v.(*MachineSetSpec_MachineClass); i { case 0: return &v.state @@ -9474,7 +9610,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[85].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[87].Exporter = func(v any, i int) any { switch v := v.(*MachineSetSpec_BootstrapSpec); i { case 0: return &v.state @@ -9486,7 +9622,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[86].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[88].Exporter = func(v any, i int) any { switch v := v.(*MachineSetSpec_RollingUpdateStrategyConfig); i { case 0: return &v.state @@ -9498,7 +9634,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[87].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[89].Exporter = func(v any, i int) any { switch v := v.(*MachineSetSpec_UpdateStrategyConfig); i { case 0: return &v.state @@ -9510,7 +9646,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[88].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[90].Exporter = func(v any, i int) any { switch v := v.(*ControlPlaneStatusSpec_Condition); i { case 0: return &v.state @@ -9522,7 +9658,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[89].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[91].Exporter = func(v any, i int) any { switch v := v.(*KubernetesStatusSpec_NodeStatus); i { case 0: return &v.state @@ -9534,7 +9670,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[90].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[92].Exporter = func(v any, i int) any { switch v := v.(*KubernetesStatusSpec_StaticPodStatus); i { case 0: return &v.state @@ -9546,7 +9682,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[91].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[93].Exporter = func(v any, i int) any { switch v := v.(*KubernetesStatusSpec_NodeStaticPods); i { case 0: return &v.state @@ -9558,7 +9694,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[92].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[94].Exporter = func(v any, i int) any { switch v := v.(*MachineConfigGenOptionsSpec_InstallImage); i { case 0: return &v.state @@ -9570,7 +9706,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[93].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[95].Exporter = func(v any, i int) any { switch v := v.(*KubernetesUsageSpec_Quantity); i { case 0: return &v.state @@ -9582,7 +9718,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[94].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[96].Exporter = func(v any, i int) any { switch v := v.(*KubernetesUsageSpec_Pod); i { case 0: return &v.state @@ -9594,7 +9730,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[95].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[97].Exporter = func(v any, i int) any { switch v := v.(*ImagePullRequestSpec_NodeImageList); i { case 0: return &v.state @@ -9606,7 +9742,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[96].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[98].Exporter = func(v any, i int) any { switch v := v.(*TalosExtensionsSpec_Info); i { case 0: return &v.state @@ -9618,7 +9754,7 @@ func file_omni_specs_omni_proto_init() { return nil } } - file_omni_specs_omni_proto_msgTypes[97].Exporter = func(v any, i int) any { + file_omni_specs_omni_proto_msgTypes[99].Exporter = func(v any, i int) any { switch v := v.(*MachineExtensionsStatusSpec_Item); i { case 0: return &v.state @@ -9631,7 +9767,7 @@ func file_omni_specs_omni_proto_init() { } } } - file_omni_specs_omni_proto_msgTypes[49].OneofWrappers = []any{ + file_omni_specs_omni_proto_msgTypes[50].OneofWrappers = []any{ (*OngoingTaskSpec_TalosUpgrade)(nil), (*OngoingTaskSpec_KubernetesUpgrade)(nil), (*OngoingTaskSpec_Destroy)(nil), @@ -9642,7 +9778,7 @@ func file_omni_specs_omni_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_omni_specs_omni_proto_rawDesc, NumEnums: 15, - NumMessages: 98, + NumMessages: 100, NumExtensions: 0, NumServices: 0, }, diff --git a/client/api/omni/specs/omni.proto b/client/api/omni/specs/omni.proto index 2e890777..1ba5aa68 100644 --- a/client/api/omni/specs/omni.proto +++ b/client/api/omni/specs/omni.proto @@ -726,6 +726,12 @@ message MachineSetStatusSpec { uint32 locked_updates = 7; } +// MachineSetRequiredMachinesSpec describes the required machines for the machine set. +message MachineSetRequiredMachinesSpec { + // RequiredMachines is the number of machines required to satisfy the machine set. + uint32 required_additional_machines = 1; +} + // MachineSetNodeSpec is a binding between ClusterMachine and MachineSet. message MachineSetNodeSpec {} @@ -914,6 +920,12 @@ message MachineClassSpec { repeated string match_labels = 1; } +// MachineClassStatusSpec describes an Omni MachineClassStatus resource spec. +message MachineClassStatusSpec { + // RequiredAdditionalMachines is the number of additional machines required to satisfy the machine class. + uint32 required_additional_machines = 1; +} + // MachineConfigGenOptionsSpec describes machine related config generation inputs. message MachineConfigGenOptionsSpec { message InstallImage { diff --git a/client/api/omni/specs/omni_vtproto.pb.go b/client/api/omni/specs/omni_vtproto.pb.go index e06954db..6401058a 100644 --- a/client/api/omni/specs/omni_vtproto.pb.go +++ b/client/api/omni/specs/omni_vtproto.pb.go @@ -1193,6 +1193,23 @@ func (m *MachineSetStatusSpec) CloneMessageVT() proto.Message { return m.CloneVT() } +func (m *MachineSetRequiredMachinesSpec) CloneVT() *MachineSetRequiredMachinesSpec { + if m == nil { + return (*MachineSetRequiredMachinesSpec)(nil) + } + r := new(MachineSetRequiredMachinesSpec) + r.RequiredAdditionalMachines = m.RequiredAdditionalMachines + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *MachineSetRequiredMachinesSpec) CloneMessageVT() proto.Message { + return m.CloneVT() +} + func (m *MachineSetNodeSpec) CloneVT() *MachineSetNodeSpec { if m == nil { return (*MachineSetNodeSpec)(nil) @@ -1634,6 +1651,23 @@ func (m *MachineClassSpec) CloneMessageVT() proto.Message { return m.CloneVT() } +func (m *MachineClassStatusSpec) CloneVT() *MachineClassStatusSpec { + if m == nil { + return (*MachineClassStatusSpec)(nil) + } + r := new(MachineClassStatusSpec) + r.RequiredAdditionalMachines = m.RequiredAdditionalMachines + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *MachineClassStatusSpec) CloneMessageVT() proto.Message { + return m.CloneVT() +} + func (m *MachineConfigGenOptionsSpec_InstallImage) CloneVT() *MachineConfigGenOptionsSpec_InstallImage { if m == nil { return (*MachineConfigGenOptionsSpec_InstallImage)(nil) @@ -3694,6 +3728,25 @@ func (this *MachineSetStatusSpec) EqualMessageVT(thatMsg proto.Message) bool { } return this.EqualVT(that) } +func (this *MachineSetRequiredMachinesSpec) EqualVT(that *MachineSetRequiredMachinesSpec) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if this.RequiredAdditionalMachines != that.RequiredAdditionalMachines { + return false + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *MachineSetRequiredMachinesSpec) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*MachineSetRequiredMachinesSpec) + if !ok { + return false + } + return this.EqualVT(that) +} func (this *MachineSetNodeSpec) EqualVT(that *MachineSetNodeSpec) bool { if this == that { return true @@ -4304,6 +4357,25 @@ func (this *MachineClassSpec) EqualMessageVT(thatMsg proto.Message) bool { } return this.EqualVT(that) } +func (this *MachineClassStatusSpec) EqualVT(that *MachineClassStatusSpec) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if this.RequiredAdditionalMachines != that.RequiredAdditionalMachines { + return false + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *MachineClassStatusSpec) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*MachineClassStatusSpec) + if !ok { + return false + } + return this.EqualVT(that) +} func (this *MachineConfigGenOptionsSpec_InstallImage) EqualVT(that *MachineConfigGenOptionsSpec_InstallImage) bool { if this == that { return true @@ -8249,6 +8321,44 @@ func (m *MachineSetStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MachineSetRequiredMachinesSpec) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MachineSetRequiredMachinesSpec) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *MachineSetRequiredMachinesSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.RequiredAdditionalMachines != 0 { + i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RequiredAdditionalMachines)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MachineSetNodeSpec) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -9313,6 +9423,44 @@ func (m *MachineClassSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MachineClassStatusSpec) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MachineClassStatusSpec) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *MachineClassStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.RequiredAdditionalMachines != 0 { + i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RequiredAdditionalMachines)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MachineConfigGenOptionsSpec_InstallImage) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -11762,6 +11910,19 @@ func (m *MachineSetStatusSpec) SizeVT() (n int) { return n } +func (m *MachineSetRequiredMachinesSpec) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RequiredAdditionalMachines != 0 { + n += 1 + protohelpers.SizeOfVarint(uint64(m.RequiredAdditionalMachines)) + } + n += len(m.unknownFields) + return n +} + func (m *MachineSetNodeSpec) SizeVT() (n int) { if m == nil { return 0 @@ -12174,6 +12335,19 @@ func (m *MachineClassSpec) SizeVT() (n int) { return n } +func (m *MachineClassStatusSpec) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RequiredAdditionalMachines != 0 { + n += 1 + protohelpers.SizeOfVarint(uint64(m.RequiredAdditionalMachines)) + } + n += len(m.unknownFields) + return n +} + func (m *MachineConfigGenOptionsSpec_InstallImage) SizeVT() (n int) { if m == nil { return 0 @@ -21275,6 +21449,76 @@ func (m *MachineSetStatusSpec) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *MachineSetRequiredMachinesSpec) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MachineSetRequiredMachinesSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MachineSetRequiredMachinesSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredAdditionalMachines", wireType) + } + m.RequiredAdditionalMachines = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RequiredAdditionalMachines |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MachineSetNodeSpec) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -23629,6 +23873,76 @@ func (m *MachineClassSpec) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *MachineClassStatusSpec) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MachineClassStatusSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MachineClassStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredAdditionalMachines", wireType) + } + m.RequiredAdditionalMachines = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RequiredAdditionalMachines |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MachineConfigGenOptionsSpec_InstallImage) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/client/pkg/omni/resources/omni/labels.go b/client/pkg/omni/resources/omni/labels.go index e8b3680a..f774a4e2 100644 --- a/client/pkg/omni/resources/omni/labels.go +++ b/client/pkg/omni/resources/omni/labels.go @@ -53,6 +53,10 @@ const ( // LabelExposedServiceAlias is the alias of the exposed service. // tsgen:LabelExposedServiceAlias LabelExposedServiceAlias = SystemLabelPrefix + "exposed-service-alias" + + // LabelMachineClassName is the name of the machine class. + // tsgen:LabelMachineClassName + LabelMachineClassName = SystemLabelPrefix + "machine-class-name" ) const ( diff --git a/client/pkg/omni/resources/omni/machine_class_status.go b/client/pkg/omni/resources/omni/machine_class_status.go new file mode 100644 index 00000000..04733578 --- /dev/null +++ b/client/pkg/omni/resources/omni/machine_class_status.go @@ -0,0 +1,53 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package omni + +import ( + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/resource/meta" + "github.com/cosi-project/runtime/pkg/resource/protobuf" + "github.com/cosi-project/runtime/pkg/resource/typed" + + "github.com/siderolabs/omni/client/api/omni/specs" + "github.com/siderolabs/omni/client/pkg/omni/resources" +) + +// NewMachineClassStatus creates new MachineClassStatus resource. +func NewMachineClassStatus(ns string, id resource.ID) *MachineClassStatus { + return typed.NewResource[MachineClassStatusSpec, MachineClassStatusExtension]( + resource.NewMetadata(ns, MachineClassStatusType, id, resource.VersionUndefined), + protobuf.NewResourceSpec(&specs.MachineClassStatusSpec{}), + ) +} + +const ( + // MachineClassStatusType is the type of the MachineClassStatus resource. + // tsgen:MachineClassStatusType + MachineClassStatusType = resource.Type("MachineClassStatuses.omni.sidero.dev") +) + +// MachineClassStatus describes machine set resource. +type MachineClassStatus = typed.Resource[MachineClassStatusSpec, MachineClassStatusExtension] + +// MachineClassStatusSpec wraps specs.MachineClassStatusSpec. +type MachineClassStatusSpec = protobuf.ResourceSpec[specs.MachineClassStatusSpec, *specs.MachineClassStatusSpec] + +// MachineClassStatusExtension provides auxiliary methods for MachineClassStatus resource. +type MachineClassStatusExtension struct{} + +// ResourceDefinition implements [typed.Extension] interface. +func (MachineClassStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec { + return meta.ResourceDefinitionSpec{ + Type: MachineClassStatusType, + Aliases: []resource.Type{}, + DefaultNamespace: resources.DefaultNamespace, + PrintColumns: []meta.PrintColumn{ + { + Name: "Required Additional Machines", + JSONPath: "{.requiredadditionalmachines}", + }, + }, + } +} diff --git a/client/pkg/omni/resources/omni/machine_set_required_machines.go b/client/pkg/omni/resources/omni/machine_set_required_machines.go new file mode 100644 index 00000000..93e4e859 --- /dev/null +++ b/client/pkg/omni/resources/omni/machine_set_required_machines.go @@ -0,0 +1,53 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package omni + +import ( + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/resource/meta" + "github.com/cosi-project/runtime/pkg/resource/protobuf" + "github.com/cosi-project/runtime/pkg/resource/typed" + + "github.com/siderolabs/omni/client/api/omni/specs" + "github.com/siderolabs/omni/client/pkg/omni/resources" +) + +// NewMachineSetRequiredMachines creates new MachineSetRequiredMachines resource. +func NewMachineSetRequiredMachines(ns string, id resource.ID) *MachineSetRequiredMachines { + return typed.NewResource[MachineSetRequiredMachinesSpec, MachineSetRequiredMachinesExtension]( + resource.NewMetadata(ns, MachineSetRequiredMachinesType, id, resource.VersionUndefined), + protobuf.NewResourceSpec(&specs.MachineSetRequiredMachinesSpec{}), + ) +} + +const ( + // MachineSetRequiredMachinesType is the type of the MachineSetRequiredMachines resource. + // tsgen:MachineSetRequiredMachinesType + MachineSetRequiredMachinesType = resource.Type("MachineSetRequiredMachines.omni.sidero.dev") +) + +// MachineSetRequiredMachines describes machine set resource. +type MachineSetRequiredMachines = typed.Resource[MachineSetRequiredMachinesSpec, MachineSetRequiredMachinesExtension] + +// MachineSetRequiredMachinesSpec wraps specs.MachineSetRequiredMachinesSpec. +type MachineSetRequiredMachinesSpec = protobuf.ResourceSpec[specs.MachineSetRequiredMachinesSpec, *specs.MachineSetRequiredMachinesSpec] + +// MachineSetRequiredMachinesExtension provides auxiliary methods for MachineSetRequiredMachines resource. +type MachineSetRequiredMachinesExtension struct{} + +// ResourceDefinition implements [typed.Extension] interface. +func (MachineSetRequiredMachinesExtension) ResourceDefinition() meta.ResourceDefinitionSpec { + return meta.ResourceDefinitionSpec{ + Type: MachineSetRequiredMachinesType, + Aliases: []resource.Type{}, + DefaultNamespace: resources.DefaultNamespace, + PrintColumns: []meta.PrintColumn{ + { + Name: "Required Additional Machines", + JSONPath: "{.requiredadditionalmachines}", + }, + }, + } +} diff --git a/client/pkg/omni/resources/omni/omni.go b/client/pkg/omni/resources/omni/omni.go index 011a5888..c64527c5 100644 --- a/client/pkg/omni/resources/omni/omni.go +++ b/client/pkg/omni/resources/omni/omni.go @@ -55,12 +55,14 @@ func init() { registry.MustRegisterResource(MachineLabelsType, &MachineLabels{}) registry.MustRegisterResource(MachineType, &Machine{}) registry.MustRegisterResource(MachineClassType, &MachineClass{}) + registry.MustRegisterResource(MachineClassStatusType, &MachineClassStatus{}) registry.MustRegisterResource(MachineConfigGenOptionsType, &MachineConfigGenOptions{}) registry.MustRegisterResource(MachineExtensionsStatusType, &MachineExtensionsStatus{}) registry.MustRegisterResource(MachineExtensionsType, &MachineExtensions{}) registry.MustRegisterResource(MachineSetType, &MachineSet{}) registry.MustRegisterResource(MachineSetDestroyStatusType, &MachineSetDestroyStatus{}) registry.MustRegisterResource(MachineSetNodeType, &MachineSetNode{}) + registry.MustRegisterResource(MachineSetRequiredMachinesType, &MachineSetRequiredMachines{}) registry.MustRegisterResource(MachineSetStatusType, &MachineSetStatus{}) registry.MustRegisterResource(MachineStatusType, &MachineStatus{}) registry.MustRegisterResource(MachineStatusSnapshotType, &MachineStatusSnapshot{}) diff --git a/cmd/integration-test/pkg/tests/auth.go b/cmd/integration-test/pkg/tests/auth.go index 9053a228..a01095ea 100644 --- a/cmd/integration-test/pkg/tests/auth.go +++ b/cmd/integration-test/pkg/tests/auth.go @@ -815,6 +815,14 @@ func AssertResourceAuthz(rootCtx context.Context, rootCli *client.Client, client resource: omni.NewMachineConfigGenOptions(resources.DefaultNamespace, uuid.New().String()), allowedVerbSet: readOnlyVerbSet, }, + { + resource: omni.NewMachineClassStatus(resources.DefaultNamespace, uuid.New().String()), + allowedVerbSet: readOnlyVerbSet, + }, + { + resource: omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, uuid.New().String()), + allowedVerbSet: readOnlyVerbSet, + }, { resource: omni.NewOngoingTask(resources.DefaultNamespace, "res"), allowedVerbSet: readOnlyVerbSet, diff --git a/frontend/src/api/omni/specs/omni.pb.ts b/frontend/src/api/omni/specs/omni.pb.ts index 17076239..c971b6e3 100644 --- a/frontend/src/api/omni/specs/omni.pb.ts +++ b/frontend/src/api/omni/specs/omni.pb.ts @@ -487,6 +487,10 @@ export type MachineSetStatusSpec = { locked_updates?: number } +export type MachineSetRequiredMachinesSpec = { + required_additional_machines?: number +} + export type MachineSetNodeSpec = { } @@ -592,6 +596,10 @@ export type MachineClassSpec = { match_labels?: string[] } +export type MachineClassStatusSpec = { + required_additional_machines?: number +} + export type MachineConfigGenOptionsSpecInstallImage = { talos_version?: string schematic_id?: string diff --git a/internal/backend/runtime/omni/controllers/helpers/handler.go b/internal/backend/runtime/omni/controllers/helpers/handler.go new file mode 100644 index 00000000..c601b915 --- /dev/null +++ b/internal/backend/runtime/omni/controllers/helpers/handler.go @@ -0,0 +1,86 @@ +// Copyright (c) 2024 Sidero Labs, Inc. +// +// Use of this software is governed by the Business Source License +// included in the LICENSE file. + +package helpers + +import ( + "context" + "errors" + + "github.com/cosi-project/runtime/pkg/controller" + "github.com/cosi-project/runtime/pkg/controller/generic" + "github.com/cosi-project/runtime/pkg/controller/generic/cleanup" + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/state" + "github.com/siderolabs/gen/xerrors" + "go.uber.org/zap" +) + +// SameIDHandler is a cleanup handler that removes output resource that has the same ID as the input resource. +// +// It defines the input resource with the given InputKind, and skips the removal if the output resource is not owned by the given owner. +type SameIDHandler[I, O generic.ResourceWithRD] struct { + Owner string + InputKind controller.InputKind +} + +// FinalizerRemoval implements cleanup.Handler. +func (h *SameIDHandler[I, O]) FinalizerRemoval(ctx context.Context, r controller.Runtime, _ *zap.Logger, input I) error { + var zeroOut O + + md := resource.NewMetadata( + zeroOut.ResourceDefinition().DefaultNamespace, + zeroOut.ResourceDefinition().Type, + input.Metadata().ID(), + resource.VersionUndefined, + ) + + res, err := r.Get(ctx, md) + if err != nil { + if state.IsNotFoundError(err) { + return nil + } + + return err + } + + if res.Metadata().Owner() != h.Owner { + return nil + } + + ready, err := r.Teardown(ctx, md, controller.WithOwner(h.Owner)) + if err != nil { + return err + } + + if !ready { + return xerrors.NewTagged[cleanup.SkipReconcileTag](errors.New("waiting for resources to be destroyed")) + } + + return r.Destroy(ctx, md, controller.WithOwner(h.Owner)) +} + +// Inputs implements cleanup.Handler. +func (h *SameIDHandler[I, O]) Inputs() []controller.Input { + var zeroOut O + + return []controller.Input{{ + Namespace: zeroOut.ResourceDefinition().DefaultNamespace, + Type: zeroOut.ResourceDefinition().Type, + Kind: h.InputKind, + }} +} + +// Outputs implements cleanup.Handler. +func (h *SameIDHandler[I, O]) Outputs() []controller.Output { + var zeroOut O + + return []controller.Output{ + { + Type: zeroOut.ResourceDefinition().Type, + Kind: controller.OutputShared, + }, + } +} diff --git a/internal/backend/runtime/omni/controllers/omni/internal/mappers/mappers.go b/internal/backend/runtime/omni/controllers/omni/internal/mappers/mappers.go index 8eb2b4ba..b82c0380 100644 --- a/internal/backend/runtime/omni/controllers/omni/internal/mappers/mappers.go +++ b/internal/backend/runtime/omni/controllers/omni/internal/mappers/mappers.go @@ -63,6 +63,11 @@ func MapByMachineSetLabelOnlyControlplane[I generic.ResourceWithRD, O generic.Re return MapExtractLabelValue[I, O](omni.LabelMachineSet, resource.LabelTerm{Key: omni.LabelControlPlaneRole, Op: resource.LabelOpExists}) } +// MapByMachineClassNameLabel returns a mapper that extracts a LabelMachineClassName value. +func MapByMachineClassNameLabel[I generic.ResourceWithRD, O generic.ResourceWithRD]() qtransform.MapperFuncGeneric[I] { + return MapExtractLabelValue[I, O](omni.LabelMachineClassName) +} + // MapClusterResourceToLabeledResources returns a mapper that maps a cluster resource to all resources with the same cluster label. func MapClusterResourceToLabeledResources[I generic.ResourceWithRD, O generic.ResourceWithRD]() qtransform.MapperFuncGeneric[I] { return func(ctx context.Context, _ *zap.Logger, r controller.QRuntime, i I) ([]resource.Pointer, error) { diff --git a/internal/backend/runtime/omni/controllers/omni/machine_class_status.go b/internal/backend/runtime/omni/controllers/omni/machine_class_status.go new file mode 100644 index 00000000..2e6188cd --- /dev/null +++ b/internal/backend/runtime/omni/controllers/omni/machine_class_status.go @@ -0,0 +1,61 @@ +// Copyright (c) 2024 Sidero Labs, Inc. +// +// Use of this software is governed by the Business Source License +// included in the LICENSE file. + +package omni + +import ( + "context" + + "github.com/cosi-project/runtime/pkg/controller" + "github.com/cosi-project/runtime/pkg/controller/generic/qtransform" + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/safe" + "github.com/cosi-project/runtime/pkg/state" + "go.uber.org/zap" + + "github.com/siderolabs/omni/client/pkg/omni/resources/omni" + "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/omni/internal/mappers" +) + +// MachineClassStatusController manages MachineClassStatus resource lifecycle. +// +// MachineClassStatusController generates cluster UUID for every cluster. +type MachineClassStatusController = qtransform.QController[*omni.MachineClass, *omni.MachineClassStatus] + +// NewMachineClassStatusController initializes MachineClassStatusController. +func NewMachineClassStatusController() *MachineClassStatusController { + return qtransform.NewQController( + qtransform.Settings[*omni.MachineClass, *omni.MachineClassStatus]{ + Name: "MachineClassStatusController", + MapMetadataFunc: func(mc *omni.MachineClass) *omni.MachineClassStatus { + return omni.NewMachineClassStatus(mc.Metadata().Namespace(), mc.Metadata().ID()) + }, + UnmapMetadataFunc: func(mcs *omni.MachineClassStatus) *omni.MachineClass { + return omni.NewMachineClass(mcs.Metadata().Namespace(), mcs.Metadata().ID()) + }, + TransformFunc: func(ctx context.Context, r controller.Reader, _ *zap.Logger, mc *omni.MachineClass, mcs *omni.MachineClassStatus) error { + msrmList, err := safe.ReaderListAll[*omni.MachineSetRequiredMachines](ctx, r, state.WithLabelQuery(resource.LabelEqual(omni.LabelMachineClassName, mc.Metadata().ID()))) + if err != nil { + return err + } + + total := uint32(0) + + msrmList.ForEach(func(msrm *omni.MachineSetRequiredMachines) { + if msrm.Metadata().Phase() != resource.PhaseTearingDown { + total += msrm.TypedSpec().Value.RequiredAdditionalMachines + } + }) + + mcs.TypedSpec().Value.RequiredAdditionalMachines = total + + return nil + }, + }, + qtransform.WithExtraMappedInput( + mappers.MapByMachineClassNameLabel[*omni.MachineSetRequiredMachines, *omni.MachineClass](), + ), + ) +} diff --git a/internal/backend/runtime/omni/controllers/omni/machine_class_status_test.go b/internal/backend/runtime/omni/controllers/omni/machine_class_status_test.go new file mode 100644 index 00000000..b398cb6c --- /dev/null +++ b/internal/backend/runtime/omni/controllers/omni/machine_class_status_test.go @@ -0,0 +1,92 @@ +// Copyright (c) 2024 Sidero Labs, Inc. +// +// Use of this software is governed by the Business Source License +// included in the LICENSE file. + +package omni_test + +import ( + "context" + "testing" + "time" + + "github.com/cosi-project/runtime/pkg/resource/rtestutils" + "github.com/cosi-project/runtime/pkg/safe" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + + "github.com/siderolabs/omni/client/pkg/omni/resources" + "github.com/siderolabs/omni/client/pkg/omni/resources/omni" + omnictrl "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/omni" +) + +type MachineClassStatusSuite struct { + OmniSuite +} + +func (suite *MachineClassStatusSuite) TestReconcile() { + suite.ctx, suite.ctxCancel = context.WithTimeout(suite.ctx, time.Second*10) + + suite.startRuntime() + + controller := omnictrl.NewMachineClassStatusController() + + suite.Require().NoError(suite.runtime.RegisterQController(controller)) + + mc := omni.NewMachineClass(resources.DefaultNamespace, "machine-class-test") + + suite.Require().NoError(suite.state.Create(suite.ctx, mc)) + + mcs := omni.NewMachineClassStatus(resources.DefaultNamespace, "machine-class-test") + + assertResource(&suite.OmniSuite, mcs.Metadata(), func(r *omni.MachineClassStatus, assertion *assert.Assertions) { + assertion.Equal(uint32(0), r.TypedSpec().Value.RequiredAdditionalMachines) + }) + + msrm1 := omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, "msrm-1") + msrm2 := omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, "msrm-2") + msrm3 := omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, "msrm-3") + + msrm1.TypedSpec().Value.RequiredAdditionalMachines = 1 + msrm2.TypedSpec().Value.RequiredAdditionalMachines = 2 + msrm3.TypedSpec().Value.RequiredAdditionalMachines = 3 + + msrm1.Metadata().Labels().Set(omni.LabelMachineClassName, "machine-class-test") + msrm2.Metadata().Labels().Set(omni.LabelMachineClassName, "machine-class-test") + msrm3.Metadata().Labels().Set(omni.LabelMachineClassName, "some-other-mc") + + suite.Require().NoError(suite.state.Create(suite.ctx, msrm1)) + suite.Require().NoError(suite.state.Create(suite.ctx, msrm2)) + suite.Require().NoError(suite.state.Create(suite.ctx, msrm3)) + + assertResource(&suite.OmniSuite, mcs.Metadata(), func(r *omni.MachineClassStatus, assertion *assert.Assertions) { + assertion.Equal(uint32(3), r.TypedSpec().Value.RequiredAdditionalMachines) + }) + + _, err := safe.StateUpdateWithConflicts(suite.ctx, suite.state, msrm2.Metadata(), func(r *omni.MachineSetRequiredMachines) error { + r.TypedSpec().Value.RequiredAdditionalMachines = 0 + + return nil + }) + suite.Require().NoError(err) + + assertResource(&suite.OmniSuite, mcs.Metadata(), func(r *omni.MachineClassStatus, assertion *assert.Assertions) { + assertion.Equal(uint32(1), r.TypedSpec().Value.RequiredAdditionalMachines) + }) + + rtestutils.Destroy[*omni.MachineSetRequiredMachines](suite.ctx, suite.T(), suite.state, []string{msrm1.Metadata().ID()}) + + assertResource(&suite.OmniSuite, mcs.Metadata(), func(r *omni.MachineClassStatus, assertion *assert.Assertions) { + assertion.Equal(uint32(0), r.TypedSpec().Value.RequiredAdditionalMachines) + }) + + rtestutils.Destroy[*omni.MachineClass](suite.ctx, suite.T(), suite.state, []string{mc.Metadata().ID()}) + + assertNoResource[*omni.MachineClassStatus](&suite.OmniSuite, mcs) +} + +func TestMachineClassStatusSuite(t *testing.T) { + t.Parallel() + + suite.Run(t, new(MachineClassStatusSuite)) +} diff --git a/internal/backend/runtime/omni/controllers/omni/machine_cleanup.go b/internal/backend/runtime/omni/controllers/omni/machine_cleanup.go index 07b946f8..f68c255c 100644 --- a/internal/backend/runtime/omni/controllers/omni/machine_cleanup.go +++ b/internal/backend/runtime/omni/controllers/omni/machine_cleanup.go @@ -6,80 +6,15 @@ package omni import ( - "context" - "errors" - - "github.com/cosi-project/runtime/pkg/controller" - "github.com/cosi-project/runtime/pkg/controller/generic" "github.com/cosi-project/runtime/pkg/controller/generic/cleanup" - "github.com/cosi-project/runtime/pkg/resource" - "github.com/cosi-project/runtime/pkg/state" - "github.com/siderolabs/gen/xerrors" - "go.uber.org/zap" - "github.com/siderolabs/omni/client/pkg/omni/resources" "github.com/siderolabs/omni/client/pkg/omni/resources/omni" + "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/helpers" ) // MachineCleanupController manages MachineCleanup resource lifecycle. type MachineCleanupController = cleanup.Controller[*omni.Machine] -type sameIDHandler[I, O generic.ResourceWithRD] struct{} - -func (h *sameIDHandler[I, O]) FinalizerRemoval(ctx context.Context, r controller.Runtime, _ *zap.Logger, input I) error { - var zeroOut O - - md := resource.NewMetadata( - zeroOut.ResourceDefinition().DefaultNamespace, - zeroOut.ResourceDefinition().Type, - input.Metadata().ID(), - resource.VersionUndefined, - ) - - res, err := r.Get(ctx, md) - if err != nil { - if state.IsNotFoundError(err) { - return nil - } - - return err - } - - if res.Metadata().Owner() != "" { - return nil - } - - ready, err := r.Teardown(ctx, md, controller.WithOwner("")) - if err != nil { - return err - } - - if !ready { - return xerrors.NewTagged[cleanup.SkipReconcileTag](errors.New("waiting for resources to be destroyed")) - } - - return r.Destroy(ctx, md, controller.WithOwner("")) -} - -func (h *sameIDHandler[I, O]) Inputs() []controller.Input { - return []controller.Input{ - { - Type: omni.MachineSetNodeType, - Namespace: resources.DefaultNamespace, - Kind: controller.InputWeak, - }, - } -} - -func (h *sameIDHandler[I, O]) Outputs() []controller.Output { - return []controller.Output{ - { - Type: omni.MachineSetNodeType, - Kind: controller.OutputShared, - }, - } -} - // NewMachineCleanupController returns a new MachineCleanup controller. // This controller should remove all MachineSetNodes for a tearing down machine. // If the MachineSetNode is owned by some controller, it is skipped. @@ -87,7 +22,7 @@ func NewMachineCleanupController() *MachineCleanupController { return cleanup.NewController( cleanup.Settings[*omni.Machine]{ Name: "MachineCleanupController", - Handler: &sameIDHandler[*omni.Machine, *omni.MachineSetNode]{}, + Handler: &helpers.SameIDHandler[*omni.Machine, *omni.MachineSetNode]{}, }, ) } diff --git a/internal/backend/runtime/omni/controllers/omni/machine_set.go b/internal/backend/runtime/omni/controllers/omni/machine_set.go index 61960cb9..e557734e 100644 --- a/internal/backend/runtime/omni/controllers/omni/machine_set.go +++ b/internal/backend/runtime/omni/controllers/omni/machine_set.go @@ -8,11 +8,13 @@ package omni import ( "fmt" + "github.com/cosi-project/runtime/pkg/controller" "github.com/cosi-project/runtime/pkg/controller/generic/cleanup" "github.com/cosi-project/runtime/pkg/resource" "github.com/cosi-project/runtime/pkg/state" "github.com/siderolabs/omni/client/pkg/omni/resources/omni" + "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/helpers" ) // MachineSetController manages MachineSet resource lifecycle. @@ -30,7 +32,10 @@ func NewMachineSetController() *MachineSetController { cleanup.RemoveOutputs[*omni.ExtensionsConfiguration](func(machineSet *omni.MachineSet) state.ListOption { return state.WithLabelQuery(resource.LabelEqual(omni.LabelMachineSet, machineSet.Metadata().ID())) }), - + &helpers.SameIDHandler[*omni.MachineSet, *omni.MachineSetRequiredMachines]{ + InputKind: controller.InputDestroyReady, + Owner: MachineSetNodeControllerName, + }, withFinalizerCheck(cleanup.RemoveOutputs[*omni.ConfigPatch](func(machineSet *omni.MachineSet) state.ListOption { clusterName, _ := machineSet.Metadata().Labels().Get(omni.LabelCluster) diff --git a/internal/backend/runtime/omni/controllers/omni/machine_set_node.go b/internal/backend/runtime/omni/controllers/omni/machine_set_node.go index 0c4a3f7b..f1fd5c66 100644 --- a/internal/backend/runtime/omni/controllers/omni/machine_set_node.go +++ b/internal/backend/runtime/omni/controllers/omni/machine_set_node.go @@ -24,8 +24,12 @@ import ( "github.com/siderolabs/omni/client/pkg/cosi/labels" "github.com/siderolabs/omni/client/pkg/omni/resources" "github.com/siderolabs/omni/client/pkg/omni/resources/omni" + "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/helpers" ) +// MachineSetNodeControllerName is the name of the MachineSetNodeController. +const MachineSetNodeControllerName = "MachineSetNodeController" + // MachineSetNodeController manages MachineSetNode resource lifecycle. // // MachineSetNodeController creates and deletes cluster machines, handles rolling updates. @@ -33,7 +37,7 @@ type MachineSetNodeController struct{} // Name implements controller.Controller interface. func (ctrl *MachineSetNodeController) Name() string { - return "MachineSetNodeController" + return MachineSetNodeControllerName } // Inputs implements controller.Controller interface. @@ -79,6 +83,10 @@ func (ctrl *MachineSetNodeController) Outputs() []controller.Output { Type: omni.MachineSetNodeType, Kind: controller.OutputShared, }, + { + Type: omni.MachineSetRequiredMachinesType, + Kind: controller.OutputShared, + }, } } @@ -185,11 +193,36 @@ func (ctrl *MachineSetNodeController) reconcileMachineSet( visited map[resource.ID]struct{}, logger *zap.Logger, ) error { - var err error + requiredAdditionalMachines, err := ctrl.reconcileMachineSetNodes(ctx, r, machineSet, allMachineStatuses, allMachineSetNodes, machineStatusMap, visited, logger) + if err != nil { + return err + } + + // avoid resurrecting MachineSetRequiredMachines if the MachineSet is being deleted + if machineSet.Metadata().Phase() == resource.PhaseTearingDown { + return nil + } + + return ctrl.saveRequiredAdditionalMachines(ctx, r, machineSet, requiredAdditionalMachines) +} +func (ctrl *MachineSetNodeController) reconcileMachineSetNodes( + ctx context.Context, + r controller.Runtime, + machineSet *omni.MachineSet, + allMachineStatuses safe.List[*omni.MachineStatus], + allMachineSetNodes safe.List[*omni.MachineSetNode], + machineStatusMap map[resource.ID]*omni.MachineStatus, + visited map[resource.ID]struct{}, + logger *zap.Logger, +) (requiredAdditionalMachines int, err error) { spec := machineSet.TypedSpec() if spec.Value.MachineClass == nil || machineSet.Metadata().Phase() == resource.PhaseTearingDown { - return nil + if err = r.Destroy(ctx, omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, machineSet.Metadata().ID()).Metadata()); err != nil && !state.IsNotFoundError(err) { + return 0, err + } + + return 0, nil } visited[machineSet.Metadata().ID()] = struct{}{} @@ -200,25 +233,27 @@ func (ctrl *MachineSetNodeController) reconcileMachineSet( machineClass, err = safe.ReaderGet[*omni.MachineClass](ctx, r, omni.NewMachineClass(resources.DefaultNamespace, machineClassCfg.Name).Metadata()) if err != nil { - return err + return 0, err } existingMachineSetNodes := allMachineSetNodes.FilterLabelQuery(resource.LabelEqual(omni.LabelMachineSet, machineSet.Metadata().ID())) switch machineClassCfg.AllocationType { case specs.MachineSetSpec_MachineClass_Unlimited: - return ctrl.createNodes(ctx, r, machineSet, machineClass, allMachineStatuses, math.MaxInt32, logger) + _, err = ctrl.createNodes(ctx, r, machineSet, machineClass, allMachineStatuses, math.MaxInt32, logger) + + return 0, err // unlimited allocation mode does not cause any machine pressure case specs.MachineSetSpec_MachineClass_Static: diff := int(machineClassCfg.MachineCount) - existingMachineSetNodes.Len() if diff == 0 { - return nil + return 0, nil } if diff < 0 { logger.Info("scaling machine set down", zap.Int("pending", -diff), zap.String("machine_set", machineSet.Metadata().ID())) - return ctrl.deleteNodes(ctx, r, existingMachineSetNodes, machineStatusMap, -diff, logger) + return 0, ctrl.deleteNodes(ctx, r, existingMachineSetNodes, machineStatusMap, -diff, logger) } logger.Info("scaling machine set up", zap.Int("pending", diff), zap.String("machine_set", machineSet.Metadata().ID())) @@ -226,7 +261,26 @@ func (ctrl *MachineSetNodeController) reconcileMachineSet( return ctrl.createNodes(ctx, r, machineSet, machineClass, allMachineStatuses, diff, logger) } - return nil + return 0, nil +} + +func (ctrl *MachineSetNodeController) saveRequiredAdditionalMachines(ctx context.Context, r controller.Runtime, machineSet *omni.MachineSet, numRequired int) error { + return safe.WriterModify[*omni.MachineSetRequiredMachines](ctx, r, omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, machineSet.Metadata().ID()), + func(res *omni.MachineSetRequiredMachines) error { + helpers.CopyAllLabels(machineSet, res) + + machineClass := machineSet.TypedSpec().Value.MachineClass + + if machineClass != nil { + res.Metadata().Labels().Set(omni.LabelMachineClassName, machineClass.Name) + } else { + res.Metadata().Labels().Delete(omni.LabelMachineClassName) + } + + res.TypedSpec().Value.RequiredAdditionalMachines = uint32(numRequired) + + return nil + }) } //nolint:gocognit @@ -238,31 +292,31 @@ func (ctrl *MachineSetNodeController) createNodes( allMachineStatuses safe.List[*omni.MachineStatus], count int, logger *zap.Logger, -) error { +) (requiredAdditionalMachines int, err error) { selectors, err := labels.ParseSelectors(machineClass.TypedSpec().Value.MatchLabels) if err != nil { - return err + return 0, err } created := 0 clusterName, ok := machineSet.Metadata().Labels().Get(omni.LabelCluster) if !ok { - return fmt.Errorf("failed to get cluster name of the machine set %q", machineSet.Metadata().ID()) + return 0, fmt.Errorf("failed to get cluster name of the machine set %q", machineSet.Metadata().ID()) } cluster, err := safe.ReaderGetByID[*omni.Cluster](ctx, r, clusterName) if err != nil { if state.IsNotFoundError(err) { - return nil + return 0, nil } - return err + return 0, err } clusterVersion, err := semver.Parse(cluster.TypedSpec().Value.TalosVersion) if err != nil { - return fmt.Errorf("failed to parse talos version of the cluster %w", err) + return 0, fmt.Errorf("failed to parse talos version of the cluster %w", err) } for _, selector := range selectors { @@ -309,19 +363,19 @@ func (ctrl *MachineSetNodeController) createNodes( continue } - return err + return 0, err } logger.Info("created machine set node", zap.String("machine", id)) created++ if created == count { - return nil + return 0, nil } } } - return nil + return count - created, nil } func (ctrl *MachineSetNodeController) deleteNodes( diff --git a/internal/backend/runtime/omni/controllers/omni/machine_set_node_test.go b/internal/backend/runtime/omni/controllers/omni/machine_set_node_test.go index 9026c22a..d39576ed 100644 --- a/internal/backend/runtime/omni/controllers/omni/machine_set_node_test.go +++ b/internal/backend/runtime/omni/controllers/omni/machine_set_node_test.go @@ -220,6 +220,130 @@ func (suite *MachineSetNodeSuite) TestReconcile() { assertNoMachineSetNode(machines[4]) } +func (suite *MachineSetNodeSuite) TestRequiredExtraMachines() { + ctx, cancel := context.WithTimeout(suite.ctx, time.Second*10) + defer cancel() + + // prepare state and start runtime + suite.Require().NoError(suite.runtime.RegisterController(&omnictrl.MachineSetNodeController{})) + suite.Require().NoError(suite.runtime.RegisterController(omnictrl.NewMachineSetController())) + + cluster := omni.NewCluster(resources.DefaultNamespace, "test-cluster") + cluster.TypedSpec().Value.TalosVersion = "1.7.5" + + suite.Require().NoError(suite.state.Create(ctx, cluster)) + + machineClass := omni.NewMachineClass(resources.DefaultNamespace, "test-machine-class") + machineClass.TypedSpec().Value.MatchLabels = []string{"foo=bar"} + suite.Require().NoError(suite.state.Create(ctx, machineClass)) + + machineSetMachineClassSpec := func() *specs.MachineSetSpec_MachineClass { + return &specs.MachineSetSpec_MachineClass{ + Name: machineClass.Metadata().ID(), + AllocationType: specs.MachineSetSpec_MachineClass_Static, + MachineCount: 3, + } + } + + machineSet := omni.NewMachineSet(resources.DefaultNamespace, "test-machine-set") + machineSet.TypedSpec().Value.MachineClass = machineSetMachineClassSpec() + + machineSet.Metadata().Labels().Set(omni.LabelCluster, cluster.Metadata().ID()) + + suite.Require().NoError(suite.state.Create(ctx, machineSet)) + + suite.startRuntime() + + // assert that the MachineSetRequiredMachines resource is created with 3 required additional machines + requiredMachines := omni.NewMachineSetRequiredMachines(resources.DefaultNamespace, machineSet.Metadata().ID()) + + assertRequiredMachineCount := func(count int) { + assertResource(&suite.OmniSuite, requiredMachines.Metadata(), + func(r *omni.MachineSetRequiredMachines, assertion *assert.Assertions) { + assertion.Equal(uint32(count), r.TypedSpec().Value.RequiredAdditionalMachines) + }) + } + + assertRequiredMachineCount(3) + assertResource(&suite.OmniSuite, requiredMachines.Metadata(), + func(r *omni.MachineSetRequiredMachines, assertion *assert.Assertions) { + machineClassNameLabel, ok := r.Metadata().Labels().Get(omni.LabelMachineClassName) + + assertion.True(ok, "MachineSetRequiredMachines resource should have a label %q", omni.LabelMachineClassName) + assertion.Equal(machineClass.Metadata().ID(), machineClassNameLabel) + }) + + machineStatus := omni.NewMachineStatus(resources.DefaultNamespace, "test-machine-status") + machineStatus.TypedSpec().Value.TalosVersion = "1.7.5" + machineStatus.TypedSpec().Value.Hardware = &specs.MachineStatusSpec_HardwareStatus{ + Blockdevices: []*specs.MachineStatusSpec_HardwareStatus_BlockDevice{ + { + SystemDisk: true, + LinuxName: "test-system-disk", + }, + }, + } + + machineStatus.Metadata().Labels().Set(omni.MachineStatusLabelAvailable, "") + machineStatus.Metadata().Labels().Set(omni.MachineStatusLabelConnected, "") + machineStatus.Metadata().Labels().Set(omni.MachineStatusLabelReportingEvents, "") + machineStatus.Metadata().Labels().Set("foo", "bar") + + suite.Require().NoError(suite.state.Create(ctx, machineStatus)) + assertRequiredMachineCount(2) + + // reduce the required machines to meet the number of available machines + _, err := safe.StateUpdateWithConflicts(ctx, suite.state, machineSet.Metadata(), func(ms *omni.MachineSet) error { + ms.TypedSpec().Value.MachineClass.MachineCount = 1 + + return nil + }) + suite.Require().NoError(err) + + assertRequiredMachineCount(0) + + // bring the pressure back for further testing + _, err = safe.StateUpdateWithConflicts(ctx, suite.state, machineSet.Metadata(), func(ms *omni.MachineSet) error { + ms.TypedSpec().Value.MachineClass = machineSetMachineClassSpec() + + return nil + }) + suite.Require().NoError(err) + + assertRequiredMachineCount(2) + + // switch machine allocation mode to unlimited + _, err = safe.StateUpdateWithConflicts(ctx, suite.state, machineSet.Metadata(), func(ms *omni.MachineSet) error { + ms.TypedSpec().Value.MachineClass.AllocationType = specs.MachineSetSpec_MachineClass_Unlimited + + return nil + }) + suite.Require().NoError(err) + + assertRequiredMachineCount(0) + + // remove the MachineClass spec from MachineSet + _, err = safe.StateUpdateWithConflicts(ctx, suite.state, machineSet.Metadata(), func(ms *omni.MachineSet) error { + ms.TypedSpec().Value.MachineClass = nil + + return nil + }) + suite.Require().NoError(err) + + assertRequiredMachineCount(0) + assertResource(&suite.OmniSuite, requiredMachines.Metadata(), + func(r *omni.MachineSetRequiredMachines, assertion *assert.Assertions) { + _, ok := r.Metadata().Labels().Get(omni.LabelMachineClassName) + + assertion.False(ok, "MachineSetRequiredMachines resource should not have a label %q", omni.LabelMachineClassName) + }) + + // remove the MachineSet, assert that the MachineSetRequiredMachines resource is removed + rtestutils.Destroy[*omni.MachineSet](ctx, suite.T(), suite.state, []string{machineSet.Metadata().ID()}) + + assertNoResource[*omni.MachineSetRequiredMachines](&suite.OmniSuite, requiredMachines) +} + func TestSortFunction(t *testing.T) { machineStatuses := map[resource.ID]*omni.MachineStatus{} machineSetNodes := make([]*omni.MachineSetNode, 0, 10) diff --git a/internal/backend/runtime/omni/omni.go b/internal/backend/runtime/omni/omni.go index 87ee5db0..1aa4e7ea 100644 --- a/internal/backend/runtime/omni/omni.go +++ b/internal/backend/runtime/omni/omni.go @@ -218,6 +218,7 @@ func New(talosClientFactory *talos.ClientFactory, dnsService *dns.Service, workl omnictrl.NewClusterKubernetesNodesController(), omnictrl.NewClusterMachineConfigController(config.Config.DefaultConfigGenOptions, config.Config.EventSinkPort), omnictrl.NewClusterMachineTeardownController(defaultDiscoveryClient, embeddedDiscoveryClient), + omnictrl.NewMachineClassStatusController(), omnictrl.NewMachineConfigGenOptionsController(), omnictrl.NewMachineStatusController(imageFactoryClient), omnictrl.NewClusterMachineConfigStatusController(), diff --git a/internal/backend/runtime/omni/state_access.go b/internal/backend/runtime/omni/state_access.go index 597edd06..c652d9ef 100644 --- a/internal/backend/runtime/omni/state_access.go +++ b/internal/backend/runtime/omni/state_access.go @@ -65,6 +65,8 @@ var ( omni.ImagePullRequestType, omni.ImagePullStatusType, omni.MachineSetType, + omni.MachineSetRequiredMachinesType, + omni.MachineSetStatusType, omni.MachineSetNodeType, omni.EtcdBackupType, omni.SchematicConfigurationType, @@ -383,6 +385,7 @@ func filterAccess(ctx context.Context, access state.Access) error { omni.MachineLabelsType, omni.MachineSetType, omni.MachineSetDestroyStatusType, + omni.MachineSetRequiredMachinesType, omni.MachineSetNodeType, omni.MachineSetStatusType, omni.TalosUpgradeStatusType, @@ -391,6 +394,7 @@ func filterAccess(ctx context.Context, access state.Access) error { siderolink.ConnectionParamsType, omni.MachineType, omni.MachineClassType, + omni.MachineClassStatusType, omni.MachineExtensionsStatusType, omni.MachineExtensionsType, omni.MachineStatusType, @@ -514,8 +518,11 @@ func filterAccessByType(access state.Access) error { omni.LoadBalancerConfigType, omni.LoadBalancerStatusType, omni.MachineType, + omni.MachineClassType, + omni.MachineClassStatusType, omni.MachineConfigGenOptionsType, omni.MachineSetDestroyStatusType, + omni.MachineSetRequiredMachinesType, omni.MachineSetStatusType, omni.MachineStatusType, omni.MachineStatusLinkType,