From 1576951dd404bd11bcf02cd036bbec5d4f5c2d12 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 24 Feb 2026 09:42:08 +0100 Subject: [PATCH 1/3] Namespaced IP support for machine create --- doc/index.html | 37 +- go/metalstack/api/v2/machine.pb.go | 519 +++++++++++++---------- js/metalstack/api/v2/machine_pb.d.ts | 30 +- js/metalstack/api/v2/machine_pb.js | 61 +-- js/metalstack/api/v2/machine_pb.ts | 90 ++-- proto/Makefile | 2 +- proto/metalstack/api/v2/machine.proto | 16 +- python/metalstack/api/v2/machine_pb2.py | 224 +++++----- python/metalstack/api/v2/machine_pb2.pyi | 12 +- 9 files changed, 585 insertions(+), 406 deletions(-) diff --git a/doc/index.html b/doc/index.html index 7aa2fef8..8ac5a88c 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1079,6 +1079,10 @@

Table of Contents

MMachineAllocation +
  • + MMachineAllocationIp +
  • +
  • MMachineAllocationNetwork
  • @@ -9069,6 +9073,37 @@

    MachineAllocation

    +

    MachineAllocationIp

    +

    MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    ipstring

    IP to to attach to this machine additionally

    namespacestringoptional

    Namespace where this ip was created, usually the project of the namespaced tenant network.

    + + + + +

    MachineAllocationNetwork

    MachineAllocationNetwork defines which network should be attached to a machine and if ips should be autoacquired

    @@ -10441,7 +10476,7 @@

    MachineServiceCreateReque ips - string + MachineAllocationIp repeated

    IPs to to attach to this machine additionally

    diff --git a/go/metalstack/api/v2/machine.pb.go b/go/metalstack/api/v2/machine.pb.go index 6bc19dec..b3bc6aa6 100644 --- a/go/metalstack/api/v2/machine.pb.go +++ b/go/metalstack/api/v2/machine.pb.go @@ -609,7 +609,7 @@ type MachineServiceCreateRequest struct { // Networks the networks that this machine will be placed in. Networks []*MachineAllocationNetwork `protobuf:"bytes,13,rep,name=networks,proto3" json:"networks,omitempty"` // IPs to to attach to this machine additionally - Ips []string `protobuf:"bytes,14,rep,name=ips,proto3" json:"ips,omitempty"` + Ips []*MachineAllocationIp `protobuf:"bytes,14,rep,name=ips,proto3" json:"ips,omitempty"` // PlacementTags by default machines are spread across the racks inside a partition for every project. // if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags PlacementTags []string `protobuf:"bytes,15,rep,name=placement_tags,json=placementTags,proto3" json:"placement_tags,omitempty"` @@ -746,7 +746,7 @@ func (x *MachineServiceCreateRequest) GetNetworks() []*MachineAllocationNetwork return nil } -func (x *MachineServiceCreateRequest) GetIps() []string { +func (x *MachineServiceCreateRequest) GetIps() []*MachineAllocationIp { if x != nil { return x.Ips } @@ -792,7 +792,7 @@ func (x *MachineServiceCreateRequest) GetFirewallSpec() *FirewallSpec { type FirewallSpec struct { state protoimpl.MessageState `protogen:"open.v1"` // FirewallRules to be applied if this is a firewall - FirewallRules *FirewallRules `protobuf:"bytes,19,opt,name=firewall_rules,json=firewallRules,proto3" json:"firewall_rules,omitempty"` + FirewallRules *FirewallRules `protobuf:"bytes,1,opt,name=firewall_rules,json=firewallRules,proto3" json:"firewall_rules,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1932,6 +1932,61 @@ func (x *MachineAllocationNetwork) GetNoAutoAcquireIp() bool { return false } +// MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create +type MachineAllocationIp struct { + state protoimpl.MessageState `protogen:"open.v1"` + // IP to to attach to this machine additionally + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + // Namespace where this ip was created, usually the project of the namespaced tenant network. + Namespace *string `protobuf:"bytes,2,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MachineAllocationIp) Reset() { + *x = MachineAllocationIp{} + mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MachineAllocationIp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MachineAllocationIp) ProtoMessage() {} + +func (x *MachineAllocationIp) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MachineAllocationIp.ProtoReflect.Descriptor instead. +func (*MachineAllocationIp) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{20} +} + +func (x *MachineAllocationIp) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +func (x *MachineAllocationIp) GetNamespace() string { + if x != nil && x.Namespace != nil { + return *x.Namespace + } + return "" +} + // FirewallRules can be defined during firewall allocation type FirewallRules struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1945,7 +2000,7 @@ type FirewallRules struct { func (x *FirewallRules) Reset() { *x = FirewallRules{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1957,7 +2012,7 @@ func (x *FirewallRules) String() string { func (*FirewallRules) ProtoMessage() {} func (x *FirewallRules) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1970,7 +2025,7 @@ func (x *FirewallRules) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallRules.ProtoReflect.Descriptor instead. func (*FirewallRules) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{20} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{21} } func (x *FirewallRules) GetEgress() []*FirewallEgressRule { @@ -2004,7 +2059,7 @@ type FirewallEgressRule struct { func (x *FirewallEgressRule) Reset() { *x = FirewallEgressRule{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2016,7 +2071,7 @@ func (x *FirewallEgressRule) String() string { func (*FirewallEgressRule) ProtoMessage() {} func (x *FirewallEgressRule) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2029,7 +2084,7 @@ func (x *FirewallEgressRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallEgressRule.ProtoReflect.Descriptor instead. func (*FirewallEgressRule) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{21} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{22} } func (x *FirewallEgressRule) GetProtocol() IPProtocol { @@ -2079,7 +2134,7 @@ type FirewallIngressRule struct { func (x *FirewallIngressRule) Reset() { *x = FirewallIngressRule{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2091,7 +2146,7 @@ func (x *FirewallIngressRule) String() string { func (*FirewallIngressRule) ProtoMessage() {} func (x *FirewallIngressRule) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2104,7 +2159,7 @@ func (x *FirewallIngressRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallIngressRule.ProtoReflect.Descriptor instead. func (*FirewallIngressRule) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{22} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{23} } func (x *FirewallIngressRule) GetProtocol() IPProtocol { @@ -2167,7 +2222,7 @@ type MachineNetwork struct { func (x *MachineNetwork) Reset() { *x = MachineNetwork{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2179,7 +2234,7 @@ func (x *MachineNetwork) String() string { func (*MachineNetwork) ProtoMessage() {} func (x *MachineNetwork) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2192,7 +2247,7 @@ func (x *MachineNetwork) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNetwork.ProtoReflect.Descriptor instead. func (*MachineNetwork) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{23} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{24} } func (x *MachineNetwork) GetNetwork() string { @@ -2270,7 +2325,7 @@ type MachineHardware struct { func (x *MachineHardware) Reset() { *x = MachineHardware{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2282,7 +2337,7 @@ func (x *MachineHardware) String() string { func (*MachineHardware) ProtoMessage() {} func (x *MachineHardware) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2295,7 +2350,7 @@ func (x *MachineHardware) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineHardware.ProtoReflect.Descriptor instead. func (*MachineHardware) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{24} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{25} } func (x *MachineHardware) GetMemory() uint64 { @@ -2350,7 +2405,7 @@ type MetalCPU struct { func (x *MetalCPU) Reset() { *x = MetalCPU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2362,7 +2417,7 @@ func (x *MetalCPU) String() string { func (*MetalCPU) ProtoMessage() {} func (x *MetalCPU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2375,7 +2430,7 @@ func (x *MetalCPU) ProtoReflect() protoreflect.Message { // Deprecated: Use MetalCPU.ProtoReflect.Descriptor instead. func (*MetalCPU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{25} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{26} } func (x *MetalCPU) GetVendor() string { @@ -2419,7 +2474,7 @@ type MetalGPU struct { func (x *MetalGPU) Reset() { *x = MetalGPU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2431,7 +2486,7 @@ func (x *MetalGPU) String() string { func (*MetalGPU) ProtoMessage() {} func (x *MetalGPU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2444,7 +2499,7 @@ func (x *MetalGPU) ProtoReflect() protoreflect.Message { // Deprecated: Use MetalGPU.ProtoReflect.Descriptor instead. func (*MetalGPU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{26} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{27} } func (x *MetalGPU) GetVendor() string { @@ -2486,7 +2541,7 @@ type MachineNic struct { func (x *MachineNic) Reset() { *x = MachineNic{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2498,7 +2553,7 @@ func (x *MachineNic) String() string { func (*MachineNic) ProtoMessage() {} func (x *MachineNic) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2511,7 +2566,7 @@ func (x *MachineNic) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNic.ProtoReflect.Descriptor instead. func (*MachineNic) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{27} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{28} } func (x *MachineNic) GetMac() string { @@ -2583,7 +2638,7 @@ type MachineBlockDevice struct { func (x *MachineBlockDevice) Reset() { *x = MachineBlockDevice{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2595,7 +2650,7 @@ func (x *MachineBlockDevice) String() string { func (*MachineBlockDevice) ProtoMessage() {} func (x *MachineBlockDevice) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,7 +2663,7 @@ func (x *MachineBlockDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBlockDevice.ProtoReflect.Descriptor instead. func (*MachineBlockDevice) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{28} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{29} } func (x *MachineBlockDevice) GetName() string { @@ -2638,7 +2693,7 @@ type MachineChassisIdentifyLEDState struct { func (x *MachineChassisIdentifyLEDState) Reset() { *x = MachineChassisIdentifyLEDState{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2650,7 +2705,7 @@ func (x *MachineChassisIdentifyLEDState) String() string { func (*MachineChassisIdentifyLEDState) ProtoMessage() {} func (x *MachineChassisIdentifyLEDState) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2663,7 +2718,7 @@ func (x *MachineChassisIdentifyLEDState) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineChassisIdentifyLEDState.ProtoReflect.Descriptor instead. func (*MachineChassisIdentifyLEDState) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{29} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{30} } func (x *MachineChassisIdentifyLEDState) GetValue() string { @@ -2703,7 +2758,7 @@ type MachineBMCReport struct { func (x *MachineBMCReport) Reset() { *x = MachineBMCReport{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2715,7 +2770,7 @@ func (x *MachineBMCReport) String() string { func (*MachineBMCReport) ProtoMessage() {} func (x *MachineBMCReport) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2728,7 +2783,7 @@ func (x *MachineBMCReport) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMCReport.ProtoReflect.Descriptor instead. func (*MachineBMCReport) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{30} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{31} } func (x *MachineBMCReport) GetBmc() *MachineBMC { @@ -2795,7 +2850,7 @@ type MachineBios struct { func (x *MachineBios) Reset() { *x = MachineBios{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2807,7 +2862,7 @@ func (x *MachineBios) String() string { func (*MachineBios) ProtoMessage() {} func (x *MachineBios) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2820,7 +2875,7 @@ func (x *MachineBios) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBios.ProtoReflect.Descriptor instead. func (*MachineBios) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{31} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{32} } func (x *MachineBios) GetVersion() string { @@ -2867,7 +2922,7 @@ type MachineBMC struct { func (x *MachineBMC) Reset() { *x = MachineBMC{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2879,7 +2934,7 @@ func (x *MachineBMC) String() string { func (*MachineBMC) ProtoMessage() {} func (x *MachineBMC) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2892,7 +2947,7 @@ func (x *MachineBMC) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMC.ProtoReflect.Descriptor instead. func (*MachineBMC) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{32} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{33} } func (x *MachineBMC) GetAddress() string { @@ -2969,7 +3024,7 @@ type MachineFRU struct { func (x *MachineFRU) Reset() { *x = MachineFRU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2981,7 +3036,7 @@ func (x *MachineFRU) String() string { func (*MachineFRU) ProtoMessage() {} func (x *MachineFRU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2994,7 +3049,7 @@ func (x *MachineFRU) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineFRU.ProtoReflect.Descriptor instead. func (*MachineFRU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{33} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{34} } func (x *MachineFRU) GetChassisPartNumber() string { @@ -3079,7 +3134,7 @@ type MachinePowerMetric struct { func (x *MachinePowerMetric) Reset() { *x = MachinePowerMetric{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3091,7 +3146,7 @@ func (x *MachinePowerMetric) String() string { func (*MachinePowerMetric) ProtoMessage() {} func (x *MachinePowerMetric) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3104,7 +3159,7 @@ func (x *MachinePowerMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use MachinePowerMetric.ProtoReflect.Descriptor instead. func (*MachinePowerMetric) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{34} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{35} } func (x *MachinePowerMetric) GetAverageConsumedWatts() float32 { @@ -3148,7 +3203,7 @@ type MachinePowerSupply struct { func (x *MachinePowerSupply) Reset() { *x = MachinePowerSupply{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3160,7 +3215,7 @@ func (x *MachinePowerSupply) String() string { func (*MachinePowerSupply) ProtoMessage() {} func (x *MachinePowerSupply) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3173,7 +3228,7 @@ func (x *MachinePowerSupply) ProtoReflect() protoreflect.Message { // Deprecated: Use MachinePowerSupply.ProtoReflect.Descriptor instead. func (*MachinePowerSupply) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{35} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{36} } func (x *MachinePowerSupply) GetHealth() string { @@ -3207,7 +3262,7 @@ type MachineRecentProvisioningEvents struct { func (x *MachineRecentProvisioningEvents) Reset() { *x = MachineRecentProvisioningEvents{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3219,7 +3274,7 @@ func (x *MachineRecentProvisioningEvents) String() string { func (*MachineRecentProvisioningEvents) ProtoMessage() {} func (x *MachineRecentProvisioningEvents) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3232,7 +3287,7 @@ func (x *MachineRecentProvisioningEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineRecentProvisioningEvents.ProtoReflect.Descriptor instead. func (*MachineRecentProvisioningEvents) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{36} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{37} } func (x *MachineRecentProvisioningEvents) GetEvents() []*MachineProvisioningEvent { @@ -3278,7 +3333,7 @@ type MachineProvisioningEvent struct { func (x *MachineProvisioningEvent) Reset() { *x = MachineProvisioningEvent{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3290,7 +3345,7 @@ func (x *MachineProvisioningEvent) String() string { func (*MachineProvisioningEvent) ProtoMessage() {} func (x *MachineProvisioningEvent) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3303,7 +3358,7 @@ func (x *MachineProvisioningEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineProvisioningEvent.ProtoReflect.Descriptor instead. func (*MachineProvisioningEvent) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{37} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{38} } func (x *MachineProvisioningEvent) GetTime() *timestamppb.Timestamp { @@ -3344,7 +3399,7 @@ type MachineVPN struct { func (x *MachineVPN) Reset() { *x = MachineVPN{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3356,7 +3411,7 @@ func (x *MachineVPN) String() string { func (*MachineVPN) ProtoMessage() {} func (x *MachineVPN) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3369,7 +3424,7 @@ func (x *MachineVPN) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineVPN.ProtoReflect.Descriptor instead. func (*MachineVPN) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{38} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{39} } func (x *MachineVPN) GetControlPlaneAddress() string { @@ -3437,7 +3492,7 @@ type MachineQuery struct { func (x *MachineQuery) Reset() { *x = MachineQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3449,7 +3504,7 @@ func (x *MachineQuery) String() string { func (*MachineQuery) ProtoMessage() {} func (x *MachineQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3462,7 +3517,7 @@ func (x *MachineQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineQuery.ProtoReflect.Descriptor instead. func (*MachineQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{39} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{40} } func (x *MachineQuery) GetUuid() string { @@ -3590,7 +3645,7 @@ type MachineAllocationQuery struct { func (x *MachineAllocationQuery) Reset() { *x = MachineAllocationQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3602,7 +3657,7 @@ func (x *MachineAllocationQuery) String() string { func (*MachineAllocationQuery) ProtoMessage() {} func (x *MachineAllocationQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3615,7 +3670,7 @@ func (x *MachineAllocationQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineAllocationQuery.ProtoReflect.Descriptor instead. func (*MachineAllocationQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{40} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{41} } func (x *MachineAllocationQuery) GetUuid() string { @@ -3702,7 +3757,7 @@ type MachineNetworkQuery struct { func (x *MachineNetworkQuery) Reset() { *x = MachineNetworkQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3714,7 +3769,7 @@ func (x *MachineNetworkQuery) String() string { func (*MachineNetworkQuery) ProtoMessage() {} func (x *MachineNetworkQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3727,7 +3782,7 @@ func (x *MachineNetworkQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNetworkQuery.ProtoReflect.Descriptor instead. func (*MachineNetworkQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{41} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{42} } func (x *MachineNetworkQuery) GetNetworks() []string { @@ -3789,7 +3844,7 @@ type MachineNicQuery struct { func (x *MachineNicQuery) Reset() { *x = MachineNicQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3801,7 +3856,7 @@ func (x *MachineNicQuery) String() string { func (*MachineNicQuery) ProtoMessage() {} func (x *MachineNicQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3814,7 +3869,7 @@ func (x *MachineNicQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNicQuery.ProtoReflect.Descriptor instead. func (*MachineNicQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{42} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{43} } func (x *MachineNicQuery) GetMacs() []string { @@ -3858,7 +3913,7 @@ type MachineDiskQuery struct { func (x *MachineDiskQuery) Reset() { *x = MachineDiskQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3870,7 +3925,7 @@ func (x *MachineDiskQuery) String() string { func (*MachineDiskQuery) ProtoMessage() {} func (x *MachineDiskQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3883,7 +3938,7 @@ func (x *MachineDiskQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineDiskQuery.ProtoReflect.Descriptor instead. func (*MachineDiskQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{43} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{44} } func (x *MachineDiskQuery) GetNames() []string { @@ -3917,7 +3972,7 @@ type MachineBMCQuery struct { func (x *MachineBMCQuery) Reset() { *x = MachineBMCQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3929,7 +3984,7 @@ func (x *MachineBMCQuery) String() string { func (*MachineBMCQuery) ProtoMessage() {} func (x *MachineBMCQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3942,7 +3997,7 @@ func (x *MachineBMCQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMCQuery.ProtoReflect.Descriptor instead. func (*MachineBMCQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{44} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{45} } func (x *MachineBMCQuery) GetAddress() string { @@ -3998,7 +4053,7 @@ type MachineFRUQuery struct { func (x *MachineFRUQuery) Reset() { *x = MachineFRUQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4010,7 +4065,7 @@ func (x *MachineFRUQuery) String() string { func (*MachineFRUQuery) ProtoMessage() {} func (x *MachineFRUQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4023,7 +4078,7 @@ func (x *MachineFRUQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineFRUQuery.ProtoReflect.Descriptor instead. func (*MachineFRUQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{45} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{46} } func (x *MachineFRUQuery) GetChassisPartNumber() string { @@ -4095,7 +4150,7 @@ type MachineHardwareQuery struct { func (x *MachineHardwareQuery) Reset() { *x = MachineHardwareQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4107,7 +4162,7 @@ func (x *MachineHardwareQuery) String() string { func (*MachineHardwareQuery) ProtoMessage() {} func (x *MachineHardwareQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4120,7 +4175,7 @@ func (x *MachineHardwareQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineHardwareQuery.ProtoReflect.Descriptor instead. func (*MachineHardwareQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{46} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{47} } func (x *MachineHardwareQuery) GetMemory() uint64 { @@ -4146,7 +4201,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n" + "\aproject\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\"Q\n" + "\x19MachineServiceGetResponse\x124\n" + - "\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\xa2\b\n" + + "\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\xc6\b\n" + "\x1bMachineServiceCreateRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12!\n" + "\x04uuid\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x1f\n" + @@ -4161,9 +4216,9 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + " \x03(\tB\x11\xbaH\x0e\x92\x01\v\x102\"\ar\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n" + "\buserdata\x18\v \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\buserdata\x88\x01\x01\x121\n" + "\x06labels\x18\f \x01(\v2\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n" + - "\bnetworks\x18\r \x03(\v2+.metalstack.api.v2.MachineAllocationNetworkR\bnetworks\x12\x1e\n" + - "\x03ips\x18\x0e \x03(\tB\f\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12%\n" + - "\x0eplacement_tags\x18\x0f \x03(\tR\rplacementTags\x12E\n" + + "\bnetworks\x18\r \x03(\v2+.metalstack.api.v2.MachineAllocationNetworkR\bnetworks\x128\n" + + "\x03ips\x18\x0e \x03(\v2&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n" + + "\x0eplacement_tags\x18\x0f \x03(\tB\b\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12E\n" + "\n" + "dns_server\x18\x10 \x03(\v2\x1c.metalstack.api.v2.DNSServerB\b\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12E\n" + "\n" + @@ -4177,7 +4232,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + "\x12_filesystem_layoutB\v\n" + "\t_userdata\"W\n" + "\fFirewallSpec\x12G\n" + - "\x0efirewall_rules\x18\x13 \x01(\v2 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n" + + "\x0efirewall_rules\x18\x01 \x01(\v2 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n" + "\x1cMachineServiceCreateResponse\x124\n" + "\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\xef\x02\n" + "\x1bMachineServiceUpdateRequest\x12\x1c\n" + @@ -4259,11 +4314,16 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + "\n" + "ntp_server\x18\x10 \x03(\v2\x1c.metalstack.api.v2.NTPServerB\b\xbaH\x05\x92\x01\x02\x10\n" + "R\tntpServer\x12/\n" + - "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"}\n" + - "\x18MachineAllocationNetwork\x12\x18\n" + - "\anetwork\x18\x01 \x01(\tR\anetwork\x120\n" + + "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8a\x01\n" + + "\x18MachineAllocationNetwork\x12%\n" + + "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x120\n" + "\x12no_auto_acquire_ip\x18\x02 \x01(\bH\x00R\x0fnoAutoAcquireIp\x88\x01\x01B\x15\n" + - "\x13_no_auto_acquire_ip\"\x90\x01\n" + + "\x13_no_auto_acquire_ip\"i\n" + + "\x13MachineAllocationIp\x12\x17\n" + + "\x02ip\x18\x01 \x01(\tB\a\xbaH\x04r\x02p\x01R\x02ip\x12+\n" + + "\tnamespace\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01B\f\n" + + "\n" + + "_namespace\"\x90\x01\n" + "\rFirewallRules\x12=\n" + "\x06egress\x18\x01 \x03(\v2%.metalstack.api.v2.FirewallEgressRuleR\x06egress\x12@\n" + "\aingress\x18\x02 \x03(\v2&.metalstack.api.v2.FirewallIngressRuleR\aingress\"\xd0\x01\n" + @@ -4572,7 +4632,7 @@ func file_metalstack_api_v2_machine_proto_rawDescGZIP() []byte { } var file_metalstack_api_v2_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_metalstack_api_v2_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_metalstack_api_v2_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 48) var file_metalstack_api_v2_machine_proto_goTypes = []any{ (IPProtocol)(0), // 0: metalstack.api.v2.IPProtocol (MachineState)(0), // 1: metalstack.api.v2.MachineState @@ -4601,140 +4661,142 @@ var file_metalstack_api_v2_machine_proto_goTypes = []any{ (*MachineCondition)(nil), // 24: metalstack.api.v2.MachineCondition (*MachineAllocation)(nil), // 25: metalstack.api.v2.MachineAllocation (*MachineAllocationNetwork)(nil), // 26: metalstack.api.v2.MachineAllocationNetwork - (*FirewallRules)(nil), // 27: metalstack.api.v2.FirewallRules - (*FirewallEgressRule)(nil), // 28: metalstack.api.v2.FirewallEgressRule - (*FirewallIngressRule)(nil), // 29: metalstack.api.v2.FirewallIngressRule - (*MachineNetwork)(nil), // 30: metalstack.api.v2.MachineNetwork - (*MachineHardware)(nil), // 31: metalstack.api.v2.MachineHardware - (*MetalCPU)(nil), // 32: metalstack.api.v2.MetalCPU - (*MetalGPU)(nil), // 33: metalstack.api.v2.MetalGPU - (*MachineNic)(nil), // 34: metalstack.api.v2.MachineNic - (*MachineBlockDevice)(nil), // 35: metalstack.api.v2.MachineBlockDevice - (*MachineChassisIdentifyLEDState)(nil), // 36: metalstack.api.v2.MachineChassisIdentifyLEDState - (*MachineBMCReport)(nil), // 37: metalstack.api.v2.MachineBMCReport - (*MachineBios)(nil), // 38: metalstack.api.v2.MachineBios - (*MachineBMC)(nil), // 39: metalstack.api.v2.MachineBMC - (*MachineFRU)(nil), // 40: metalstack.api.v2.MachineFRU - (*MachinePowerMetric)(nil), // 41: metalstack.api.v2.MachinePowerMetric - (*MachinePowerSupply)(nil), // 42: metalstack.api.v2.MachinePowerSupply - (*MachineRecentProvisioningEvents)(nil), // 43: metalstack.api.v2.MachineRecentProvisioningEvents - (*MachineProvisioningEvent)(nil), // 44: metalstack.api.v2.MachineProvisioningEvent - (*MachineVPN)(nil), // 45: metalstack.api.v2.MachineVPN - (*MachineQuery)(nil), // 46: metalstack.api.v2.MachineQuery - (*MachineAllocationQuery)(nil), // 47: metalstack.api.v2.MachineAllocationQuery - (*MachineNetworkQuery)(nil), // 48: metalstack.api.v2.MachineNetworkQuery - (*MachineNicQuery)(nil), // 49: metalstack.api.v2.MachineNicQuery - (*MachineDiskQuery)(nil), // 50: metalstack.api.v2.MachineDiskQuery - (*MachineBMCQuery)(nil), // 51: metalstack.api.v2.MachineBMCQuery - (*MachineFRUQuery)(nil), // 52: metalstack.api.v2.MachineFRUQuery - (*MachineHardwareQuery)(nil), // 53: metalstack.api.v2.MachineHardwareQuery - (*Labels)(nil), // 54: metalstack.api.v2.Labels - (*DNSServer)(nil), // 55: metalstack.api.v2.DNSServer - (*NTPServer)(nil), // 56: metalstack.api.v2.NTPServer - (*UpdateMeta)(nil), // 57: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 58: metalstack.api.v2.UpdateLabels - (*Meta)(nil), // 59: metalstack.api.v2.Meta - (*Partition)(nil), // 60: metalstack.api.v2.Partition - (*Size)(nil), // 61: metalstack.api.v2.Size - (*Image)(nil), // 62: metalstack.api.v2.Image - (*FilesystemLayout)(nil), // 63: metalstack.api.v2.FilesystemLayout - (NetworkType)(0), // 64: metalstack.api.v2.NetworkType - (NATType)(0), // 65: metalstack.api.v2.NATType - (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp + (*MachineAllocationIp)(nil), // 27: metalstack.api.v2.MachineAllocationIp + (*FirewallRules)(nil), // 28: metalstack.api.v2.FirewallRules + (*FirewallEgressRule)(nil), // 29: metalstack.api.v2.FirewallEgressRule + (*FirewallIngressRule)(nil), // 30: metalstack.api.v2.FirewallIngressRule + (*MachineNetwork)(nil), // 31: metalstack.api.v2.MachineNetwork + (*MachineHardware)(nil), // 32: metalstack.api.v2.MachineHardware + (*MetalCPU)(nil), // 33: metalstack.api.v2.MetalCPU + (*MetalGPU)(nil), // 34: metalstack.api.v2.MetalGPU + (*MachineNic)(nil), // 35: metalstack.api.v2.MachineNic + (*MachineBlockDevice)(nil), // 36: metalstack.api.v2.MachineBlockDevice + (*MachineChassisIdentifyLEDState)(nil), // 37: metalstack.api.v2.MachineChassisIdentifyLEDState + (*MachineBMCReport)(nil), // 38: metalstack.api.v2.MachineBMCReport + (*MachineBios)(nil), // 39: metalstack.api.v2.MachineBios + (*MachineBMC)(nil), // 40: metalstack.api.v2.MachineBMC + (*MachineFRU)(nil), // 41: metalstack.api.v2.MachineFRU + (*MachinePowerMetric)(nil), // 42: metalstack.api.v2.MachinePowerMetric + (*MachinePowerSupply)(nil), // 43: metalstack.api.v2.MachinePowerSupply + (*MachineRecentProvisioningEvents)(nil), // 44: metalstack.api.v2.MachineRecentProvisioningEvents + (*MachineProvisioningEvent)(nil), // 45: metalstack.api.v2.MachineProvisioningEvent + (*MachineVPN)(nil), // 46: metalstack.api.v2.MachineVPN + (*MachineQuery)(nil), // 47: metalstack.api.v2.MachineQuery + (*MachineAllocationQuery)(nil), // 48: metalstack.api.v2.MachineAllocationQuery + (*MachineNetworkQuery)(nil), // 49: metalstack.api.v2.MachineNetworkQuery + (*MachineNicQuery)(nil), // 50: metalstack.api.v2.MachineNicQuery + (*MachineDiskQuery)(nil), // 51: metalstack.api.v2.MachineDiskQuery + (*MachineBMCQuery)(nil), // 52: metalstack.api.v2.MachineBMCQuery + (*MachineFRUQuery)(nil), // 53: metalstack.api.v2.MachineFRUQuery + (*MachineHardwareQuery)(nil), // 54: metalstack.api.v2.MachineHardwareQuery + (*Labels)(nil), // 55: metalstack.api.v2.Labels + (*DNSServer)(nil), // 56: metalstack.api.v2.DNSServer + (*NTPServer)(nil), // 57: metalstack.api.v2.NTPServer + (*UpdateMeta)(nil), // 58: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 59: metalstack.api.v2.UpdateLabels + (*Meta)(nil), // 60: metalstack.api.v2.Meta + (*Partition)(nil), // 61: metalstack.api.v2.Partition + (*Size)(nil), // 62: metalstack.api.v2.Size + (*Image)(nil), // 63: metalstack.api.v2.Image + (*FilesystemLayout)(nil), // 64: metalstack.api.v2.FilesystemLayout + (NetworkType)(0), // 65: metalstack.api.v2.NetworkType + (NATType)(0), // 66: metalstack.api.v2.NATType + (*timestamppb.Timestamp)(nil), // 67: google.protobuf.Timestamp } var file_metalstack_api_v2_machine_proto_depIdxs = []int32{ 22, // 0: metalstack.api.v2.MachineServiceGetResponse.machine:type_name -> metalstack.api.v2.Machine - 54, // 1: metalstack.api.v2.MachineServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 55, // 1: metalstack.api.v2.MachineServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels 26, // 2: metalstack.api.v2.MachineServiceCreateRequest.networks:type_name -> metalstack.api.v2.MachineAllocationNetwork - 55, // 3: metalstack.api.v2.MachineServiceCreateRequest.dns_server:type_name -> metalstack.api.v2.DNSServer - 56, // 4: metalstack.api.v2.MachineServiceCreateRequest.ntp_server:type_name -> metalstack.api.v2.NTPServer - 5, // 5: metalstack.api.v2.MachineServiceCreateRequest.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 10, // 6: metalstack.api.v2.MachineServiceCreateRequest.firewall_spec:type_name -> metalstack.api.v2.FirewallSpec - 27, // 7: metalstack.api.v2.FirewallSpec.firewall_rules:type_name -> metalstack.api.v2.FirewallRules - 22, // 8: metalstack.api.v2.MachineServiceCreateResponse.machine:type_name -> metalstack.api.v2.Machine - 57, // 9: metalstack.api.v2.MachineServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 58, // 10: metalstack.api.v2.MachineServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels - 22, // 11: metalstack.api.v2.MachineServiceUpdateResponse.machine:type_name -> metalstack.api.v2.Machine - 46, // 12: metalstack.api.v2.MachineServiceListRequest.query:type_name -> metalstack.api.v2.MachineQuery - 22, // 13: metalstack.api.v2.MachineServiceListResponse.machines:type_name -> metalstack.api.v2.Machine - 22, // 14: metalstack.api.v2.MachineServiceDeleteResponse.machine:type_name -> metalstack.api.v2.Machine - 6, // 15: metalstack.api.v2.MachineServiceBMCCommandRequest.command:type_name -> metalstack.api.v2.MachineBMCCommand - 37, // 16: metalstack.api.v2.MachineServiceGetBMCResponse.bmc:type_name -> metalstack.api.v2.MachineBMCReport - 59, // 17: metalstack.api.v2.Machine.meta:type_name -> metalstack.api.v2.Meta - 60, // 18: metalstack.api.v2.Machine.partition:type_name -> metalstack.api.v2.Partition - 61, // 19: metalstack.api.v2.Machine.size:type_name -> metalstack.api.v2.Size - 31, // 20: metalstack.api.v2.Machine.hardware:type_name -> metalstack.api.v2.MachineHardware - 25, // 21: metalstack.api.v2.Machine.allocation:type_name -> metalstack.api.v2.MachineAllocation - 23, // 22: metalstack.api.v2.Machine.status:type_name -> metalstack.api.v2.MachineStatus - 43, // 23: metalstack.api.v2.Machine.recent_provisioning_events:type_name -> metalstack.api.v2.MachineRecentProvisioningEvents - 24, // 24: metalstack.api.v2.MachineStatus.condition:type_name -> metalstack.api.v2.MachineCondition - 36, // 25: metalstack.api.v2.MachineStatus.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState - 4, // 26: metalstack.api.v2.MachineStatus.liveliness:type_name -> metalstack.api.v2.MachineLiveliness - 1, // 27: metalstack.api.v2.MachineCondition.state:type_name -> metalstack.api.v2.MachineState - 59, // 28: metalstack.api.v2.MachineAllocation.meta:type_name -> metalstack.api.v2.Meta - 62, // 29: metalstack.api.v2.MachineAllocation.image:type_name -> metalstack.api.v2.Image - 63, // 30: metalstack.api.v2.MachineAllocation.filesystem_layout:type_name -> metalstack.api.v2.FilesystemLayout - 30, // 31: metalstack.api.v2.MachineAllocation.networks:type_name -> metalstack.api.v2.MachineNetwork - 5, // 32: metalstack.api.v2.MachineAllocation.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 27, // 33: metalstack.api.v2.MachineAllocation.firewall_rules:type_name -> metalstack.api.v2.FirewallRules - 55, // 34: metalstack.api.v2.MachineAllocation.dns_server:type_name -> metalstack.api.v2.DNSServer - 56, // 35: metalstack.api.v2.MachineAllocation.ntp_server:type_name -> metalstack.api.v2.NTPServer - 45, // 36: metalstack.api.v2.MachineAllocation.vpn:type_name -> metalstack.api.v2.MachineVPN - 28, // 37: metalstack.api.v2.FirewallRules.egress:type_name -> metalstack.api.v2.FirewallEgressRule - 29, // 38: metalstack.api.v2.FirewallRules.ingress:type_name -> metalstack.api.v2.FirewallIngressRule - 0, // 39: metalstack.api.v2.FirewallEgressRule.protocol:type_name -> metalstack.api.v2.IPProtocol - 0, // 40: metalstack.api.v2.FirewallIngressRule.protocol:type_name -> metalstack.api.v2.IPProtocol - 64, // 41: metalstack.api.v2.MachineNetwork.network_type:type_name -> metalstack.api.v2.NetworkType - 65, // 42: metalstack.api.v2.MachineNetwork.nat_type:type_name -> metalstack.api.v2.NATType - 35, // 43: metalstack.api.v2.MachineHardware.disks:type_name -> metalstack.api.v2.MachineBlockDevice - 32, // 44: metalstack.api.v2.MachineHardware.cpus:type_name -> metalstack.api.v2.MetalCPU - 33, // 45: metalstack.api.v2.MachineHardware.gpus:type_name -> metalstack.api.v2.MetalGPU - 34, // 46: metalstack.api.v2.MachineHardware.nics:type_name -> metalstack.api.v2.MachineNic - 34, // 47: metalstack.api.v2.MachineNic.neighbors:type_name -> metalstack.api.v2.MachineNic - 39, // 48: metalstack.api.v2.MachineBMCReport.bmc:type_name -> metalstack.api.v2.MachineBMC - 38, // 49: metalstack.api.v2.MachineBMCReport.bios:type_name -> metalstack.api.v2.MachineBios - 40, // 50: metalstack.api.v2.MachineBMCReport.fru:type_name -> metalstack.api.v2.MachineFRU - 41, // 51: metalstack.api.v2.MachineBMCReport.power_metric:type_name -> metalstack.api.v2.MachinePowerMetric - 42, // 52: metalstack.api.v2.MachineBMCReport.power_supplies:type_name -> metalstack.api.v2.MachinePowerSupply - 36, // 53: metalstack.api.v2.MachineBMCReport.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState - 66, // 54: metalstack.api.v2.MachineBMCReport.updated_at:type_name -> google.protobuf.Timestamp - 44, // 55: metalstack.api.v2.MachineRecentProvisioningEvents.events:type_name -> metalstack.api.v2.MachineProvisioningEvent - 66, // 56: metalstack.api.v2.MachineRecentProvisioningEvents.last_event_time:type_name -> google.protobuf.Timestamp - 44, // 57: metalstack.api.v2.MachineRecentProvisioningEvents.last_error_event:type_name -> metalstack.api.v2.MachineProvisioningEvent - 2, // 58: metalstack.api.v2.MachineRecentProvisioningEvents.state:type_name -> metalstack.api.v2.MachineProvisioningEventState - 66, // 59: metalstack.api.v2.MachineProvisioningEvent.time:type_name -> google.protobuf.Timestamp - 3, // 60: metalstack.api.v2.MachineProvisioningEvent.event:type_name -> metalstack.api.v2.MachineProvisioningEventType - 54, // 61: metalstack.api.v2.MachineQuery.labels:type_name -> metalstack.api.v2.Labels - 47, // 62: metalstack.api.v2.MachineQuery.allocation:type_name -> metalstack.api.v2.MachineAllocationQuery - 48, // 63: metalstack.api.v2.MachineQuery.network:type_name -> metalstack.api.v2.MachineNetworkQuery - 49, // 64: metalstack.api.v2.MachineQuery.nic:type_name -> metalstack.api.v2.MachineNicQuery - 50, // 65: metalstack.api.v2.MachineQuery.disk:type_name -> metalstack.api.v2.MachineDiskQuery - 51, // 66: metalstack.api.v2.MachineQuery.bmc:type_name -> metalstack.api.v2.MachineBMCQuery - 52, // 67: metalstack.api.v2.MachineQuery.fru:type_name -> metalstack.api.v2.MachineFRUQuery - 53, // 68: metalstack.api.v2.MachineQuery.hardware:type_name -> metalstack.api.v2.MachineHardwareQuery - 1, // 69: metalstack.api.v2.MachineQuery.state:type_name -> metalstack.api.v2.MachineState - 5, // 70: metalstack.api.v2.MachineAllocationQuery.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 54, // 71: metalstack.api.v2.MachineAllocationQuery.labels:type_name -> metalstack.api.v2.Labels - 45, // 72: metalstack.api.v2.MachineAllocationQuery.vpn:type_name -> metalstack.api.v2.MachineVPN - 7, // 73: metalstack.api.v2.MachineService.Get:input_type -> metalstack.api.v2.MachineServiceGetRequest - 9, // 74: metalstack.api.v2.MachineService.Create:input_type -> metalstack.api.v2.MachineServiceCreateRequest - 12, // 75: metalstack.api.v2.MachineService.Update:input_type -> metalstack.api.v2.MachineServiceUpdateRequest - 14, // 76: metalstack.api.v2.MachineService.List:input_type -> metalstack.api.v2.MachineServiceListRequest - 16, // 77: metalstack.api.v2.MachineService.Delete:input_type -> metalstack.api.v2.MachineServiceDeleteRequest - 18, // 78: metalstack.api.v2.MachineService.BMCCommand:input_type -> metalstack.api.v2.MachineServiceBMCCommandRequest - 20, // 79: metalstack.api.v2.MachineService.GetBMC:input_type -> metalstack.api.v2.MachineServiceGetBMCRequest - 8, // 80: metalstack.api.v2.MachineService.Get:output_type -> metalstack.api.v2.MachineServiceGetResponse - 11, // 81: metalstack.api.v2.MachineService.Create:output_type -> metalstack.api.v2.MachineServiceCreateResponse - 13, // 82: metalstack.api.v2.MachineService.Update:output_type -> metalstack.api.v2.MachineServiceUpdateResponse - 15, // 83: metalstack.api.v2.MachineService.List:output_type -> metalstack.api.v2.MachineServiceListResponse - 17, // 84: metalstack.api.v2.MachineService.Delete:output_type -> metalstack.api.v2.MachineServiceDeleteResponse - 19, // 85: metalstack.api.v2.MachineService.BMCCommand:output_type -> metalstack.api.v2.MachineServiceBMCCommandResponse - 21, // 86: metalstack.api.v2.MachineService.GetBMC:output_type -> metalstack.api.v2.MachineServiceGetBMCResponse - 80, // [80:87] is the sub-list for method output_type - 73, // [73:80] is the sub-list for method input_type - 73, // [73:73] is the sub-list for extension type_name - 73, // [73:73] is the sub-list for extension extendee - 0, // [0:73] is the sub-list for field type_name + 27, // 3: metalstack.api.v2.MachineServiceCreateRequest.ips:type_name -> metalstack.api.v2.MachineAllocationIp + 56, // 4: metalstack.api.v2.MachineServiceCreateRequest.dns_server:type_name -> metalstack.api.v2.DNSServer + 57, // 5: metalstack.api.v2.MachineServiceCreateRequest.ntp_server:type_name -> metalstack.api.v2.NTPServer + 5, // 6: metalstack.api.v2.MachineServiceCreateRequest.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 10, // 7: metalstack.api.v2.MachineServiceCreateRequest.firewall_spec:type_name -> metalstack.api.v2.FirewallSpec + 28, // 8: metalstack.api.v2.FirewallSpec.firewall_rules:type_name -> metalstack.api.v2.FirewallRules + 22, // 9: metalstack.api.v2.MachineServiceCreateResponse.machine:type_name -> metalstack.api.v2.Machine + 58, // 10: metalstack.api.v2.MachineServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 59, // 11: metalstack.api.v2.MachineServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 22, // 12: metalstack.api.v2.MachineServiceUpdateResponse.machine:type_name -> metalstack.api.v2.Machine + 47, // 13: metalstack.api.v2.MachineServiceListRequest.query:type_name -> metalstack.api.v2.MachineQuery + 22, // 14: metalstack.api.v2.MachineServiceListResponse.machines:type_name -> metalstack.api.v2.Machine + 22, // 15: metalstack.api.v2.MachineServiceDeleteResponse.machine:type_name -> metalstack.api.v2.Machine + 6, // 16: metalstack.api.v2.MachineServiceBMCCommandRequest.command:type_name -> metalstack.api.v2.MachineBMCCommand + 38, // 17: metalstack.api.v2.MachineServiceGetBMCResponse.bmc:type_name -> metalstack.api.v2.MachineBMCReport + 60, // 18: metalstack.api.v2.Machine.meta:type_name -> metalstack.api.v2.Meta + 61, // 19: metalstack.api.v2.Machine.partition:type_name -> metalstack.api.v2.Partition + 62, // 20: metalstack.api.v2.Machine.size:type_name -> metalstack.api.v2.Size + 32, // 21: metalstack.api.v2.Machine.hardware:type_name -> metalstack.api.v2.MachineHardware + 25, // 22: metalstack.api.v2.Machine.allocation:type_name -> metalstack.api.v2.MachineAllocation + 23, // 23: metalstack.api.v2.Machine.status:type_name -> metalstack.api.v2.MachineStatus + 44, // 24: metalstack.api.v2.Machine.recent_provisioning_events:type_name -> metalstack.api.v2.MachineRecentProvisioningEvents + 24, // 25: metalstack.api.v2.MachineStatus.condition:type_name -> metalstack.api.v2.MachineCondition + 37, // 26: metalstack.api.v2.MachineStatus.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState + 4, // 27: metalstack.api.v2.MachineStatus.liveliness:type_name -> metalstack.api.v2.MachineLiveliness + 1, // 28: metalstack.api.v2.MachineCondition.state:type_name -> metalstack.api.v2.MachineState + 60, // 29: metalstack.api.v2.MachineAllocation.meta:type_name -> metalstack.api.v2.Meta + 63, // 30: metalstack.api.v2.MachineAllocation.image:type_name -> metalstack.api.v2.Image + 64, // 31: metalstack.api.v2.MachineAllocation.filesystem_layout:type_name -> metalstack.api.v2.FilesystemLayout + 31, // 32: metalstack.api.v2.MachineAllocation.networks:type_name -> metalstack.api.v2.MachineNetwork + 5, // 33: metalstack.api.v2.MachineAllocation.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 28, // 34: metalstack.api.v2.MachineAllocation.firewall_rules:type_name -> metalstack.api.v2.FirewallRules + 56, // 35: metalstack.api.v2.MachineAllocation.dns_server:type_name -> metalstack.api.v2.DNSServer + 57, // 36: metalstack.api.v2.MachineAllocation.ntp_server:type_name -> metalstack.api.v2.NTPServer + 46, // 37: metalstack.api.v2.MachineAllocation.vpn:type_name -> metalstack.api.v2.MachineVPN + 29, // 38: metalstack.api.v2.FirewallRules.egress:type_name -> metalstack.api.v2.FirewallEgressRule + 30, // 39: metalstack.api.v2.FirewallRules.ingress:type_name -> metalstack.api.v2.FirewallIngressRule + 0, // 40: metalstack.api.v2.FirewallEgressRule.protocol:type_name -> metalstack.api.v2.IPProtocol + 0, // 41: metalstack.api.v2.FirewallIngressRule.protocol:type_name -> metalstack.api.v2.IPProtocol + 65, // 42: metalstack.api.v2.MachineNetwork.network_type:type_name -> metalstack.api.v2.NetworkType + 66, // 43: metalstack.api.v2.MachineNetwork.nat_type:type_name -> metalstack.api.v2.NATType + 36, // 44: metalstack.api.v2.MachineHardware.disks:type_name -> metalstack.api.v2.MachineBlockDevice + 33, // 45: metalstack.api.v2.MachineHardware.cpus:type_name -> metalstack.api.v2.MetalCPU + 34, // 46: metalstack.api.v2.MachineHardware.gpus:type_name -> metalstack.api.v2.MetalGPU + 35, // 47: metalstack.api.v2.MachineHardware.nics:type_name -> metalstack.api.v2.MachineNic + 35, // 48: metalstack.api.v2.MachineNic.neighbors:type_name -> metalstack.api.v2.MachineNic + 40, // 49: metalstack.api.v2.MachineBMCReport.bmc:type_name -> metalstack.api.v2.MachineBMC + 39, // 50: metalstack.api.v2.MachineBMCReport.bios:type_name -> metalstack.api.v2.MachineBios + 41, // 51: metalstack.api.v2.MachineBMCReport.fru:type_name -> metalstack.api.v2.MachineFRU + 42, // 52: metalstack.api.v2.MachineBMCReport.power_metric:type_name -> metalstack.api.v2.MachinePowerMetric + 43, // 53: metalstack.api.v2.MachineBMCReport.power_supplies:type_name -> metalstack.api.v2.MachinePowerSupply + 37, // 54: metalstack.api.v2.MachineBMCReport.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState + 67, // 55: metalstack.api.v2.MachineBMCReport.updated_at:type_name -> google.protobuf.Timestamp + 45, // 56: metalstack.api.v2.MachineRecentProvisioningEvents.events:type_name -> metalstack.api.v2.MachineProvisioningEvent + 67, // 57: metalstack.api.v2.MachineRecentProvisioningEvents.last_event_time:type_name -> google.protobuf.Timestamp + 45, // 58: metalstack.api.v2.MachineRecentProvisioningEvents.last_error_event:type_name -> metalstack.api.v2.MachineProvisioningEvent + 2, // 59: metalstack.api.v2.MachineRecentProvisioningEvents.state:type_name -> metalstack.api.v2.MachineProvisioningEventState + 67, // 60: metalstack.api.v2.MachineProvisioningEvent.time:type_name -> google.protobuf.Timestamp + 3, // 61: metalstack.api.v2.MachineProvisioningEvent.event:type_name -> metalstack.api.v2.MachineProvisioningEventType + 55, // 62: metalstack.api.v2.MachineQuery.labels:type_name -> metalstack.api.v2.Labels + 48, // 63: metalstack.api.v2.MachineQuery.allocation:type_name -> metalstack.api.v2.MachineAllocationQuery + 49, // 64: metalstack.api.v2.MachineQuery.network:type_name -> metalstack.api.v2.MachineNetworkQuery + 50, // 65: metalstack.api.v2.MachineQuery.nic:type_name -> metalstack.api.v2.MachineNicQuery + 51, // 66: metalstack.api.v2.MachineQuery.disk:type_name -> metalstack.api.v2.MachineDiskQuery + 52, // 67: metalstack.api.v2.MachineQuery.bmc:type_name -> metalstack.api.v2.MachineBMCQuery + 53, // 68: metalstack.api.v2.MachineQuery.fru:type_name -> metalstack.api.v2.MachineFRUQuery + 54, // 69: metalstack.api.v2.MachineQuery.hardware:type_name -> metalstack.api.v2.MachineHardwareQuery + 1, // 70: metalstack.api.v2.MachineQuery.state:type_name -> metalstack.api.v2.MachineState + 5, // 71: metalstack.api.v2.MachineAllocationQuery.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 55, // 72: metalstack.api.v2.MachineAllocationQuery.labels:type_name -> metalstack.api.v2.Labels + 46, // 73: metalstack.api.v2.MachineAllocationQuery.vpn:type_name -> metalstack.api.v2.MachineVPN + 7, // 74: metalstack.api.v2.MachineService.Get:input_type -> metalstack.api.v2.MachineServiceGetRequest + 9, // 75: metalstack.api.v2.MachineService.Create:input_type -> metalstack.api.v2.MachineServiceCreateRequest + 12, // 76: metalstack.api.v2.MachineService.Update:input_type -> metalstack.api.v2.MachineServiceUpdateRequest + 14, // 77: metalstack.api.v2.MachineService.List:input_type -> metalstack.api.v2.MachineServiceListRequest + 16, // 78: metalstack.api.v2.MachineService.Delete:input_type -> metalstack.api.v2.MachineServiceDeleteRequest + 18, // 79: metalstack.api.v2.MachineService.BMCCommand:input_type -> metalstack.api.v2.MachineServiceBMCCommandRequest + 20, // 80: metalstack.api.v2.MachineService.GetBMC:input_type -> metalstack.api.v2.MachineServiceGetBMCRequest + 8, // 81: metalstack.api.v2.MachineService.Get:output_type -> metalstack.api.v2.MachineServiceGetResponse + 11, // 82: metalstack.api.v2.MachineService.Create:output_type -> metalstack.api.v2.MachineServiceCreateResponse + 13, // 83: metalstack.api.v2.MachineService.Update:output_type -> metalstack.api.v2.MachineServiceUpdateResponse + 15, // 84: metalstack.api.v2.MachineService.List:output_type -> metalstack.api.v2.MachineServiceListResponse + 17, // 85: metalstack.api.v2.MachineService.Delete:output_type -> metalstack.api.v2.MachineServiceDeleteResponse + 19, // 86: metalstack.api.v2.MachineService.BMCCommand:output_type -> metalstack.api.v2.MachineServiceBMCCommandResponse + 21, // 87: metalstack.api.v2.MachineService.GetBMC:output_type -> metalstack.api.v2.MachineServiceGetBMCResponse + 81, // [81:88] is the sub-list for method output_type + 74, // [74:81] is the sub-list for method input_type + 74, // [74:74] is the sub-list for extension type_name + 74, // [74:74] is the sub-list for extension extendee + 0, // [0:74] is the sub-list for field type_name } func init() { file_metalstack_api_v2_machine_proto_init() } @@ -4752,19 +4814,20 @@ func file_metalstack_api_v2_machine_proto_init() { file_metalstack_api_v2_machine_proto_msgTypes[2].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[5].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[19].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[33].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[39].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[20].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[34].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[40].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[44].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[41].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[45].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[46].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[47].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_machine_proto_rawDesc), len(file_metalstack_api_v2_machine_proto_rawDesc)), NumEnums: 7, - NumMessages: 47, + NumMessages: 48, NumExtensions: 0, NumServices: 1, }, diff --git a/js/metalstack/api/v2/machine_pb.d.ts b/js/metalstack/api/v2/machine_pb.d.ts index 29aa9fc9..d6ea337d 100644 --- a/js/metalstack/api/v2/machine_pb.d.ts +++ b/js/metalstack/api/v2/machine_pb.d.ts @@ -144,9 +144,9 @@ export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServ /** * IPs to to attach to this machine additionally * - * @generated from field: repeated string ips = 14; + * @generated from field: repeated metalstack.api.v2.MachineAllocationIp ips = 14; */ - ips: string[]; + ips: MachineAllocationIp[]; /** * PlacementTags by default machines are spread across the racks inside a partition for every project. * if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags @@ -193,7 +193,7 @@ export type FirewallSpec = Message<"metalstack.api.v2.FirewallSpec"> & { /** * FirewallRules to be applied if this is a firewall * - * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 19; + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 1; */ firewallRules?: FirewallRules; }; @@ -731,6 +731,30 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat * Use `create(MachineAllocationNetworkSchema)` to create a new message. */ export declare const MachineAllocationNetworkSchema: GenMessage; +/** + * MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create + * + * @generated from message metalstack.api.v2.MachineAllocationIp + */ +export type MachineAllocationIp = Message<"metalstack.api.v2.MachineAllocationIp"> & { + /** + * IP to to attach to this machine additionally + * + * @generated from field: string ip = 1; + */ + ip: string; + /** + * Namespace where this ip was created, usually the project of the namespaced tenant network. + * + * @generated from field: optional string namespace = 2; + */ + namespace?: string; +}; +/** + * Describes the message metalstack.api.v2.MachineAllocationIp. + * Use `create(MachineAllocationIpSchema)` to create a new message. + */ +export declare const MachineAllocationIpSchema: GenMessage; /** * FirewallRules can be defined during firewall allocation * diff --git a/js/metalstack/api/v2/machine_pb.js b/js/metalstack/api/v2/machine_pb.js index 05f7e1cd..a38be328 100644 --- a/js/metalstack/api/v2/machine_pb.js +++ b/js/metalstack/api/v2/machine_pb.js @@ -14,7 +14,7 @@ import { file_metalstack_api_v2_size } from "./size_pb"; /** * Describes the file metalstack/api/v2/machine.proto. */ -export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBsCks7ECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEivgYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); +export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL9BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4icAoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEhwKB25ldHdvcmsYASABKAlCC7pICHIGwLOusQIBEh8KEm5vX2F1dG9fYWNxdWlyZV9pcBgCIAEoCEgAiAEBQhUKE19ub19hdXRvX2FjcXVpcmVfaXAiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEivgYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * Describes the message metalstack.api.v2.MachineServiceGetRequest. * Use `create(MachineServiceGetRequestSchema)` to create a new message. @@ -115,141 +115,146 @@ export const MachineAllocationSchema = /*@__PURE__*/ messageDesc(file_metalstack * Use `create(MachineAllocationNetworkSchema)` to create a new message. */ export const MachineAllocationNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 19); +/** + * Describes the message metalstack.api.v2.MachineAllocationIp. + * Use `create(MachineAllocationIpSchema)` to create a new message. + */ +export const MachineAllocationIpSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20); /** * Describes the message metalstack.api.v2.FirewallRules. * Use `create(FirewallRulesSchema)` to create a new message. */ -export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20); +export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21); /** * Describes the message metalstack.api.v2.FirewallEgressRule. * Use `create(FirewallEgressRuleSchema)` to create a new message. */ -export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21); +export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22); /** * Describes the message metalstack.api.v2.FirewallIngressRule. * Use `create(FirewallIngressRuleSchema)` to create a new message. */ -export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22); +export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23); /** * Describes the message metalstack.api.v2.MachineNetwork. * Use `create(MachineNetworkSchema)` to create a new message. */ -export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23); +export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24); /** * Describes the message metalstack.api.v2.MachineHardware. * Use `create(MachineHardwareSchema)` to create a new message. */ -export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24); +export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25); /** * Describes the message metalstack.api.v2.MetalCPU. * Use `create(MetalCPUSchema)` to create a new message. */ -export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25); +export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26); /** * Describes the message metalstack.api.v2.MetalGPU. * Use `create(MetalGPUSchema)` to create a new message. */ -export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26); +export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27); /** * Describes the message metalstack.api.v2.MachineNic. * Use `create(MachineNicSchema)` to create a new message. */ -export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27); +export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28); /** * Describes the message metalstack.api.v2.MachineBlockDevice. * Use `create(MachineBlockDeviceSchema)` to create a new message. */ -export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28); +export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29); /** * Describes the message metalstack.api.v2.MachineChassisIdentifyLEDState. * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. */ -export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29); +export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30); /** * Describes the message metalstack.api.v2.MachineBMCReport. * Use `create(MachineBMCReportSchema)` to create a new message. */ -export const MachineBMCReportSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30); +export const MachineBMCReportSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31); /** * Describes the message metalstack.api.v2.MachineBios. * Use `create(MachineBiosSchema)` to create a new message. */ -export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31); +export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32); /** * Describes the message metalstack.api.v2.MachineBMC. * Use `create(MachineBMCSchema)` to create a new message. */ -export const MachineBMCSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32); +export const MachineBMCSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33); /** * Describes the message metalstack.api.v2.MachineFRU. * Use `create(MachineFRUSchema)` to create a new message. */ -export const MachineFRUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33); +export const MachineFRUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34); /** * Describes the message metalstack.api.v2.MachinePowerMetric. * Use `create(MachinePowerMetricSchema)` to create a new message. */ -export const MachinePowerMetricSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34); +export const MachinePowerMetricSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35); /** * Describes the message metalstack.api.v2.MachinePowerSupply. * Use `create(MachinePowerSupplySchema)` to create a new message. */ -export const MachinePowerSupplySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35); +export const MachinePowerSupplySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36); /** * Describes the message metalstack.api.v2.MachineRecentProvisioningEvents. * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. */ -export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36); +export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37); /** * Describes the message metalstack.api.v2.MachineProvisioningEvent. * Use `create(MachineProvisioningEventSchema)` to create a new message. */ -export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37); +export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 38); /** * Describes the message metalstack.api.v2.MachineVPN. * Use `create(MachineVPNSchema)` to create a new message. */ -export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 38); +export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 39); /** * Describes the message metalstack.api.v2.MachineQuery. * Use `create(MachineQuerySchema)` to create a new message. */ -export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 39); +export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 40); /** * Describes the message metalstack.api.v2.MachineAllocationQuery. * Use `create(MachineAllocationQuerySchema)` to create a new message. */ -export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 40); +export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 41); /** * Describes the message metalstack.api.v2.MachineNetworkQuery. * Use `create(MachineNetworkQuerySchema)` to create a new message. */ -export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 41); +export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 42); /** * Describes the message metalstack.api.v2.MachineNicQuery. * Use `create(MachineNicQuerySchema)` to create a new message. */ -export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 42); +export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 43); /** * Describes the message metalstack.api.v2.MachineDiskQuery. * Use `create(MachineDiskQuerySchema)` to create a new message. */ -export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 43); +export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 44); /** * Describes the message metalstack.api.v2.MachineBMCQuery. * Use `create(MachineBMCQuerySchema)` to create a new message. */ -export const MachineBMCQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 44); +export const MachineBMCQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 45); /** * Describes the message metalstack.api.v2.MachineFRUQuery. * Use `create(MachineFRUQuerySchema)` to create a new message. */ -export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 45); +export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 46); /** * Describes the message metalstack.api.v2.MachineHardwareQuery. * Use `create(MachineHardwareQuerySchema)` to create a new message. */ -export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 46); +export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 47); /** * IPProtocol defines tcp|udp * diff --git a/js/metalstack/api/v2/machine_pb.ts b/js/metalstack/api/v2/machine_pb.ts index 4d8d1bcf..712331b1 100644 --- a/js/metalstack/api/v2/machine_pb.ts +++ b/js/metalstack/api/v2/machine_pb.ts @@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/api/v2/machine.proto. */ export const file_metalstack_api_v2_machine: GenFile = /*@__PURE__*/ - fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBsCks7ECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEivgYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL9BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4icAoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEhwKB25ldHdvcmsYASABKAlCC7pICHIGwLOusQIBEh8KEm5vX2F1dG9fYWNxdWlyZV9pcBgCIAEoCEgAiAEBQhUKE19ub19hdXRvX2FjcXVpcmVfaXAiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEivgYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * MachineServiceGetRequest is the request payload for a machine get request @@ -181,9 +181,9 @@ export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServ /** * IPs to to attach to this machine additionally * - * @generated from field: repeated string ips = 14; + * @generated from field: repeated metalstack.api.v2.MachineAllocationIp ips = 14; */ - ips: string[]; + ips: MachineAllocationIp[]; /** * PlacementTags by default machines are spread across the racks inside a partition for every project. @@ -238,7 +238,7 @@ export type FirewallSpec = Message<"metalstack.api.v2.FirewallSpec"> & { /** * FirewallRules to be applied if this is a firewall * - * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 19; + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 1; */ firewallRules?: FirewallRules; }; @@ -869,6 +869,34 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat export const MachineAllocationNetworkSchema: GenMessage = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 19); +/** + * MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create + * + * @generated from message metalstack.api.v2.MachineAllocationIp + */ +export type MachineAllocationIp = Message<"metalstack.api.v2.MachineAllocationIp"> & { + /** + * IP to to attach to this machine additionally + * + * @generated from field: string ip = 1; + */ + ip: string; + + /** + * Namespace where this ip was created, usually the project of the namespaced tenant network. + * + * @generated from field: optional string namespace = 2; + */ + namespace?: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineAllocationIp. + * Use `create(MachineAllocationIpSchema)` to create a new message. + */ +export const MachineAllocationIpSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 20); + /** * FirewallRules can be defined during firewall allocation * @@ -895,7 +923,7 @@ export type FirewallRules = Message<"metalstack.api.v2.FirewallRules"> & { * Use `create(FirewallRulesSchema)` to create a new message. */ export const FirewallRulesSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 20); + messageDesc(file_metalstack_api_v2_machine, 21); /** * FirewallEgressRule defines rules for outgoing traffic @@ -937,7 +965,7 @@ export type FirewallEgressRule = Message<"metalstack.api.v2.FirewallEgressRule"> * Use `create(FirewallEgressRuleSchema)` to create a new message. */ export const FirewallEgressRuleSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 21); + messageDesc(file_metalstack_api_v2_machine, 22); /** * FirewallIngressRule defines rules for incoming traffic @@ -986,7 +1014,7 @@ export type FirewallIngressRule = Message<"metalstack.api.v2.FirewallIngressRule * Use `create(FirewallIngressRuleSchema)` to create a new message. */ export const FirewallIngressRuleSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 22); + messageDesc(file_metalstack_api_v2_machine, 23); /** * MachineNetwork contains details which network should be created on a allocated machine @@ -1056,7 +1084,7 @@ export type MachineNetwork = Message<"metalstack.api.v2.MachineNetwork"> & { * Use `create(MachineNetworkSchema)` to create a new message. */ export const MachineNetworkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 23); + messageDesc(file_metalstack_api_v2_machine, 24); /** * MachineHardware contains hardware details @@ -1105,7 +1133,7 @@ export type MachineHardware = Message<"metalstack.api.v2.MachineHardware"> & { * Use `create(MachineHardwareSchema)` to create a new message. */ export const MachineHardwareSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 24); + messageDesc(file_metalstack_api_v2_machine, 25); /** * MetalCPU contains details of a cpu in this machine @@ -1147,7 +1175,7 @@ export type MetalCPU = Message<"metalstack.api.v2.MetalCPU"> & { * Use `create(MetalCPUSchema)` to create a new message. */ export const MetalCPUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 25); + messageDesc(file_metalstack_api_v2_machine, 26); /** * MetalGPU contains details of a gpu in this machine @@ -1175,7 +1203,7 @@ export type MetalGPU = Message<"metalstack.api.v2.MetalGPU"> & { * Use `create(MetalGPUSchema)` to create a new message. */ export const MetalGPUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 26); + messageDesc(file_metalstack_api_v2_machine, 27); /** * MachineNic contains details of a network interface of this machine @@ -1245,7 +1273,7 @@ export type MachineNic = Message<"metalstack.api.v2.MachineNic"> & { * Use `create(MachineNicSchema)` to create a new message. */ export const MachineNicSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 27); + messageDesc(file_metalstack_api_v2_machine, 28); /** * MachineBlockDevice contains details of a block device of this machine @@ -1273,7 +1301,7 @@ export type MachineBlockDevice = Message<"metalstack.api.v2.MachineBlockDevice"> * Use `create(MachineBlockDeviceSchema)` to create a new message. */ export const MachineBlockDeviceSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 28); + messageDesc(file_metalstack_api_v2_machine, 29); /** * MachineChassisIdentifyLEDState describes the identifier led state @@ -1301,7 +1329,7 @@ export type MachineChassisIdentifyLEDState = Message<"metalstack.api.v2.MachineC * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. */ export const MachineChassisIdentifyLEDStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 29); + messageDesc(file_metalstack_api_v2_machine, 30); /** * MachineBMCReport is sent from the metal-bmc to update bmc and power related details @@ -1364,7 +1392,7 @@ export type MachineBMCReport = Message<"metalstack.api.v2.MachineBMCReport"> & { * Use `create(MachineBMCReportSchema)` to create a new message. */ export const MachineBMCReportSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 30); + messageDesc(file_metalstack_api_v2_machine, 31); /** * MachineBios contains BIOS details of this machine @@ -1399,7 +1427,7 @@ export type MachineBios = Message<"metalstack.api.v2.MachineBios"> & { * Use `create(MachineBiosSchema)` to create a new message. */ export const MachineBiosSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 31); + messageDesc(file_metalstack_api_v2_machine, 32); /** * MachineBMC describe details of the ipmi or out of band device @@ -1462,7 +1490,7 @@ export type MachineBMC = Message<"metalstack.api.v2.MachineBMC"> & { * Use `create(MachineBMCSchema)` to create a new message. */ export const MachineBMCSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 32); + messageDesc(file_metalstack_api_v2_machine, 33); /** * MachineFRU describes details to the machine which are required in case of a necessary replacement @@ -1532,7 +1560,7 @@ export type MachineFRU = Message<"metalstack.api.v2.MachineFRU"> & { * Use `create(MachineFRUSchema)` to create a new message. */ export const MachineFRUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 33); + messageDesc(file_metalstack_api_v2_machine, 34); /** * MachinePowerMetric contains metrics of the power consumption of a machine @@ -1583,7 +1611,7 @@ export type MachinePowerMetric = Message<"metalstack.api.v2.MachinePowerMetric"> * Use `create(MachinePowerMetricSchema)` to create a new message. */ export const MachinePowerMetricSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 34); + messageDesc(file_metalstack_api_v2_machine, 35); /** * MachinePowerSupply contains details of the power supply of a machine @@ -1611,7 +1639,7 @@ export type MachinePowerSupply = Message<"metalstack.api.v2.MachinePowerSupply"> * Use `create(MachinePowerSupplySchema)` to create a new message. */ export const MachinePowerSupplySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 35); + messageDesc(file_metalstack_api_v2_machine, 36); /** * MachineRecentProvisioningEvents the recent provisioning events for this machine @@ -1653,7 +1681,7 @@ export type MachineRecentProvisioningEvents = Message<"metalstack.api.v2.Machine * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. */ export const MachineRecentProvisioningEventsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 36); + messageDesc(file_metalstack_api_v2_machine, 37); /** * MachineProvisioningEvent is a event which has occurred during provisioning @@ -1688,7 +1716,7 @@ export type MachineProvisioningEvent = Message<"metalstack.api.v2.MachineProvisi * Use `create(MachineProvisioningEventSchema)` to create a new message. */ export const MachineProvisioningEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 37); + messageDesc(file_metalstack_api_v2_machine, 38); /** * MachineVPN contains configuration data for the VPN connection @@ -1730,7 +1758,7 @@ export type MachineVPN = Message<"metalstack.api.v2.MachineVPN"> & { * Use `create(MachineVPNSchema)` to create a new message. */ export const MachineVPNSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 38); + messageDesc(file_metalstack_api_v2_machine, 39); /** * MachineQuery contains fields which can be specified to list specific machines. @@ -1842,7 +1870,7 @@ export type MachineQuery = Message<"metalstack.api.v2.MachineQuery"> & { * Use `create(MachineQuerySchema)` to create a new message. */ export const MachineQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 39); + messageDesc(file_metalstack_api_v2_machine, 40); /** * MachineAllocationQuery allocation specific query parameters @@ -1919,7 +1947,7 @@ export type MachineAllocationQuery = Message<"metalstack.api.v2.MachineAllocatio * Use `create(MachineAllocationQuerySchema)` to create a new message. */ export const MachineAllocationQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 40); + messageDesc(file_metalstack_api_v2_machine, 41); /** * MachineNetworkQuery network specific machine queries @@ -1975,7 +2003,7 @@ export type MachineNetworkQuery = Message<"metalstack.api.v2.MachineNetworkQuery * Use `create(MachineNetworkQuerySchema)` to create a new message. */ export const MachineNetworkQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 41); + messageDesc(file_metalstack_api_v2_machine, 42); /** * MachineNicQuery nic specific machine queries @@ -2017,7 +2045,7 @@ export type MachineNicQuery = Message<"metalstack.api.v2.MachineNicQuery"> & { * Use `create(MachineNicQuerySchema)` to create a new message. */ export const MachineNicQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 42); + messageDesc(file_metalstack_api_v2_machine, 43); /** * MachineDiskQuery disk specific machine queries @@ -2045,7 +2073,7 @@ export type MachineDiskQuery = Message<"metalstack.api.v2.MachineDiskQuery"> & { * Use `create(MachineDiskQuerySchema)` to create a new message. */ export const MachineDiskQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 43); + messageDesc(file_metalstack_api_v2_machine, 44); /** * MachineBMCQuery machine ipmi or bmc specific machine queries @@ -2087,7 +2115,7 @@ export type MachineBMCQuery = Message<"metalstack.api.v2.MachineBMCQuery"> & { * Use `create(MachineBMCQuerySchema)` to create a new message. */ export const MachineBMCQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 44); + messageDesc(file_metalstack_api_v2_machine, 45); /** * MachineFRUQuery machine fru specific machine queries @@ -2157,7 +2185,7 @@ export type MachineFRUQuery = Message<"metalstack.api.v2.MachineFRUQuery"> & { * Use `create(MachineFRUQuerySchema)` to create a new message. */ export const MachineFRUQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 45); + messageDesc(file_metalstack_api_v2_machine, 46); /** * MachineHardwareQuery machine hardware specific machine queries @@ -2185,7 +2213,7 @@ export type MachineHardwareQuery = Message<"metalstack.api.v2.MachineHardwareQue * Use `create(MachineHardwareQuerySchema)` to create a new message. */ export const MachineHardwareQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 46); + messageDesc(file_metalstack_api_v2_machine, 47); /** * IPProtocol defines tcp|udp diff --git a/proto/Makefile b/proto/Makefile index 6f935d68..1061e128 100644 --- a/proto/Makefile +++ b/proto/Makefile @@ -1,5 +1,5 @@ MAKEFLAGS += --no-print-directory -BUF_VERSION := 1.65.0 +BUF_VERSION := 1.66.0 _buf: docker run --rm \ diff --git a/proto/metalstack/api/v2/machine.proto b/proto/metalstack/api/v2/machine.proto index 0afe6b1d..acc7a1e1 100644 --- a/proto/metalstack/api/v2/machine.proto +++ b/proto/metalstack/api/v2/machine.proto @@ -119,10 +119,10 @@ message MachineServiceCreateRequest { // Networks the networks that this machine will be placed in. repeated MachineAllocationNetwork networks = 13; // IPs to to attach to this machine additionally - repeated string ips = 14 [(buf.validate.field).repeated.(metalstack.api.v2.ips) = true]; + repeated MachineAllocationIp ips = 14; // PlacementTags by default machines are spread across the racks inside a partition for every project. // if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags - repeated string placement_tags = 15; + repeated string placement_tags = 15 [(buf.validate.field).repeated.max_items = 64]; // DNSServer the dns servers used for the machine repeated DNSServer dns_server = 16 [(buf.validate.field).repeated.max_items = 3]; // NTPServer the ntp servers used for the machine @@ -136,7 +136,7 @@ message MachineServiceCreateRequest { // FirewallSpec contains firewall specific firewall creation parameters message FirewallSpec { // FirewallRules to be applied if this is a firewall - FirewallRules firewall_rules = 19; + FirewallRules firewall_rules = 1; } // MachineServiceCreateResponse is the request payload for a machine create response @@ -342,12 +342,20 @@ message MachineAllocation { // MachineAllocationNetwork defines which network should be attached to a machine and if ips should be autoacquired message MachineAllocationNetwork { // Network the id of the network that this machine will be placed in - string network = 1; + string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; // NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. // By default one ip address is acquired per network for the machine optional bool no_auto_acquire_ip = 2; } +// MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create +message MachineAllocationIp { + // IP to to attach to this machine additionally + string ip = 1 [(buf.validate.field).string.ip = true]; + // Namespace where this ip was created, usually the project of the namespaced tenant network. + optional string namespace = 2 [(buf.validate.field).string.uuid = true]; +} + // FirewallRules can be defined during firewall allocation message FirewallRules { // Egress list of egress rules to be deployed during firewall allocation diff --git a/python/metalstack/api/v2/machine_pb2.py b/python/metalstack/api/v2/machine_pb2.py index 31dd6efc..75f35512 100644 --- a/python/metalstack/api/v2/machine_pb2.py +++ b/python/metalstack/api/v2/machine_pb2.py @@ -33,7 +33,7 @@ from metalstack.api.v2 import size_pb2 as metalstack_dot_api_dot_v2_dot_size__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xa2\x08\n\x1bMachineServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12!\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12\x1e\n\x03ips\x18\x0e \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12%\n\x0eplacement_tags\x18\x0f \x03(\tR\rplacementTags\x12\x45\n\ndns_server\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x13 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xa8\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12\x45\n\ndns_server\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"}\n\x18MachineAllocationNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12\x30\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08H\x00R\x0fnoAutoAcquireIp\x88\x01\x01\x42\x15\n\x13_no_auto_acquire_ip\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xe7\x02\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xa4\x07\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_state\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xc6\x08\n\x1bMachineServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12!\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12\x38\n\x03ips\x18\x0e \x03(\x0b\x32&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n\x0eplacement_tags\x18\x0f \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12\x45\n\ndns_server\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xa8\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12\x45\n\ndns_server\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8a\x01\n\x18MachineAllocationNetwork\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x30\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08H\x00R\x0fnoAutoAcquireIp\x88\x01\x01\x42\x15\n\x13_no_auto_acquire_ip\"i\n\x13MachineAllocationIp\x12\x17\n\x02ip\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x02ip\x12+\n\tnamespace\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01\x42\x0c\n\n_namespace\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xe7\x02\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xa4\x07\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_state\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -141,8 +141,8 @@ _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['ssh_public_keys']._serialized_options = b'\272H\016\222\001\013\0202\"\007r\005\020\001\030\200@' _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['userdata']._loaded_options = None _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['userdata']._serialized_options = b'\272H\006r\004\030\200\200\002' - _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['ips']._loaded_options = None - _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['ips']._serialized_options = b'\272H\t\222\001\006\300\244\263\261\002\001' + _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['placement_tags']._loaded_options = None + _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['placement_tags']._serialized_options = b'\272H\005\222\001\002\020@' _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['dns_server']._loaded_options = None _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['dns_server']._serialized_options = b'\272H\005\222\001\002\020\003' _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['ntp_server']._loaded_options = None @@ -211,6 +211,12 @@ _globals['_MACHINEALLOCATION'].fields_by_name['dns_server']._serialized_options = b'\272H\005\222\001\002\020\003' _globals['_MACHINEALLOCATION'].fields_by_name['ntp_server']._loaded_options = None _globals['_MACHINEALLOCATION'].fields_by_name['ntp_server']._serialized_options = b'\272H\005\222\001\002\020\n' + _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['network']._loaded_options = None + _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_MACHINEALLOCATIONIP'].fields_by_name['ip']._loaded_options = None + _globals['_MACHINEALLOCATIONIP'].fields_by_name['ip']._serialized_options = b'\272H\004r\002p\001' + _globals['_MACHINEALLOCATIONIP'].fields_by_name['namespace']._loaded_options = None + _globals['_MACHINEALLOCATIONIP'].fields_by_name['namespace']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_FIREWALLEGRESSRULE'].fields_by_name['protocol']._loaded_options = None _globals['_FIREWALLEGRESSRULE'].fields_by_name['protocol']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_FIREWALLEGRESSRULE'].fields_by_name['ports']._loaded_options = None @@ -383,114 +389,116 @@ _globals['_MACHINESERVICE'].methods_by_name['BMCCommand']._serialized_options = b'\312\363\030\002\001\002' _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._loaded_options = None _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._serialized_options = b'\312\363\030\002\001\002' - _globals['_IPPROTOCOL']._serialized_start=12573 - _globals['_IPPROTOCOL']._serialized_end=12674 - _globals['_MACHINESTATE']._serialized_start=12677 - _globals['_MACHINESTATE']._serialized_end=12852 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=12855 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13078 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13081 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=13880 - _globals['_MACHINELIVELINESS']._serialized_start=13883 - _globals['_MACHINELIVELINESS']._serialized_end=14069 - _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14072 - _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14244 - _globals['_MACHINEBMCCOMMAND']._serialized_start=14247 - _globals['_MACHINEBMCCOMMAND']._serialized_end=14885 + _globals['_IPPROTOCOL']._serialized_start=12730 + _globals['_IPPROTOCOL']._serialized_end=12831 + _globals['_MACHINESTATE']._serialized_start=12834 + _globals['_MACHINESTATE']._serialized_end=13009 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=13012 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13235 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13238 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=14037 + _globals['_MACHINELIVELINESS']._serialized_start=14040 + _globals['_MACHINELIVELINESS']._serialized_end=14226 + _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14229 + _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14401 + _globals['_MACHINEBMCCOMMAND']._serialized_start=14404 + _globals['_MACHINEBMCCOMMAND']._serialized_end=15042 _globals['_MACHINESERVICEGETREQUEST']._serialized_start=355 _globals['_MACHINESERVICEGETREQUEST']._serialized_end=447 _globals['_MACHINESERVICEGETRESPONSE']._serialized_start=449 _globals['_MACHINESERVICEGETRESPONSE']._serialized_end=530 _globals['_MACHINESERVICECREATEREQUEST']._serialized_start=533 - _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1591 - _globals['_FIREWALLSPEC']._serialized_start=1593 - _globals['_FIREWALLSPEC']._serialized_end=1680 - _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1682 - _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1766 - _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1769 - _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=2136 - _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=2138 - _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2222 - _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2224 - _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2342 - _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2344 - _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2428 - _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2430 - _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2525 - _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2527 - _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2611 - _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_start=2614 - _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_end=2787 - _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_start=2789 - _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_end=2823 - _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_start=2825 - _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_end=2920 - _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_start=2922 - _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_end=3037 - _globals['_MACHINE']._serialized_start=3040 - _globals['_MACHINE']._serialized_end=3565 - _globals['_MACHINESTATUS']._serialized_start=3568 - _globals['_MACHINESTATUS']._serialized_end=3860 - _globals['_MACHINECONDITION']._serialized_start=3863 - _globals['_MACHINECONDITION']._serialized_end=4027 - _globals['_MACHINEALLOCATION']._serialized_start=4030 - _globals['_MACHINEALLOCATION']._serialized_end=4966 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=4968 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5093 - _globals['_FIREWALLRULES']._serialized_start=5096 - _globals['_FIREWALLRULES']._serialized_end=5240 - _globals['_FIREWALLEGRESSRULE']._serialized_start=5243 - _globals['_FIREWALLEGRESSRULE']._serialized_end=5451 - _globals['_FIREWALLINGRESSRULE']._serialized_start=5454 - _globals['_FIREWALLINGRESSRULE']._serialized_end=5697 - _globals['_MACHINENETWORK']._serialized_start=5700 - _globals['_MACHINENETWORK']._serialized_end=6059 - _globals['_MACHINEHARDWARE']._serialized_start=6062 - _globals['_MACHINEHARDWARE']._serialized_end=6313 - _globals['_METALCPU']._serialized_start=6315 - _globals['_METALCPU']._serialized_end=6439 - _globals['_METALGPU']._serialized_start=6441 - _globals['_METALGPU']._serialized_end=6517 - _globals['_MACHINENIC']._serialized_start=6520 - _globals['_MACHINENIC']._serialized_end=6815 - _globals['_MACHINEBLOCKDEVICE']._serialized_start=6817 - _globals['_MACHINEBLOCKDEVICE']._serialized_end=6890 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=6892 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7003 - _globals['_MACHINEBMCREPORT']._serialized_start=7006 - _globals['_MACHINEBMCREPORT']._serialized_end=7465 - _globals['_MACHINEBIOS']._serialized_start=7467 - _globals['_MACHINEBIOS']._serialized_end=7589 - _globals['_MACHINEBMC']._serialized_start=7592 - _globals['_MACHINEBMC']._serialized_end=7873 - _globals['_MACHINEFRU']._serialized_start=7876 - _globals['_MACHINEFRU']._serialized_end=8554 - _globals['_MACHINEPOWERMETRIC']._serialized_start=8557 - _globals['_MACHINEPOWERMETRIC']._serialized_end=8763 - _globals['_MACHINEPOWERSUPPLY']._serialized_start=8765 - _globals['_MACHINEPOWERSUPPLY']._serialized_end=8831 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=8834 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9173 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9176 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9347 - _globals['_MACHINEVPN']._serialized_start=9350 - _globals['_MACHINEVPN']._serialized_end=9503 - _globals['_MACHINEQUERY']._serialized_start=9506 - _globals['_MACHINEQUERY']._serialized_end=10438 - _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10441 - _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11047 - _globals['_MACHINENETWORKQUERY']._serialized_start=11050 - _globals['_MACHINENETWORKQUERY']._serialized_end=11278 - _globals['_MACHINENICQUERY']._serialized_start=11281 - _globals['_MACHINENICQUERY']._serialized_end=11498 - _globals['_MACHINEDISKQUERY']._serialized_start=11500 - _globals['_MACHINEDISKQUERY']._serialized_end=11589 - _globals['_MACHINEBMCQUERY']._serialized_start=11592 - _globals['_MACHINEBMCQUERY']._serialized_end=11808 - _globals['_MACHINEFRUQUERY']._serialized_start=11811 - _globals['_MACHINEFRUQUERY']._serialized_end=12459 - _globals['_MACHINEHARDWAREQUERY']._serialized_start=12461 - _globals['_MACHINEHARDWAREQUERY']._serialized_end=12571 - _globals['_MACHINESERVICE']._serialized_start=14888 - _globals['_MACHINESERVICE']._serialized_end=15716 + _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1627 + _globals['_FIREWALLSPEC']._serialized_start=1629 + _globals['_FIREWALLSPEC']._serialized_end=1716 + _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1718 + _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1802 + _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1805 + _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=2172 + _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=2174 + _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2258 + _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2260 + _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2378 + _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2380 + _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2464 + _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2466 + _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2561 + _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2563 + _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2647 + _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_start=2650 + _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_end=2823 + _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_start=2825 + _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_end=2859 + _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_start=2861 + _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_end=2956 + _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_start=2958 + _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_end=3073 + _globals['_MACHINE']._serialized_start=3076 + _globals['_MACHINE']._serialized_end=3601 + _globals['_MACHINESTATUS']._serialized_start=3604 + _globals['_MACHINESTATUS']._serialized_end=3896 + _globals['_MACHINECONDITION']._serialized_start=3899 + _globals['_MACHINECONDITION']._serialized_end=4063 + _globals['_MACHINEALLOCATION']._serialized_start=4066 + _globals['_MACHINEALLOCATION']._serialized_end=5002 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=5005 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5143 + _globals['_MACHINEALLOCATIONIP']._serialized_start=5145 + _globals['_MACHINEALLOCATIONIP']._serialized_end=5250 + _globals['_FIREWALLRULES']._serialized_start=5253 + _globals['_FIREWALLRULES']._serialized_end=5397 + _globals['_FIREWALLEGRESSRULE']._serialized_start=5400 + _globals['_FIREWALLEGRESSRULE']._serialized_end=5608 + _globals['_FIREWALLINGRESSRULE']._serialized_start=5611 + _globals['_FIREWALLINGRESSRULE']._serialized_end=5854 + _globals['_MACHINENETWORK']._serialized_start=5857 + _globals['_MACHINENETWORK']._serialized_end=6216 + _globals['_MACHINEHARDWARE']._serialized_start=6219 + _globals['_MACHINEHARDWARE']._serialized_end=6470 + _globals['_METALCPU']._serialized_start=6472 + _globals['_METALCPU']._serialized_end=6596 + _globals['_METALGPU']._serialized_start=6598 + _globals['_METALGPU']._serialized_end=6674 + _globals['_MACHINENIC']._serialized_start=6677 + _globals['_MACHINENIC']._serialized_end=6972 + _globals['_MACHINEBLOCKDEVICE']._serialized_start=6974 + _globals['_MACHINEBLOCKDEVICE']._serialized_end=7047 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=7049 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7160 + _globals['_MACHINEBMCREPORT']._serialized_start=7163 + _globals['_MACHINEBMCREPORT']._serialized_end=7622 + _globals['_MACHINEBIOS']._serialized_start=7624 + _globals['_MACHINEBIOS']._serialized_end=7746 + _globals['_MACHINEBMC']._serialized_start=7749 + _globals['_MACHINEBMC']._serialized_end=8030 + _globals['_MACHINEFRU']._serialized_start=8033 + _globals['_MACHINEFRU']._serialized_end=8711 + _globals['_MACHINEPOWERMETRIC']._serialized_start=8714 + _globals['_MACHINEPOWERMETRIC']._serialized_end=8920 + _globals['_MACHINEPOWERSUPPLY']._serialized_start=8922 + _globals['_MACHINEPOWERSUPPLY']._serialized_end=8988 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=8991 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9330 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9333 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9504 + _globals['_MACHINEVPN']._serialized_start=9507 + _globals['_MACHINEVPN']._serialized_end=9660 + _globals['_MACHINEQUERY']._serialized_start=9663 + _globals['_MACHINEQUERY']._serialized_end=10595 + _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10598 + _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11204 + _globals['_MACHINENETWORKQUERY']._serialized_start=11207 + _globals['_MACHINENETWORKQUERY']._serialized_end=11435 + _globals['_MACHINENICQUERY']._serialized_start=11438 + _globals['_MACHINENICQUERY']._serialized_end=11655 + _globals['_MACHINEDISKQUERY']._serialized_start=11657 + _globals['_MACHINEDISKQUERY']._serialized_end=11746 + _globals['_MACHINEBMCQUERY']._serialized_start=11749 + _globals['_MACHINEBMCQUERY']._serialized_end=11965 + _globals['_MACHINEFRUQUERY']._serialized_start=11968 + _globals['_MACHINEFRUQUERY']._serialized_end=12616 + _globals['_MACHINEHARDWAREQUERY']._serialized_start=12618 + _globals['_MACHINEHARDWAREQUERY']._serialized_end=12728 + _globals['_MACHINESERVICE']._serialized_start=15045 + _globals['_MACHINESERVICE']._serialized_end=15873 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/machine_pb2.pyi b/python/metalstack/api/v2/machine_pb2.pyi index 458a42d8..14e9ffd4 100644 --- a/python/metalstack/api/v2/machine_pb2.pyi +++ b/python/metalstack/api/v2/machine_pb2.pyi @@ -169,13 +169,13 @@ class MachineServiceCreateRequest(_message.Message): userdata: str labels: _common_pb2.Labels networks: _containers.RepeatedCompositeFieldContainer[MachineAllocationNetwork] - ips: _containers.RepeatedScalarFieldContainer[str] + ips: _containers.RepeatedCompositeFieldContainer[MachineAllocationIp] placement_tags: _containers.RepeatedScalarFieldContainer[str] dns_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.DNSServer] ntp_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.NTPServer] allocation_type: MachineAllocationType firewall_spec: FirewallSpec - def __init__(self, project: _Optional[str] = ..., uuid: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., hostname: _Optional[str] = ..., partition: _Optional[str] = ..., size: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineAllocationNetwork, _Mapping]]] = ..., ips: _Optional[_Iterable[str]] = ..., placement_tags: _Optional[_Iterable[str]] = ..., dns_server: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_server: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ..., firewall_spec: _Optional[_Union[FirewallSpec, _Mapping]] = ...) -> None: ... + def __init__(self, project: _Optional[str] = ..., uuid: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., hostname: _Optional[str] = ..., partition: _Optional[str] = ..., size: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineAllocationNetwork, _Mapping]]] = ..., ips: _Optional[_Iterable[_Union[MachineAllocationIp, _Mapping]]] = ..., placement_tags: _Optional[_Iterable[str]] = ..., dns_server: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_server: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ..., firewall_spec: _Optional[_Union[FirewallSpec, _Mapping]] = ...) -> None: ... class FirewallSpec(_message.Message): __slots__ = ("firewall_rules",) @@ -359,6 +359,14 @@ class MachineAllocationNetwork(_message.Message): no_auto_acquire_ip: bool def __init__(self, network: _Optional[str] = ..., no_auto_acquire_ip: _Optional[bool] = ...) -> None: ... +class MachineAllocationIp(_message.Message): + __slots__ = ("ip", "namespace") + IP_FIELD_NUMBER: _ClassVar[int] + NAMESPACE_FIELD_NUMBER: _ClassVar[int] + ip: str + namespace: str + def __init__(self, ip: _Optional[str] = ..., namespace: _Optional[str] = ...) -> None: ... + class FirewallRules(_message.Message): __slots__ = ("egress", "ingress") EGRESS_FIELD_NUMBER: _ClassVar[int] From d3672fec4b5bcd705382548d0a151246137fec4a Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 26 Feb 2026 08:17:02 +0100 Subject: [PATCH 2/3] Add SizeImageConstraints --- doc/index.html | 639 ++++++++++++++++ go/client/client.go | 82 ++- .../size_imageconstraint.connect.go | 259 +++++++ .../admin/v2/size_imageconstraint.pb.go | 688 ++++++++++++++++++ .../size_imageconstraint.connect.go | 119 +++ go/metalstack/api/v2/size.pb.go | 7 +- .../api/v2/size_imageconstraint.pb.go | 419 +++++++++++ go/permissions/servicepermissions.go | 179 +++-- go/tests/mock_clients.go | 198 ++--- go/tests/mocks/client/Adminv2.go | 46 ++ go/tests/mocks/client/Apiv2.go | 46 ++ .../SizeImageConstraintServiceClient.go | 379 ++++++++++ .../SizeImageConstraintServiceHandler.go | 379 ++++++++++ .../SizeImageConstraintServiceClient.go | 107 +++ .../SizeImageConstraintServiceHandler.go | 107 +++ .../admin/v2/size_imageconstraint_pb.d.ts | 293 ++++++++ .../admin/v2/size_imageconstraint_pb.js | 68 ++ .../admin/v2/size_imageconstraint_pb.ts | 345 +++++++++ .../api/v2/size_imageconstraint_pb.d.ts | 165 +++++ .../api/v2/size_imageconstraint_pb.js | 42 ++ .../api/v2/size_imageconstraint_pb.ts | 202 +++++ js/metalstack/api/v2/size_pb.js | 2 +- js/metalstack/api/v2/size_pb.ts | 2 +- .../admin/v2/size_imageconstraint.proto | 115 +++ proto/metalstack/api/v2/size.proto | 5 +- .../api/v2/size_imageconstraint.proto | 69 ++ .../admin/v2/size_imageconstraint_connect.py | 380 ++++++++++ .../admin/v2/size_imageconstraint_pb2.py | 89 +++ .../admin/v2/size_imageconstraint_pb2.pyi | 87 +++ .../api/v2/size_imageconstraint_connect.py | 120 +++ .../api/v2/size_imageconstraint_pb2.py | 72 ++ .../api/v2/size_imageconstraint_pb2.pyi | 54 ++ python/metalstack/api/v2/size_pb2.py | 38 +- python/metalstack/client/client.py | 8 + 34 files changed, 5585 insertions(+), 225 deletions(-) create mode 100644 go/metalstack/admin/v2/adminv2connect/size_imageconstraint.connect.go create mode 100644 go/metalstack/admin/v2/size_imageconstraint.pb.go create mode 100644 go/metalstack/api/v2/apiv2connect/size_imageconstraint.connect.go create mode 100644 go/metalstack/api/v2/size_imageconstraint.pb.go create mode 100644 go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceClient.go create mode 100644 go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceHandler.go create mode 100644 go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceClient.go create mode 100644 go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceHandler.go create mode 100644 js/metalstack/admin/v2/size_imageconstraint_pb.d.ts create mode 100644 js/metalstack/admin/v2/size_imageconstraint_pb.js create mode 100644 js/metalstack/admin/v2/size_imageconstraint_pb.ts create mode 100644 js/metalstack/api/v2/size_imageconstraint_pb.d.ts create mode 100644 js/metalstack/api/v2/size_imageconstraint_pb.js create mode 100644 js/metalstack/api/v2/size_imageconstraint_pb.ts create mode 100644 proto/metalstack/admin/v2/size_imageconstraint.proto create mode 100644 proto/metalstack/api/v2/size_imageconstraint.proto create mode 100644 python/metalstack/admin/v2/size_imageconstraint_connect.py create mode 100644 python/metalstack/admin/v2/size_imageconstraint_pb2.py create mode 100644 python/metalstack/admin/v2/size_imageconstraint_pb2.pyi create mode 100644 python/metalstack/api/v2/size_imageconstraint_connect.py create mode 100644 python/metalstack/api/v2/size_imageconstraint_pb2.py create mode 100644 python/metalstack/api/v2/size_imageconstraint_pb2.pyi diff --git a/doc/index.html b/doc/index.html index 8ac5a88c..7e6c05b9 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1656,6 +1656,96 @@

    Table of Contents

    +
  • + metalstack/api/v2/size_imageconstraint.proto + +
  • + + +
  • + metalstack/admin/v2/size_imageconstraint.proto + +
  • + +
  • metalstack/api/v2/size_reservation.proto
      @@ -14106,6 +14196,555 @@

      SizeService

      +
      +

      metalstack/api/v2/size_imageconstraint.proto

      Top +
      +

      + + +

      ImageConstraint

      +

      ImageConstraint defines a constraint for a image

      examples:

      images:

      ubuntu: ">= 20.04.20211011"

      debian: ">= 10.0.20210101"

      + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      imagestring

      Id of the image

      semver_matchstring

      Semver match

      + + + + + +

      SizeImageConstraint

      +

      SizeImageConstraint expresses optional restrictions for specific size to image combinations

      this might be required if the support for a specific hardware in a given size is only supported

      with a newer version of the image.

      If the size in question is not found, no restrictions apply.

      If the image in question is not found, no restrictions apply as well.

      If the image in question is found, but does not match the given expression, machine creation must be forbidden.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      Id of the size

      image_constraintsImageConstraintrepeated

      ImageConstraints to apply to this size

      metaMeta

      Meta for this size image constraint

      namestringoptional

      Name of this size image constraint

      descriptionstringoptional

      Description of this size image constraint

      + + + + + +

      SizeImageConstraintQuery

      +

      SizeImageConstraintQuery is used to search size image constraints

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestringoptional

      Size of the size image constraint

      namestringoptional

      Name of the size image constraint to query

      descriptionstringoptional

      Description of the size image constraint to query

      + + + + + +

      SizeImageConstraintServiceTryRequest

      +

      SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request

      + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      ID of the size to try

      imagestring

      ID of the image to try

      + + + + + +

      SizeImageConstraintServiceTryResponse

      +

      SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request

      + + + + + + + + + + + +

      SizeImageConstraintService

      +

      SizeImageConstraintService serves size and image constraint related functions

      + + + + + + + + + + + + + + +
      Method NameRequest TypeResponse TypeDescription
      TrySizeImageConstraintServiceTryRequestSizeImageConstraintServiceTryResponse

      Try if a given combination of size and image is possible

      + + + + +
      +

      metalstack/admin/v2/size_imageconstraint.proto

      Top +
      +

      + + +

      SizeImageConstraintServiceCreateRequest

      +

      SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      Id of the size

      image_constraintsmetalstack.api.v2.ImageConstraintrepeated

      ImageConstraints to apply to this size

      metametalstack.api.v2.Meta

      Meta for this size image constraint

      namestringoptional

      Name of this size image constraint

      descriptionstringoptional

      Description of this size image constraint

      + + + + + +

      SizeImageConstraintServiceCreateResponse

      +

      SizeImageConstraintServiceCreateResponse is the response payload for a size image constraint create request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      size_image_constraintmetalstack.api.v2.SizeImageConstraint

      SizeImageConstraint created

      + + + + + +

      SizeImageConstraintServiceDeleteRequest

      +

      SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      Id of the size

      + + + + + +

      SizeImageConstraintServiceDeleteResponse

      +

      SizeImageConstraintServiceDeleteResponse is the response payload for a size image constraint delete request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      size_image_constraintmetalstack.api.v2.SizeImageConstraint

      SizeImageConstraint deleted

      + + + + + +

      SizeImageConstraintServiceGetRequest

      +

      SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      Id of the size to get

      + + + + + +

      SizeImageConstraintServiceGetResponse

      +

      SizeImageConstraintServiceGetResponse is the response payload for a size image constraint get request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      size_image_constraintmetalstack.api.v2.SizeImageConstraint

      SizeImageConstraint get

      + + + + + +

      SizeImageConstraintServiceListRequest

      +

      SizeImageConstraintServiceListRequest is the request payload for a size image constraint list request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      querymetalstack.api.v2.SizeImageConstraintQuery

      Query for size image constraints

      + + + + + +

      SizeImageConstraintServiceListResponse

      +

      SizeImageConstraintServiceListResponse is the response payload for a size image constraint list request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      size_image_constraintsmetalstack.api.v2.SizeImageConstraintrepeated

      SizeImageConstraints listed

      + + + + + +

      SizeImageConstraintServiceUpdateRequest

      +

      SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      sizestring

      Id of the size

      update_metametalstack.api.v2.UpdateMeta

      UpdateMeta contains the timestamp and strategy to be used in this update request

      image_constraintsmetalstack.api.v2.ImageConstraintrepeated

      ImageConstraints to apply to this size

      namestringoptional

      Name of this size image constraint

      descriptionstringoptional

      Description of this size image constraint

      + + + + + +

      SizeImageConstraintServiceUpdateResponse

      +

      SizeImageConstraintServiceUpdateResponse is the response payload for a size image constraint update request

      + + + + + + + + + + + + + + + + +
      FieldTypeLabelDescription
      size_image_constraintmetalstack.api.v2.SizeImageConstraint

      SizeImageConstraint updated

      + + + + + + + + + + + +

      SizeImageConstraintService

      +

      SizeImageConstraintService serves size and image constraint related functions

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Method NameRequest TypeResponse TypeDescription
      CreateSizeImageConstraintServiceCreateRequestSizeImageConstraintServiceCreateResponse

      Create a size image constraint

      UpdateSizeImageConstraintServiceUpdateRequestSizeImageConstraintServiceUpdateResponse

      Update a size image constraint

      DeleteSizeImageConstraintServiceDeleteRequestSizeImageConstraintServiceDeleteResponse

      Delete a size image constraint

      GetSizeImageConstraintServiceGetRequestSizeImageConstraintServiceGetResponse

      Get a size image constraint

      ListSizeImageConstraintServiceListRequestSizeImageConstraintServiceListResponse

      List a size image constraint

      + + + +

      metalstack/api/v2/size_reservation.proto

      Top
      diff --git a/go/client/client.go b/go/client/client.go index 58f0dfb0..d270dd58 100755 --- a/go/client/client.go +++ b/go/client/client.go @@ -35,6 +35,7 @@ type ( Partition() adminv2connect.PartitionServiceClient Project() adminv2connect.ProjectServiceClient Size() adminv2connect.SizeServiceClient + SizeImageConstraint() adminv2connect.SizeImageConstraintServiceClient SizeReservation() adminv2connect.SizeReservationServiceClient Switch() adminv2connect.SwitchServiceClient Task() adminv2connect.TaskServiceClient @@ -44,21 +45,22 @@ type ( } adminv2 struct { - componentservice adminv2connect.ComponentServiceClient - filesystemservice adminv2connect.FilesystemServiceClient - imageservice adminv2connect.ImageServiceClient - ipservice adminv2connect.IPServiceClient - machineservice adminv2connect.MachineServiceClient - networkservice adminv2connect.NetworkServiceClient - partitionservice adminv2connect.PartitionServiceClient - projectservice adminv2connect.ProjectServiceClient - sizeservice adminv2connect.SizeServiceClient - sizereservationservice adminv2connect.SizeReservationServiceClient - switchservice adminv2connect.SwitchServiceClient - taskservice adminv2connect.TaskServiceClient - tenantservice adminv2connect.TenantServiceClient - tokenservice adminv2connect.TokenServiceClient - vpnservice adminv2connect.VPNServiceClient + componentservice adminv2connect.ComponentServiceClient + filesystemservice adminv2connect.FilesystemServiceClient + imageservice adminv2connect.ImageServiceClient + ipservice adminv2connect.IPServiceClient + machineservice adminv2connect.MachineServiceClient + networkservice adminv2connect.NetworkServiceClient + partitionservice adminv2connect.PartitionServiceClient + projectservice adminv2connect.ProjectServiceClient + sizeservice adminv2connect.SizeServiceClient + sizeimageconstraintservice adminv2connect.SizeImageConstraintServiceClient + sizereservationservice adminv2connect.SizeReservationServiceClient + switchservice adminv2connect.SwitchServiceClient + taskservice adminv2connect.TaskServiceClient + tenantservice adminv2connect.TenantServiceClient + tokenservice adminv2connect.TokenServiceClient + vpnservice adminv2connect.VPNServiceClient } Apiv2 interface { @@ -72,6 +74,7 @@ type ( Partition() apiv2connect.PartitionServiceClient Project() apiv2connect.ProjectServiceClient Size() apiv2connect.SizeServiceClient + SizeImageConstraint() apiv2connect.SizeImageConstraintServiceClient SizeReservation() apiv2connect.SizeReservationServiceClient Tenant() apiv2connect.TenantServiceClient Token() apiv2connect.TokenServiceClient @@ -80,21 +83,22 @@ type ( } apiv2 struct { - filesystemservice apiv2connect.FilesystemServiceClient - healthservice apiv2connect.HealthServiceClient - imageservice apiv2connect.ImageServiceClient - ipservice apiv2connect.IPServiceClient - machineservice apiv2connect.MachineServiceClient - methodservice apiv2connect.MethodServiceClient - networkservice apiv2connect.NetworkServiceClient - partitionservice apiv2connect.PartitionServiceClient - projectservice apiv2connect.ProjectServiceClient - sizeservice apiv2connect.SizeServiceClient - sizereservationservice apiv2connect.SizeReservationServiceClient - tenantservice apiv2connect.TenantServiceClient - tokenservice apiv2connect.TokenServiceClient - userservice apiv2connect.UserServiceClient - versionservice apiv2connect.VersionServiceClient + filesystemservice apiv2connect.FilesystemServiceClient + healthservice apiv2connect.HealthServiceClient + imageservice apiv2connect.ImageServiceClient + ipservice apiv2connect.IPServiceClient + machineservice apiv2connect.MachineServiceClient + methodservice apiv2connect.MethodServiceClient + networkservice apiv2connect.NetworkServiceClient + partitionservice apiv2connect.PartitionServiceClient + projectservice apiv2connect.ProjectServiceClient + sizeservice apiv2connect.SizeServiceClient + sizeimageconstraintservice apiv2connect.SizeImageConstraintServiceClient + sizereservationservice apiv2connect.SizeReservationServiceClient + tenantservice apiv2connect.TenantServiceClient + tokenservice apiv2connect.TokenServiceClient + userservice apiv2connect.UserServiceClient + versionservice apiv2connect.VersionServiceClient } Infrav2 interface { @@ -199,6 +203,12 @@ func (c *client) Adminv2() Adminv2 { connect.WithInterceptors(c.interceptors...), compress.WithAll(compress.LevelBalanced), ), + sizeimageconstraintservice: adminv2connect.NewSizeImageConstraintServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + connect.WithInterceptors(c.interceptors...), + compress.WithAll(compress.LevelBalanced), + ), sizereservationservice: adminv2connect.NewSizeReservationServiceClient( c.config.HttpClient(), c.config.BaseURL, @@ -266,6 +276,9 @@ func (c *adminv2) Project() adminv2connect.ProjectServiceClient { func (c *adminv2) Size() adminv2connect.SizeServiceClient { return c.sizeservice } +func (c *adminv2) SizeImageConstraint() adminv2connect.SizeImageConstraintServiceClient { + return c.sizeimageconstraintservice +} func (c *adminv2) SizeReservation() adminv2connect.SizeReservationServiceClient { return c.sizereservationservice } @@ -347,6 +360,12 @@ func (c *client) Apiv2() Apiv2 { connect.WithInterceptors(c.interceptors...), compress.WithAll(compress.LevelBalanced), ), + sizeimageconstraintservice: apiv2connect.NewSizeImageConstraintServiceClient( + c.config.HttpClient(), + c.config.BaseURL, + connect.WithInterceptors(c.interceptors...), + compress.WithAll(compress.LevelBalanced), + ), sizereservationservice: apiv2connect.NewSizeReservationServiceClient( c.config.HttpClient(), c.config.BaseURL, @@ -411,6 +430,9 @@ func (c *apiv2) Project() apiv2connect.ProjectServiceClient { func (c *apiv2) Size() apiv2connect.SizeServiceClient { return c.sizeservice } +func (c *apiv2) SizeImageConstraint() apiv2connect.SizeImageConstraintServiceClient { + return c.sizeimageconstraintservice +} func (c *apiv2) SizeReservation() apiv2connect.SizeReservationServiceClient { return c.sizereservationservice } diff --git a/go/metalstack/admin/v2/adminv2connect/size_imageconstraint.connect.go b/go/metalstack/admin/v2/adminv2connect/size_imageconstraint.connect.go new file mode 100644 index 00000000..2f93a493 --- /dev/null +++ b/go/metalstack/admin/v2/adminv2connect/size_imageconstraint.connect.go @@ -0,0 +1,259 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: metalstack/admin/v2/size_imageconstraint.proto + +package adminv2connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v2 "github.com/metal-stack/api/go/metalstack/admin/v2" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // SizeImageConstraintServiceName is the fully-qualified name of the SizeImageConstraintService + // service. + SizeImageConstraintServiceName = "metalstack.admin.v2.SizeImageConstraintService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // SizeImageConstraintServiceCreateProcedure is the fully-qualified name of the + // SizeImageConstraintService's Create RPC. + SizeImageConstraintServiceCreateProcedure = "/metalstack.admin.v2.SizeImageConstraintService/Create" + // SizeImageConstraintServiceUpdateProcedure is the fully-qualified name of the + // SizeImageConstraintService's Update RPC. + SizeImageConstraintServiceUpdateProcedure = "/metalstack.admin.v2.SizeImageConstraintService/Update" + // SizeImageConstraintServiceDeleteProcedure is the fully-qualified name of the + // SizeImageConstraintService's Delete RPC. + SizeImageConstraintServiceDeleteProcedure = "/metalstack.admin.v2.SizeImageConstraintService/Delete" + // SizeImageConstraintServiceGetProcedure is the fully-qualified name of the + // SizeImageConstraintService's Get RPC. + SizeImageConstraintServiceGetProcedure = "/metalstack.admin.v2.SizeImageConstraintService/Get" + // SizeImageConstraintServiceListProcedure is the fully-qualified name of the + // SizeImageConstraintService's List RPC. + SizeImageConstraintServiceListProcedure = "/metalstack.admin.v2.SizeImageConstraintService/List" +) + +// SizeImageConstraintServiceClient is a client for the +// metalstack.admin.v2.SizeImageConstraintService service. +type SizeImageConstraintServiceClient interface { + // Create a size image constraint + Create(context.Context, *v2.SizeImageConstraintServiceCreateRequest) (*v2.SizeImageConstraintServiceCreateResponse, error) + // Update a size image constraint + Update(context.Context, *v2.SizeImageConstraintServiceUpdateRequest) (*v2.SizeImageConstraintServiceUpdateResponse, error) + // Delete a size image constraint + Delete(context.Context, *v2.SizeImageConstraintServiceDeleteRequest) (*v2.SizeImageConstraintServiceDeleteResponse, error) + // Get a size image constraint + Get(context.Context, *v2.SizeImageConstraintServiceGetRequest) (*v2.SizeImageConstraintServiceGetResponse, error) + // List a size image constraint + List(context.Context, *v2.SizeImageConstraintServiceListRequest) (*v2.SizeImageConstraintServiceListResponse, error) +} + +// NewSizeImageConstraintServiceClient constructs a client for the +// metalstack.admin.v2.SizeImageConstraintService service. By default, it uses the Connect protocol +// with the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed requests. To +// use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or connect.WithGRPCWeb() +// options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewSizeImageConstraintServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SizeImageConstraintServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + sizeImageConstraintServiceMethods := v2.File_metalstack_admin_v2_size_imageconstraint_proto.Services().ByName("SizeImageConstraintService").Methods() + return &sizeImageConstraintServiceClient{ + create: connect.NewClient[v2.SizeImageConstraintServiceCreateRequest, v2.SizeImageConstraintServiceCreateResponse]( + httpClient, + baseURL+SizeImageConstraintServiceCreateProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Create")), + connect.WithClientOptions(opts...), + ), + update: connect.NewClient[v2.SizeImageConstraintServiceUpdateRequest, v2.SizeImageConstraintServiceUpdateResponse]( + httpClient, + baseURL+SizeImageConstraintServiceUpdateProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Update")), + connect.WithClientOptions(opts...), + ), + delete: connect.NewClient[v2.SizeImageConstraintServiceDeleteRequest, v2.SizeImageConstraintServiceDeleteResponse]( + httpClient, + baseURL+SizeImageConstraintServiceDeleteProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Delete")), + connect.WithClientOptions(opts...), + ), + get: connect.NewClient[v2.SizeImageConstraintServiceGetRequest, v2.SizeImageConstraintServiceGetResponse]( + httpClient, + baseURL+SizeImageConstraintServiceGetProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Get")), + connect.WithClientOptions(opts...), + ), + list: connect.NewClient[v2.SizeImageConstraintServiceListRequest, v2.SizeImageConstraintServiceListResponse]( + httpClient, + baseURL+SizeImageConstraintServiceListProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("List")), + connect.WithClientOptions(opts...), + ), + } +} + +// sizeImageConstraintServiceClient implements SizeImageConstraintServiceClient. +type sizeImageConstraintServiceClient struct { + create *connect.Client[v2.SizeImageConstraintServiceCreateRequest, v2.SizeImageConstraintServiceCreateResponse] + update *connect.Client[v2.SizeImageConstraintServiceUpdateRequest, v2.SizeImageConstraintServiceUpdateResponse] + delete *connect.Client[v2.SizeImageConstraintServiceDeleteRequest, v2.SizeImageConstraintServiceDeleteResponse] + get *connect.Client[v2.SizeImageConstraintServiceGetRequest, v2.SizeImageConstraintServiceGetResponse] + list *connect.Client[v2.SizeImageConstraintServiceListRequest, v2.SizeImageConstraintServiceListResponse] +} + +// Create calls metalstack.admin.v2.SizeImageConstraintService.Create. +func (c *sizeImageConstraintServiceClient) Create(ctx context.Context, req *v2.SizeImageConstraintServiceCreateRequest) (*v2.SizeImageConstraintServiceCreateResponse, error) { + response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// Update calls metalstack.admin.v2.SizeImageConstraintService.Update. +func (c *sizeImageConstraintServiceClient) Update(ctx context.Context, req *v2.SizeImageConstraintServiceUpdateRequest) (*v2.SizeImageConstraintServiceUpdateResponse, error) { + response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// Delete calls metalstack.admin.v2.SizeImageConstraintService.Delete. +func (c *sizeImageConstraintServiceClient) Delete(ctx context.Context, req *v2.SizeImageConstraintServiceDeleteRequest) (*v2.SizeImageConstraintServiceDeleteResponse, error) { + response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// Get calls metalstack.admin.v2.SizeImageConstraintService.Get. +func (c *sizeImageConstraintServiceClient) Get(ctx context.Context, req *v2.SizeImageConstraintServiceGetRequest) (*v2.SizeImageConstraintServiceGetResponse, error) { + response, err := c.get.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// List calls metalstack.admin.v2.SizeImageConstraintService.List. +func (c *sizeImageConstraintServiceClient) List(ctx context.Context, req *v2.SizeImageConstraintServiceListRequest) (*v2.SizeImageConstraintServiceListResponse, error) { + response, err := c.list.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// SizeImageConstraintServiceHandler is an implementation of the +// metalstack.admin.v2.SizeImageConstraintService service. +type SizeImageConstraintServiceHandler interface { + // Create a size image constraint + Create(context.Context, *v2.SizeImageConstraintServiceCreateRequest) (*v2.SizeImageConstraintServiceCreateResponse, error) + // Update a size image constraint + Update(context.Context, *v2.SizeImageConstraintServiceUpdateRequest) (*v2.SizeImageConstraintServiceUpdateResponse, error) + // Delete a size image constraint + Delete(context.Context, *v2.SizeImageConstraintServiceDeleteRequest) (*v2.SizeImageConstraintServiceDeleteResponse, error) + // Get a size image constraint + Get(context.Context, *v2.SizeImageConstraintServiceGetRequest) (*v2.SizeImageConstraintServiceGetResponse, error) + // List a size image constraint + List(context.Context, *v2.SizeImageConstraintServiceListRequest) (*v2.SizeImageConstraintServiceListResponse, error) +} + +// NewSizeImageConstraintServiceHandler builds an HTTP handler from the service implementation. It +// returns the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewSizeImageConstraintServiceHandler(svc SizeImageConstraintServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + sizeImageConstraintServiceMethods := v2.File_metalstack_admin_v2_size_imageconstraint_proto.Services().ByName("SizeImageConstraintService").Methods() + sizeImageConstraintServiceCreateHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceCreateProcedure, + svc.Create, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Create")), + connect.WithHandlerOptions(opts...), + ) + sizeImageConstraintServiceUpdateHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceUpdateProcedure, + svc.Update, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Update")), + connect.WithHandlerOptions(opts...), + ) + sizeImageConstraintServiceDeleteHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceDeleteProcedure, + svc.Delete, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Delete")), + connect.WithHandlerOptions(opts...), + ) + sizeImageConstraintServiceGetHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceGetProcedure, + svc.Get, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Get")), + connect.WithHandlerOptions(opts...), + ) + sizeImageConstraintServiceListHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceListProcedure, + svc.List, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("List")), + connect.WithHandlerOptions(opts...), + ) + return "/metalstack.admin.v2.SizeImageConstraintService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case SizeImageConstraintServiceCreateProcedure: + sizeImageConstraintServiceCreateHandler.ServeHTTP(w, r) + case SizeImageConstraintServiceUpdateProcedure: + sizeImageConstraintServiceUpdateHandler.ServeHTTP(w, r) + case SizeImageConstraintServiceDeleteProcedure: + sizeImageConstraintServiceDeleteHandler.ServeHTTP(w, r) + case SizeImageConstraintServiceGetProcedure: + sizeImageConstraintServiceGetHandler.ServeHTTP(w, r) + case SizeImageConstraintServiceListProcedure: + sizeImageConstraintServiceListHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedSizeImageConstraintServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedSizeImageConstraintServiceHandler struct{} + +func (UnimplementedSizeImageConstraintServiceHandler) Create(context.Context, *v2.SizeImageConstraintServiceCreateRequest) (*v2.SizeImageConstraintServiceCreateResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.SizeImageConstraintService.Create is not implemented")) +} + +func (UnimplementedSizeImageConstraintServiceHandler) Update(context.Context, *v2.SizeImageConstraintServiceUpdateRequest) (*v2.SizeImageConstraintServiceUpdateResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.SizeImageConstraintService.Update is not implemented")) +} + +func (UnimplementedSizeImageConstraintServiceHandler) Delete(context.Context, *v2.SizeImageConstraintServiceDeleteRequest) (*v2.SizeImageConstraintServiceDeleteResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.SizeImageConstraintService.Delete is not implemented")) +} + +func (UnimplementedSizeImageConstraintServiceHandler) Get(context.Context, *v2.SizeImageConstraintServiceGetRequest) (*v2.SizeImageConstraintServiceGetResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.SizeImageConstraintService.Get is not implemented")) +} + +func (UnimplementedSizeImageConstraintServiceHandler) List(context.Context, *v2.SizeImageConstraintServiceListRequest) (*v2.SizeImageConstraintServiceListResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.SizeImageConstraintService.List is not implemented")) +} diff --git a/go/metalstack/admin/v2/size_imageconstraint.pb.go b/go/metalstack/admin/v2/size_imageconstraint.pb.go new file mode 100644 index 00000000..4ec4f267 --- /dev/null +++ b/go/metalstack/admin/v2/size_imageconstraint.pb.go @@ -0,0 +1,688 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: metalstack/admin/v2/size_imageconstraint.proto + +package adminv2 + +import ( + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + v2 "github.com/metal-stack/api/go/metalstack/api/v2" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request +type SizeImageConstraintServiceCreateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the size + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + // ImageConstraints to apply to this size + ImageConstraints []*v2.ImageConstraint `protobuf:"bytes,2,rep,name=image_constraints,json=imageConstraints,proto3" json:"image_constraints,omitempty"` + // Meta for this size image constraint + Meta *v2.Meta `protobuf:"bytes,3,opt,name=meta,proto3" json:"meta,omitempty"` + // Name of this size image constraint + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description of this size image constraint + Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceCreateRequest) Reset() { + *x = SizeImageConstraintServiceCreateRequest{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceCreateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceCreateRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceCreateRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceCreateRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceCreateRequest) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{0} +} + +func (x *SizeImageConstraintServiceCreateRequest) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +func (x *SizeImageConstraintServiceCreateRequest) GetImageConstraints() []*v2.ImageConstraint { + if x != nil { + return x.ImageConstraints + } + return nil +} + +func (x *SizeImageConstraintServiceCreateRequest) GetMeta() *v2.Meta { + if x != nil { + return x.Meta + } + return nil +} + +func (x *SizeImageConstraintServiceCreateRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SizeImageConstraintServiceCreateRequest) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +// SizeImageConstraintServiceCreateResponse is the response payload for a size image constraint create request +type SizeImageConstraintServiceCreateResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SizeImageConstraint created + SizeImageConstraint *v2.SizeImageConstraint `protobuf:"bytes,1,opt,name=size_image_constraint,json=sizeImageConstraint,proto3" json:"size_image_constraint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceCreateResponse) Reset() { + *x = SizeImageConstraintServiceCreateResponse{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceCreateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceCreateResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceCreateResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceCreateResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceCreateResponse) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{1} +} + +func (x *SizeImageConstraintServiceCreateResponse) GetSizeImageConstraint() *v2.SizeImageConstraint { + if x != nil { + return x.SizeImageConstraint + } + return nil +} + +// SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request +type SizeImageConstraintServiceUpdateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the size + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + // UpdateMeta contains the timestamp and strategy to be used in this update request + UpdateMeta *v2.UpdateMeta `protobuf:"bytes,2,opt,name=update_meta,json=updateMeta,proto3" json:"update_meta,omitempty"` + // ImageConstraints to apply to this size + ImageConstraints []*v2.ImageConstraint `protobuf:"bytes,3,rep,name=image_constraints,json=imageConstraints,proto3" json:"image_constraints,omitempty"` + // Name of this size image constraint + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description of this size image constraint + Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceUpdateRequest) Reset() { + *x = SizeImageConstraintServiceUpdateRequest{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceUpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceUpdateRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceUpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceUpdateRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceUpdateRequest) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{2} +} + +func (x *SizeImageConstraintServiceUpdateRequest) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +func (x *SizeImageConstraintServiceUpdateRequest) GetUpdateMeta() *v2.UpdateMeta { + if x != nil { + return x.UpdateMeta + } + return nil +} + +func (x *SizeImageConstraintServiceUpdateRequest) GetImageConstraints() []*v2.ImageConstraint { + if x != nil { + return x.ImageConstraints + } + return nil +} + +func (x *SizeImageConstraintServiceUpdateRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SizeImageConstraintServiceUpdateRequest) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +// SizeImageConstraintServiceUpdateResponse is the response payload for a size image constraint update request +type SizeImageConstraintServiceUpdateResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SizeImageConstraint updated + SizeImageConstraint *v2.SizeImageConstraint `protobuf:"bytes,1,opt,name=size_image_constraint,json=sizeImageConstraint,proto3" json:"size_image_constraint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceUpdateResponse) Reset() { + *x = SizeImageConstraintServiceUpdateResponse{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceUpdateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceUpdateResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceUpdateResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceUpdateResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceUpdateResponse) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{3} +} + +func (x *SizeImageConstraintServiceUpdateResponse) GetSizeImageConstraint() *v2.SizeImageConstraint { + if x != nil { + return x.SizeImageConstraint + } + return nil +} + +// SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request +type SizeImageConstraintServiceDeleteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the size + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceDeleteRequest) Reset() { + *x = SizeImageConstraintServiceDeleteRequest{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceDeleteRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceDeleteRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceDeleteRequest) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{4} +} + +func (x *SizeImageConstraintServiceDeleteRequest) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +// SizeImageConstraintServiceDeleteResponse is the response payload for a size image constraint delete request +type SizeImageConstraintServiceDeleteResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SizeImageConstraint deleted + SizeImageConstraint *v2.SizeImageConstraint `protobuf:"bytes,1,opt,name=size_image_constraint,json=sizeImageConstraint,proto3" json:"size_image_constraint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceDeleteResponse) Reset() { + *x = SizeImageConstraintServiceDeleteResponse{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceDeleteResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceDeleteResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceDeleteResponse) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{5} +} + +func (x *SizeImageConstraintServiceDeleteResponse) GetSizeImageConstraint() *v2.SizeImageConstraint { + if x != nil { + return x.SizeImageConstraint + } + return nil +} + +// SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request +type SizeImageConstraintServiceGetRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the size to get + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceGetRequest) Reset() { + *x = SizeImageConstraintServiceGetRequest{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceGetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceGetRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceGetRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceGetRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceGetRequest) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{6} +} + +func (x *SizeImageConstraintServiceGetRequest) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +// SizeImageConstraintServiceGetResponse is the response payload for a size image constraint get request +type SizeImageConstraintServiceGetResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SizeImageConstraint get + SizeImageConstraint *v2.SizeImageConstraint `protobuf:"bytes,1,opt,name=size_image_constraint,json=sizeImageConstraint,proto3" json:"size_image_constraint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceGetResponse) Reset() { + *x = SizeImageConstraintServiceGetResponse{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceGetResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceGetResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceGetResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceGetResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceGetResponse) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{7} +} + +func (x *SizeImageConstraintServiceGetResponse) GetSizeImageConstraint() *v2.SizeImageConstraint { + if x != nil { + return x.SizeImageConstraint + } + return nil +} + +// SizeImageConstraintServiceListRequest is the request payload for a size image constraint list request +type SizeImageConstraintServiceListRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Query for size image constraints + Query *v2.SizeImageConstraintQuery `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceListRequest) Reset() { + *x = SizeImageConstraintServiceListRequest{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceListRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceListRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceListRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceListRequest) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{8} +} + +func (x *SizeImageConstraintServiceListRequest) GetQuery() *v2.SizeImageConstraintQuery { + if x != nil { + return x.Query + } + return nil +} + +// SizeImageConstraintServiceListResponse is the response payload for a size image constraint list request +type SizeImageConstraintServiceListResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // SizeImageConstraints listed + SizeImageConstraints []*v2.SizeImageConstraint `protobuf:"bytes,1,rep,name=size_image_constraints,json=sizeImageConstraints,proto3" json:"size_image_constraints,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceListResponse) Reset() { + *x = SizeImageConstraintServiceListResponse{} + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceListResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceListResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceListResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceListResponse) Descriptor() ([]byte, []int) { + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP(), []int{9} +} + +func (x *SizeImageConstraintServiceListResponse) GetSizeImageConstraints() []*v2.SizeImageConstraint { + if x != nil { + return x.SizeImageConstraints + } + return nil +} + +var File_metalstack_admin_v2_size_imageconstraint_proto protoreflect.FileDescriptor + +const file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc = "" + + "\n" + + ".metalstack/admin/v2/size_imageconstraint.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a,metalstack/api/v2/size_imageconstraint.proto\"\xbb\x02\n" + + "'SizeImageConstraintServiceCreateRequest\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n" + + "\x11image_constraints\x18\x02 \x03(\v2\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n" + + "\x04meta\x18\x03 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\x12$\n" + + "\x04name\x18\x04 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x122\n" + + "\vdescription\x18\x05 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x01R\vdescription\x88\x01\x01B\a\n" + + "\x05_nameB\x0e\n" + + "\f_description\"\x86\x01\n" + + "(SizeImageConstraintServiceCreateResponse\x12Z\n" + + "\x15size_image_constraint\x18\x01 \x01(\v2&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"\xd6\x02\n" + + "'SizeImageConstraintServiceUpdateRequest\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12F\n" + + "\vupdate_meta\x18\x02 \x01(\v2\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\n" + + "updateMeta\x12O\n" + + "\x11image_constraints\x18\x03 \x03(\v2\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12$\n" + + "\x04name\x18\x04 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x122\n" + + "\vdescription\x18\x05 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x01R\vdescription\x88\x01\x01B\a\n" + + "\x05_nameB\x0e\n" + + "\f_description\"\x86\x01\n" + + "(SizeImageConstraintServiceUpdateResponse\x12Z\n" + + "\x15size_image_constraint\x18\x01 \x01(\v2&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"J\n" + + "'SizeImageConstraintServiceDeleteRequest\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x86\x01\n" + + "(SizeImageConstraintServiceDeleteResponse\x12Z\n" + + "\x15size_image_constraint\x18\x01 \x01(\v2&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"G\n" + + "$SizeImageConstraintServiceGetRequest\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x83\x01\n" + + "%SizeImageConstraintServiceGetResponse\x12Z\n" + + "\x15size_image_constraint\x18\x01 \x01(\v2&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"j\n" + + "%SizeImageConstraintServiceListRequest\x12A\n" + + "\x05query\x18\x01 \x01(\v2+.metalstack.api.v2.SizeImageConstraintQueryR\x05query\"\x86\x01\n" + + "&SizeImageConstraintServiceListResponse\x12\\\n" + + "\x16size_image_constraints\x18\x01 \x03(\v2&.metalstack.api.v2.SizeImageConstraintR\x14sizeImageConstraints2\xee\x05\n" + + "\x1aSizeImageConstraintService\x12\x90\x01\n" + + "\x06Create\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n" + + "\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n" + + "\x06Delete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x88\x01\n" + + "\x03Get\x129.metalstack.admin.v2.SizeImageConstraintServiceGetRequest\x1a:.metalstack.admin.v2.SizeImageConstraintServiceGetResponse\"\n" + + "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x8b\x01\n" + + "\x04List\x12:.metalstack.admin.v2.SizeImageConstraintServiceListRequest\x1a;.metalstack.admin.v2.SizeImageConstraintServiceListResponse\"\n" + + "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\xdc\x01\n" + + "\x17com.metalstack.admin.v2B\x18SizeImageconstraintProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3" + +var ( + file_metalstack_admin_v2_size_imageconstraint_proto_rawDescOnce sync.Once + file_metalstack_admin_v2_size_imageconstraint_proto_rawDescData []byte +) + +func file_metalstack_admin_v2_size_imageconstraint_proto_rawDescGZIP() []byte { + file_metalstack_admin_v2_size_imageconstraint_proto_rawDescOnce.Do(func() { + file_metalstack_admin_v2_size_imageconstraint_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc), len(file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc))) + }) + return file_metalstack_admin_v2_size_imageconstraint_proto_rawDescData +} + +var file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_metalstack_admin_v2_size_imageconstraint_proto_goTypes = []any{ + (*SizeImageConstraintServiceCreateRequest)(nil), // 0: metalstack.admin.v2.SizeImageConstraintServiceCreateRequest + (*SizeImageConstraintServiceCreateResponse)(nil), // 1: metalstack.admin.v2.SizeImageConstraintServiceCreateResponse + (*SizeImageConstraintServiceUpdateRequest)(nil), // 2: metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest + (*SizeImageConstraintServiceUpdateResponse)(nil), // 3: metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse + (*SizeImageConstraintServiceDeleteRequest)(nil), // 4: metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest + (*SizeImageConstraintServiceDeleteResponse)(nil), // 5: metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse + (*SizeImageConstraintServiceGetRequest)(nil), // 6: metalstack.admin.v2.SizeImageConstraintServiceGetRequest + (*SizeImageConstraintServiceGetResponse)(nil), // 7: metalstack.admin.v2.SizeImageConstraintServiceGetResponse + (*SizeImageConstraintServiceListRequest)(nil), // 8: metalstack.admin.v2.SizeImageConstraintServiceListRequest + (*SizeImageConstraintServiceListResponse)(nil), // 9: metalstack.admin.v2.SizeImageConstraintServiceListResponse + (*v2.ImageConstraint)(nil), // 10: metalstack.api.v2.ImageConstraint + (*v2.Meta)(nil), // 11: metalstack.api.v2.Meta + (*v2.SizeImageConstraint)(nil), // 12: metalstack.api.v2.SizeImageConstraint + (*v2.UpdateMeta)(nil), // 13: metalstack.api.v2.UpdateMeta + (*v2.SizeImageConstraintQuery)(nil), // 14: metalstack.api.v2.SizeImageConstraintQuery +} +var file_metalstack_admin_v2_size_imageconstraint_proto_depIdxs = []int32{ + 10, // 0: metalstack.admin.v2.SizeImageConstraintServiceCreateRequest.image_constraints:type_name -> metalstack.api.v2.ImageConstraint + 11, // 1: metalstack.admin.v2.SizeImageConstraintServiceCreateRequest.meta:type_name -> metalstack.api.v2.Meta + 12, // 2: metalstack.admin.v2.SizeImageConstraintServiceCreateResponse.size_image_constraint:type_name -> metalstack.api.v2.SizeImageConstraint + 13, // 3: metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 10, // 4: metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest.image_constraints:type_name -> metalstack.api.v2.ImageConstraint + 12, // 5: metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse.size_image_constraint:type_name -> metalstack.api.v2.SizeImageConstraint + 12, // 6: metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse.size_image_constraint:type_name -> metalstack.api.v2.SizeImageConstraint + 12, // 7: metalstack.admin.v2.SizeImageConstraintServiceGetResponse.size_image_constraint:type_name -> metalstack.api.v2.SizeImageConstraint + 14, // 8: metalstack.admin.v2.SizeImageConstraintServiceListRequest.query:type_name -> metalstack.api.v2.SizeImageConstraintQuery + 12, // 9: metalstack.admin.v2.SizeImageConstraintServiceListResponse.size_image_constraints:type_name -> metalstack.api.v2.SizeImageConstraint + 0, // 10: metalstack.admin.v2.SizeImageConstraintService.Create:input_type -> metalstack.admin.v2.SizeImageConstraintServiceCreateRequest + 2, // 11: metalstack.admin.v2.SizeImageConstraintService.Update:input_type -> metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest + 4, // 12: metalstack.admin.v2.SizeImageConstraintService.Delete:input_type -> metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest + 6, // 13: metalstack.admin.v2.SizeImageConstraintService.Get:input_type -> metalstack.admin.v2.SizeImageConstraintServiceGetRequest + 8, // 14: metalstack.admin.v2.SizeImageConstraintService.List:input_type -> metalstack.admin.v2.SizeImageConstraintServiceListRequest + 1, // 15: metalstack.admin.v2.SizeImageConstraintService.Create:output_type -> metalstack.admin.v2.SizeImageConstraintServiceCreateResponse + 3, // 16: metalstack.admin.v2.SizeImageConstraintService.Update:output_type -> metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse + 5, // 17: metalstack.admin.v2.SizeImageConstraintService.Delete:output_type -> metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse + 7, // 18: metalstack.admin.v2.SizeImageConstraintService.Get:output_type -> metalstack.admin.v2.SizeImageConstraintServiceGetResponse + 9, // 19: metalstack.admin.v2.SizeImageConstraintService.List:output_type -> metalstack.admin.v2.SizeImageConstraintServiceListResponse + 15, // [15:20] is the sub-list for method output_type + 10, // [10:15] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_metalstack_admin_v2_size_imageconstraint_proto_init() } +func file_metalstack_admin_v2_size_imageconstraint_proto_init() { + if File_metalstack_admin_v2_size_imageconstraint_proto != nil { + return + } + file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[0].OneofWrappers = []any{} + file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes[2].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc), len(file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc)), + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_metalstack_admin_v2_size_imageconstraint_proto_goTypes, + DependencyIndexes: file_metalstack_admin_v2_size_imageconstraint_proto_depIdxs, + MessageInfos: file_metalstack_admin_v2_size_imageconstraint_proto_msgTypes, + }.Build() + File_metalstack_admin_v2_size_imageconstraint_proto = out.File + file_metalstack_admin_v2_size_imageconstraint_proto_goTypes = nil + file_metalstack_admin_v2_size_imageconstraint_proto_depIdxs = nil +} diff --git a/go/metalstack/api/v2/apiv2connect/size_imageconstraint.connect.go b/go/metalstack/api/v2/apiv2connect/size_imageconstraint.connect.go new file mode 100644 index 00000000..5db04365 --- /dev/null +++ b/go/metalstack/api/v2/apiv2connect/size_imageconstraint.connect.go @@ -0,0 +1,119 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: metalstack/api/v2/size_imageconstraint.proto + +package apiv2connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v2 "github.com/metal-stack/api/go/metalstack/api/v2" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // SizeImageConstraintServiceName is the fully-qualified name of the SizeImageConstraintService + // service. + SizeImageConstraintServiceName = "metalstack.api.v2.SizeImageConstraintService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // SizeImageConstraintServiceTryProcedure is the fully-qualified name of the + // SizeImageConstraintService's Try RPC. + SizeImageConstraintServiceTryProcedure = "/metalstack.api.v2.SizeImageConstraintService/Try" +) + +// SizeImageConstraintServiceClient is a client for the metalstack.api.v2.SizeImageConstraintService +// service. +type SizeImageConstraintServiceClient interface { + // Try if a given combination of size and image is possible + Try(context.Context, *v2.SizeImageConstraintServiceTryRequest) (*v2.SizeImageConstraintServiceTryResponse, error) +} + +// NewSizeImageConstraintServiceClient constructs a client for the +// metalstack.api.v2.SizeImageConstraintService service. By default, it uses the Connect protocol +// with the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed requests. To +// use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or connect.WithGRPCWeb() +// options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewSizeImageConstraintServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SizeImageConstraintServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + sizeImageConstraintServiceMethods := v2.File_metalstack_api_v2_size_imageconstraint_proto.Services().ByName("SizeImageConstraintService").Methods() + return &sizeImageConstraintServiceClient{ + try: connect.NewClient[v2.SizeImageConstraintServiceTryRequest, v2.SizeImageConstraintServiceTryResponse]( + httpClient, + baseURL+SizeImageConstraintServiceTryProcedure, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Try")), + connect.WithClientOptions(opts...), + ), + } +} + +// sizeImageConstraintServiceClient implements SizeImageConstraintServiceClient. +type sizeImageConstraintServiceClient struct { + try *connect.Client[v2.SizeImageConstraintServiceTryRequest, v2.SizeImageConstraintServiceTryResponse] +} + +// Try calls metalstack.api.v2.SizeImageConstraintService.Try. +func (c *sizeImageConstraintServiceClient) Try(ctx context.Context, req *v2.SizeImageConstraintServiceTryRequest) (*v2.SizeImageConstraintServiceTryResponse, error) { + response, err := c.try.CallUnary(ctx, connect.NewRequest(req)) + if response != nil { + return response.Msg, err + } + return nil, err +} + +// SizeImageConstraintServiceHandler is an implementation of the +// metalstack.api.v2.SizeImageConstraintService service. +type SizeImageConstraintServiceHandler interface { + // Try if a given combination of size and image is possible + Try(context.Context, *v2.SizeImageConstraintServiceTryRequest) (*v2.SizeImageConstraintServiceTryResponse, error) +} + +// NewSizeImageConstraintServiceHandler builds an HTTP handler from the service implementation. It +// returns the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewSizeImageConstraintServiceHandler(svc SizeImageConstraintServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + sizeImageConstraintServiceMethods := v2.File_metalstack_api_v2_size_imageconstraint_proto.Services().ByName("SizeImageConstraintService").Methods() + sizeImageConstraintServiceTryHandler := connect.NewUnaryHandlerSimple( + SizeImageConstraintServiceTryProcedure, + svc.Try, + connect.WithSchema(sizeImageConstraintServiceMethods.ByName("Try")), + connect.WithHandlerOptions(opts...), + ) + return "/metalstack.api.v2.SizeImageConstraintService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case SizeImageConstraintServiceTryProcedure: + sizeImageConstraintServiceTryHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedSizeImageConstraintServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedSizeImageConstraintServiceHandler struct{} + +func (UnimplementedSizeImageConstraintServiceHandler) Try(context.Context, *v2.SizeImageConstraintServiceTryRequest) (*v2.SizeImageConstraintServiceTryResponse, error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.api.v2.SizeImageConstraintService.Try is not implemented")) +} diff --git a/go/metalstack/api/v2/size.pb.go b/go/metalstack/api/v2/size.pb.go index 85e74b90..5ecd4157 100644 --- a/go/metalstack/api/v2/size.pb.go +++ b/go/metalstack/api/v2/size.pb.go @@ -499,10 +499,9 @@ var File_metalstack_api_v2_size_proto protoreflect.FileDescriptor const file_metalstack_api_v2_size_proto_rawDesc = "" + "\n" + - "\x1cmetalstack/api/v2/size.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"3\n" + - "\x15SizeServiceGetRequest\x12\x1a\n" + - "\x02id\x18\x01 \x01(\tB\n" + - "\xbaH\ar\x05\x10\x02\x18\x80\x01R\x02id\"L\n" + + "\x1cmetalstack/api/v2/size.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"4\n" + + "\x15SizeServiceGetRequest\x12\x1b\n" + + "\x02id\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"L\n" + "\x16SizeServiceListRequest\x122\n" + "\x05query\x18\x01 \x01(\v2\x1c.metalstack.api.v2.SizeQueryR\x05query\"E\n" + "\x16SizeServiceGetResponse\x12+\n" + diff --git a/go/metalstack/api/v2/size_imageconstraint.pb.go b/go/metalstack/api/v2/size_imageconstraint.pb.go new file mode 100644 index 00000000..144cbed2 --- /dev/null +++ b/go/metalstack/api/v2/size_imageconstraint.pb.go @@ -0,0 +1,419 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: metalstack/api/v2/size_imageconstraint.proto + +package apiv2 + +import ( + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request +type SizeImageConstraintServiceTryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // ID of the size to try + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + // ID of the image to try + Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceTryRequest) Reset() { + *x = SizeImageConstraintServiceTryRequest{} + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceTryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceTryRequest) ProtoMessage() {} + +func (x *SizeImageConstraintServiceTryRequest) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceTryRequest.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceTryRequest) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP(), []int{0} +} + +func (x *SizeImageConstraintServiceTryRequest) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +func (x *SizeImageConstraintServiceTryRequest) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +// SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request +type SizeImageConstraintServiceTryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintServiceTryResponse) Reset() { + *x = SizeImageConstraintServiceTryResponse{} + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintServiceTryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintServiceTryResponse) ProtoMessage() {} + +func (x *SizeImageConstraintServiceTryResponse) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintServiceTryResponse.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintServiceTryResponse) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP(), []int{1} +} + +// SizeImageConstraint expresses optional restrictions for specific size to image combinations +// this might be required if the support for a specific hardware in a given size is only supported +// with a newer version of the image. +// +// If the size in question is not found, no restrictions apply. +// If the image in question is not found, no restrictions apply as well. +// If the image in question is found, but does not match the given expression, machine creation must be forbidden. +type SizeImageConstraint struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the size + Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` + // ImageConstraints to apply to this size + ImageConstraints []*ImageConstraint `protobuf:"bytes,2,rep,name=image_constraints,json=imageConstraints,proto3" json:"image_constraints,omitempty"` + // Meta for this size image constraint + Meta *Meta `protobuf:"bytes,3,opt,name=meta,proto3" json:"meta,omitempty"` + // Name of this size image constraint + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description of this size image constraint + Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraint) Reset() { + *x = SizeImageConstraint{} + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraint) ProtoMessage() {} + +func (x *SizeImageConstraint) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraint.ProtoReflect.Descriptor instead. +func (*SizeImageConstraint) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP(), []int{2} +} + +func (x *SizeImageConstraint) GetSize() string { + if x != nil { + return x.Size + } + return "" +} + +func (x *SizeImageConstraint) GetImageConstraints() []*ImageConstraint { + if x != nil { + return x.ImageConstraints + } + return nil +} + +func (x *SizeImageConstraint) GetMeta() *Meta { + if x != nil { + return x.Meta + } + return nil +} + +func (x *SizeImageConstraint) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SizeImageConstraint) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +// ImageConstraint defines a constraint for a image +// examples: +// images: +// +// ubuntu: ">= 20.04.20211011" +// debian: ">= 10.0.20210101" +type ImageConstraint struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Id of the image + Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` + // Semver match + SemverMatch string `protobuf:"bytes,2,opt,name=semver_match,json=semverMatch,proto3" json:"semver_match,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImageConstraint) Reset() { + *x = ImageConstraint{} + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImageConstraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageConstraint) ProtoMessage() {} + +func (x *ImageConstraint) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImageConstraint.ProtoReflect.Descriptor instead. +func (*ImageConstraint) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP(), []int{3} +} + +func (x *ImageConstraint) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +func (x *ImageConstraint) GetSemverMatch() string { + if x != nil { + return x.SemverMatch + } + return "" +} + +// SizeImageConstraintQuery is used to search size image constraints +type SizeImageConstraintQuery struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Size of the size image constraint + Size *string `protobuf:"bytes,1,opt,name=size,proto3,oneof" json:"size,omitempty"` + // Name of the size image constraint to query + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description of the size image constraint to query + Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SizeImageConstraintQuery) Reset() { + *x = SizeImageConstraintQuery{} + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SizeImageConstraintQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SizeImageConstraintQuery) ProtoMessage() {} + +func (x *SizeImageConstraintQuery) ProtoReflect() protoreflect.Message { + mi := &file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SizeImageConstraintQuery.ProtoReflect.Descriptor instead. +func (*SizeImageConstraintQuery) Descriptor() ([]byte, []int) { + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP(), []int{4} +} + +func (x *SizeImageConstraintQuery) GetSize() string { + if x != nil && x.Size != nil { + return *x.Size + } + return "" +} + +func (x *SizeImageConstraintQuery) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SizeImageConstraintQuery) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +var File_metalstack_api_v2_size_imageconstraint_proto protoreflect.FileDescriptor + +const file_metalstack_api_v2_size_imageconstraint_proto_rawDesc = "" + + "\n" + + ",metalstack/api/v2/size_imageconstraint.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"j\n" + + "$SizeImageConstraintServiceTryRequest\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12!\n" + + "\x05image\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x05image\"'\n" + + "%SizeImageConstraintServiceTryResponse\"\xa7\x02\n" + + "\x13SizeImageConstraint\x12\x1f\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n" + + "\x11image_constraints\x18\x02 \x03(\v2\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n" + + "\x04meta\x18\x03 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\x12$\n" + + "\x04name\x18\x04 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x122\n" + + "\vdescription\x18\x05 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x01R\vdescription\x88\x01\x01B\a\n" + + "\x05_nameB\x0e\n" + + "\f_description\"d\n" + + "\x0fImageConstraint\x12!\n" + + "\x05image\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x05image\x12.\n" + + "\fsemver_match\x18\x02 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01R\vsemverMatch\"\xbc\x01\n" + + "\x18SizeImageConstraintQuery\x12$\n" + + "\x04size\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04size\x88\x01\x01\x12$\n" + + "\x04name\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x122\n" + + "\vdescription\x18\x03 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x02R\vdescription\x88\x01\x01B\a\n" + + "\x05_sizeB\a\n" + + "\x05_nameB\x0e\n" + + "\f_description2\xa1\x01\n" + + "\x1aSizeImageConstraintService\x12\x82\x01\n" + + "\x03Try\x127.metalstack.api.v2.SizeImageConstraintServiceTryRequest\x1a8.metalstack.api.v2.SizeImageConstraintServiceTryResponse\"\b\xd8\xf3\x18\x03\xe0\xf3\x18\x02B\xce\x01\n" + + "\x15com.metalstack.api.v2B\x18SizeImageconstraintProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3" + +var ( + file_metalstack_api_v2_size_imageconstraint_proto_rawDescOnce sync.Once + file_metalstack_api_v2_size_imageconstraint_proto_rawDescData []byte +) + +func file_metalstack_api_v2_size_imageconstraint_proto_rawDescGZIP() []byte { + file_metalstack_api_v2_size_imageconstraint_proto_rawDescOnce.Do(func() { + file_metalstack_api_v2_size_imageconstraint_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_size_imageconstraint_proto_rawDesc), len(file_metalstack_api_v2_size_imageconstraint_proto_rawDesc))) + }) + return file_metalstack_api_v2_size_imageconstraint_proto_rawDescData +} + +var file_metalstack_api_v2_size_imageconstraint_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_metalstack_api_v2_size_imageconstraint_proto_goTypes = []any{ + (*SizeImageConstraintServiceTryRequest)(nil), // 0: metalstack.api.v2.SizeImageConstraintServiceTryRequest + (*SizeImageConstraintServiceTryResponse)(nil), // 1: metalstack.api.v2.SizeImageConstraintServiceTryResponse + (*SizeImageConstraint)(nil), // 2: metalstack.api.v2.SizeImageConstraint + (*ImageConstraint)(nil), // 3: metalstack.api.v2.ImageConstraint + (*SizeImageConstraintQuery)(nil), // 4: metalstack.api.v2.SizeImageConstraintQuery + (*Meta)(nil), // 5: metalstack.api.v2.Meta +} +var file_metalstack_api_v2_size_imageconstraint_proto_depIdxs = []int32{ + 3, // 0: metalstack.api.v2.SizeImageConstraint.image_constraints:type_name -> metalstack.api.v2.ImageConstraint + 5, // 1: metalstack.api.v2.SizeImageConstraint.meta:type_name -> metalstack.api.v2.Meta + 0, // 2: metalstack.api.v2.SizeImageConstraintService.Try:input_type -> metalstack.api.v2.SizeImageConstraintServiceTryRequest + 1, // 3: metalstack.api.v2.SizeImageConstraintService.Try:output_type -> metalstack.api.v2.SizeImageConstraintServiceTryResponse + 3, // [3:4] is the sub-list for method output_type + 2, // [2:3] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_metalstack_api_v2_size_imageconstraint_proto_init() } +func file_metalstack_api_v2_size_imageconstraint_proto_init() { + if File_metalstack_api_v2_size_imageconstraint_proto != nil { + return + } + file_metalstack_api_v2_common_proto_init() + file_metalstack_api_v2_predefined_rules_proto_init() + file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[2].OneofWrappers = []any{} + file_metalstack_api_v2_size_imageconstraint_proto_msgTypes[4].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_size_imageconstraint_proto_rawDesc), len(file_metalstack_api_v2_size_imageconstraint_proto_rawDesc)), + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_metalstack_api_v2_size_imageconstraint_proto_goTypes, + DependencyIndexes: file_metalstack_api_v2_size_imageconstraint_proto_depIdxs, + MessageInfos: file_metalstack_api_v2_size_imageconstraint_proto_msgTypes, + }.Build() + File_metalstack_api_v2_size_imageconstraint_proto = out.File + file_metalstack_api_v2_size_imageconstraint_proto_goTypes = nil + file_metalstack_api_v2_size_imageconstraint_proto_depIdxs = nil +} diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index 187d583f..8dca7ad8 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -15,6 +15,7 @@ func GetServices() []string { "metalstack.admin.v2.NetworkService", "metalstack.admin.v2.PartitionService", "metalstack.admin.v2.ProjectService", + "metalstack.admin.v2.SizeImageConstraintService", "metalstack.admin.v2.SizeReservationService", "metalstack.admin.v2.SizeService", "metalstack.admin.v2.SwitchService", @@ -31,6 +32,7 @@ func GetServices() []string { "metalstack.api.v2.NetworkService", "metalstack.api.v2.PartitionService", "metalstack.api.v2.ProjectService", + "metalstack.api.v2.SizeImageConstraintService", "metalstack.api.v2.SizeReservationService", "metalstack.api.v2.SizeService", "metalstack.api.v2.TenantService", @@ -80,6 +82,11 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.admin.v2.SizeService/Create", "/metalstack.admin.v2.SizeService/Update", "/metalstack.admin.v2.SizeService/Delete", + "/metalstack.admin.v2.SizeImageConstraintService/Create", + "/metalstack.admin.v2.SizeImageConstraintService/Update", + "/metalstack.admin.v2.SizeImageConstraintService/Delete", + "/metalstack.admin.v2.SizeImageConstraintService/Get", + "/metalstack.admin.v2.SizeImageConstraintService/List", "/metalstack.admin.v2.SizeReservationService/Create", "/metalstack.admin.v2.SizeReservationService/Update", "/metalstack.admin.v2.SizeReservationService/Delete", @@ -116,6 +123,8 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.admin.v2.NetworkService/List", "/metalstack.admin.v2.PartitionService/Capacity", "/metalstack.admin.v2.ProjectService/List", + "/metalstack.admin.v2.SizeImageConstraintService/Get", + "/metalstack.admin.v2.SizeImageConstraintService/List", "/metalstack.admin.v2.SizeReservationService/List", "/metalstack.admin.v2.SwitchService/Get", "/metalstack.admin.v2.SwitchService/List", @@ -278,6 +287,11 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.admin.v2.PartitionService/Delete": true, "/metalstack.admin.v2.PartitionService/Update": true, "/metalstack.admin.v2.ProjectService/List": true, + "/metalstack.admin.v2.SizeImageConstraintService/Create": true, + "/metalstack.admin.v2.SizeImageConstraintService/Delete": true, + "/metalstack.admin.v2.SizeImageConstraintService/Get": true, + "/metalstack.admin.v2.SizeImageConstraintService/List": true, + "/metalstack.admin.v2.SizeImageConstraintService/Update": true, "/metalstack.admin.v2.SizeReservationService/Create": true, "/metalstack.admin.v2.SizeReservationService/Delete": true, "/metalstack.admin.v2.SizeReservationService/List": true, @@ -344,6 +358,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.ProjectService/RemoveMember": true, "/metalstack.api.v2.ProjectService/Update": true, "/metalstack.api.v2.ProjectService/UpdateMember": true, + "/metalstack.api.v2.SizeImageConstraintService/Try": true, "/metalstack.api.v2.SizeReservationService/Get": true, "/metalstack.api.v2.SizeReservationService/List": true, "/metalstack.api.v2.SizeService/Get": true, @@ -393,84 +408,90 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.VersionService/Get": true, }, Self: map[string]bool{ - "/metalstack.api.v2.FilesystemService/Get": true, - "/metalstack.api.v2.FilesystemService/List": true, - "/metalstack.api.v2.FilesystemService/Match": true, - "/metalstack.api.v2.ImageService/Get": true, - "/metalstack.api.v2.ImageService/Latest": true, - "/metalstack.api.v2.ImageService/List": true, - "/metalstack.api.v2.MethodService/TokenScopedList": true, - "/metalstack.api.v2.PartitionService/Get": true, - "/metalstack.api.v2.PartitionService/List": true, - "/metalstack.api.v2.ProjectService/InviteAccept": true, - "/metalstack.api.v2.ProjectService/InviteGet": true, - "/metalstack.api.v2.ProjectService/List": true, - "/metalstack.api.v2.SizeService/Get": true, - "/metalstack.api.v2.SizeService/List": true, - "/metalstack.api.v2.TenantService/Create": true, - "/metalstack.api.v2.TenantService/InviteAccept": true, - "/metalstack.api.v2.TenantService/InviteGet": true, - "/metalstack.api.v2.TenantService/List": true, - "/metalstack.api.v2.TokenService/Create": true, - "/metalstack.api.v2.TokenService/Get": true, - "/metalstack.api.v2.TokenService/List": true, - "/metalstack.api.v2.TokenService/Refresh": true, - "/metalstack.api.v2.TokenService/Revoke": true, - "/metalstack.api.v2.TokenService/Update": true, - "/metalstack.api.v2.UserService/Get": true, + "/metalstack.api.v2.FilesystemService/Get": true, + "/metalstack.api.v2.FilesystemService/List": true, + "/metalstack.api.v2.FilesystemService/Match": true, + "/metalstack.api.v2.ImageService/Get": true, + "/metalstack.api.v2.ImageService/Latest": true, + "/metalstack.api.v2.ImageService/List": true, + "/metalstack.api.v2.MethodService/TokenScopedList": true, + "/metalstack.api.v2.PartitionService/Get": true, + "/metalstack.api.v2.PartitionService/List": true, + "/metalstack.api.v2.ProjectService/InviteAccept": true, + "/metalstack.api.v2.ProjectService/InviteGet": true, + "/metalstack.api.v2.ProjectService/List": true, + "/metalstack.api.v2.SizeImageConstraintService/Try": true, + "/metalstack.api.v2.SizeService/Get": true, + "/metalstack.api.v2.SizeService/List": true, + "/metalstack.api.v2.TenantService/Create": true, + "/metalstack.api.v2.TenantService/InviteAccept": true, + "/metalstack.api.v2.TenantService/InviteGet": true, + "/metalstack.api.v2.TenantService/List": true, + "/metalstack.api.v2.TokenService/Create": true, + "/metalstack.api.v2.TokenService/Get": true, + "/metalstack.api.v2.TokenService/List": true, + "/metalstack.api.v2.TokenService/Refresh": true, + "/metalstack.api.v2.TokenService/Revoke": true, + "/metalstack.api.v2.TokenService/Update": true, + "/metalstack.api.v2.UserService/Get": true, }, Admin: map[string]bool{ - "/metalstack.admin.v2.ComponentService/Delete": true, - "/metalstack.admin.v2.ComponentService/Get": true, - "/metalstack.admin.v2.ComponentService/List": true, - "/metalstack.admin.v2.FilesystemService/Create": true, - "/metalstack.admin.v2.FilesystemService/Delete": true, - "/metalstack.admin.v2.FilesystemService/Update": true, - "/metalstack.admin.v2.IPService/List": true, - "/metalstack.admin.v2.ImageService/Create": true, - "/metalstack.admin.v2.ImageService/Delete": true, - "/metalstack.admin.v2.ImageService/Update": true, - "/metalstack.admin.v2.ImageService/Usage": true, - "/metalstack.admin.v2.MachineService/BMCCommand": true, - "/metalstack.admin.v2.MachineService/ConsolePassword": true, - "/metalstack.admin.v2.MachineService/Get": true, - "/metalstack.admin.v2.MachineService/GetBMC": true, - "/metalstack.admin.v2.MachineService/List": true, - "/metalstack.admin.v2.MachineService/ListBMC": true, - "/metalstack.admin.v2.NetworkService/Create": true, - "/metalstack.admin.v2.NetworkService/Delete": true, - "/metalstack.admin.v2.NetworkService/Get": true, - "/metalstack.admin.v2.NetworkService/List": true, - "/metalstack.admin.v2.NetworkService/Update": true, - "/metalstack.admin.v2.PartitionService/Capacity": true, - "/metalstack.admin.v2.PartitionService/Create": true, - "/metalstack.admin.v2.PartitionService/Delete": true, - "/metalstack.admin.v2.PartitionService/Update": true, - "/metalstack.admin.v2.ProjectService/List": true, - "/metalstack.admin.v2.SizeReservationService/Create": true, - "/metalstack.admin.v2.SizeReservationService/Delete": true, - "/metalstack.admin.v2.SizeReservationService/List": true, - "/metalstack.admin.v2.SizeReservationService/Update": true, - "/metalstack.admin.v2.SizeService/Create": true, - "/metalstack.admin.v2.SizeService/Delete": true, - "/metalstack.admin.v2.SizeService/Update": true, - "/metalstack.admin.v2.SwitchService/Delete": true, - "/metalstack.admin.v2.SwitchService/Get": true, - "/metalstack.admin.v2.SwitchService/List": true, - "/metalstack.admin.v2.SwitchService/Migrate": true, - "/metalstack.admin.v2.SwitchService/Port": true, - "/metalstack.admin.v2.SwitchService/Update": true, - "/metalstack.admin.v2.TaskService/Delete": true, - "/metalstack.admin.v2.TaskService/Get": true, - "/metalstack.admin.v2.TaskService/List": true, - "/metalstack.admin.v2.TaskService/Queues": true, - "/metalstack.admin.v2.TenantService/Create": true, - "/metalstack.admin.v2.TenantService/List": true, - "/metalstack.admin.v2.TokenService/Create": true, - "/metalstack.admin.v2.TokenService/List": true, - "/metalstack.admin.v2.TokenService/Revoke": true, - "/metalstack.admin.v2.VPNService/AuthKey": true, - "/metalstack.admin.v2.VPNService/ListNodes": true, + "/metalstack.admin.v2.ComponentService/Delete": true, + "/metalstack.admin.v2.ComponentService/Get": true, + "/metalstack.admin.v2.ComponentService/List": true, + "/metalstack.admin.v2.FilesystemService/Create": true, + "/metalstack.admin.v2.FilesystemService/Delete": true, + "/metalstack.admin.v2.FilesystemService/Update": true, + "/metalstack.admin.v2.IPService/List": true, + "/metalstack.admin.v2.ImageService/Create": true, + "/metalstack.admin.v2.ImageService/Delete": true, + "/metalstack.admin.v2.ImageService/Update": true, + "/metalstack.admin.v2.ImageService/Usage": true, + "/metalstack.admin.v2.MachineService/BMCCommand": true, + "/metalstack.admin.v2.MachineService/ConsolePassword": true, + "/metalstack.admin.v2.MachineService/Get": true, + "/metalstack.admin.v2.MachineService/GetBMC": true, + "/metalstack.admin.v2.MachineService/List": true, + "/metalstack.admin.v2.MachineService/ListBMC": true, + "/metalstack.admin.v2.NetworkService/Create": true, + "/metalstack.admin.v2.NetworkService/Delete": true, + "/metalstack.admin.v2.NetworkService/Get": true, + "/metalstack.admin.v2.NetworkService/List": true, + "/metalstack.admin.v2.NetworkService/Update": true, + "/metalstack.admin.v2.PartitionService/Capacity": true, + "/metalstack.admin.v2.PartitionService/Create": true, + "/metalstack.admin.v2.PartitionService/Delete": true, + "/metalstack.admin.v2.PartitionService/Update": true, + "/metalstack.admin.v2.ProjectService/List": true, + "/metalstack.admin.v2.SizeImageConstraintService/Create": true, + "/metalstack.admin.v2.SizeImageConstraintService/Delete": true, + "/metalstack.admin.v2.SizeImageConstraintService/Get": true, + "/metalstack.admin.v2.SizeImageConstraintService/List": true, + "/metalstack.admin.v2.SizeImageConstraintService/Update": true, + "/metalstack.admin.v2.SizeReservationService/Create": true, + "/metalstack.admin.v2.SizeReservationService/Delete": true, + "/metalstack.admin.v2.SizeReservationService/List": true, + "/metalstack.admin.v2.SizeReservationService/Update": true, + "/metalstack.admin.v2.SizeService/Create": true, + "/metalstack.admin.v2.SizeService/Delete": true, + "/metalstack.admin.v2.SizeService/Update": true, + "/metalstack.admin.v2.SwitchService/Delete": true, + "/metalstack.admin.v2.SwitchService/Get": true, + "/metalstack.admin.v2.SwitchService/List": true, + "/metalstack.admin.v2.SwitchService/Migrate": true, + "/metalstack.admin.v2.SwitchService/Port": true, + "/metalstack.admin.v2.SwitchService/Update": true, + "/metalstack.admin.v2.TaskService/Delete": true, + "/metalstack.admin.v2.TaskService/Get": true, + "/metalstack.admin.v2.TaskService/List": true, + "/metalstack.admin.v2.TaskService/Queues": true, + "/metalstack.admin.v2.TenantService/Create": true, + "/metalstack.admin.v2.TenantService/List": true, + "/metalstack.admin.v2.TokenService/Create": true, + "/metalstack.admin.v2.TokenService/List": true, + "/metalstack.admin.v2.TokenService/Revoke": true, + "/metalstack.admin.v2.VPNService/AuthKey": true, + "/metalstack.admin.v2.VPNService/ListNodes": true, }, Infra: map[string]bool{ "/metalstack.infra.v2.BMCService/BMCCommandDone": true, @@ -562,6 +583,11 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.admin.v2.PartitionService/Delete": true, "/metalstack.admin.v2.PartitionService/Update": true, "/metalstack.admin.v2.ProjectService/List": false, + "/metalstack.admin.v2.SizeImageConstraintService/Create": false, + "/metalstack.admin.v2.SizeImageConstraintService/Delete": false, + "/metalstack.admin.v2.SizeImageConstraintService/Get": false, + "/metalstack.admin.v2.SizeImageConstraintService/List": false, + "/metalstack.admin.v2.SizeImageConstraintService/Update": false, "/metalstack.admin.v2.SizeReservationService/Create": true, "/metalstack.admin.v2.SizeReservationService/Delete": true, "/metalstack.admin.v2.SizeReservationService/List": false, @@ -628,6 +654,7 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.api.v2.ProjectService/RemoveMember": true, "/metalstack.api.v2.ProjectService/Update": true, "/metalstack.api.v2.ProjectService/UpdateMember": true, + "/metalstack.api.v2.SizeImageConstraintService/Try": false, "/metalstack.api.v2.SizeReservationService/Get": false, "/metalstack.api.v2.SizeReservationService/List": false, "/metalstack.api.v2.SizeService/Get": false, diff --git a/go/tests/mock_clients.go b/go/tests/mock_clients.go index c5d2caca..2d014cc1 100755 --- a/go/tests/mock_clients.go +++ b/go/tests/mock_clients.go @@ -33,74 +33,78 @@ type ( t *testing.T } adminv2 struct { - componentservice *adminv2mocks.ComponentServiceClient - filesystemservice *adminv2mocks.FilesystemServiceClient - imageservice *adminv2mocks.ImageServiceClient - ipservice *adminv2mocks.IPServiceClient - machineservice *adminv2mocks.MachineServiceClient - networkservice *adminv2mocks.NetworkServiceClient - partitionservice *adminv2mocks.PartitionServiceClient - projectservice *adminv2mocks.ProjectServiceClient - sizeservice *adminv2mocks.SizeServiceClient - sizereservationservice *adminv2mocks.SizeReservationServiceClient - switchservice *adminv2mocks.SwitchServiceClient - taskservice *adminv2mocks.TaskServiceClient - tenantservice *adminv2mocks.TenantServiceClient - tokenservice *adminv2mocks.TokenServiceClient - vpnservice *adminv2mocks.VPNServiceClient + componentservice *adminv2mocks.ComponentServiceClient + filesystemservice *adminv2mocks.FilesystemServiceClient + imageservice *adminv2mocks.ImageServiceClient + ipservice *adminv2mocks.IPServiceClient + machineservice *adminv2mocks.MachineServiceClient + networkservice *adminv2mocks.NetworkServiceClient + partitionservice *adminv2mocks.PartitionServiceClient + projectservice *adminv2mocks.ProjectServiceClient + sizeservice *adminv2mocks.SizeServiceClient + sizeimageconstraintservice *adminv2mocks.SizeImageConstraintServiceClient + sizereservationservice *adminv2mocks.SizeReservationServiceClient + switchservice *adminv2mocks.SwitchServiceClient + taskservice *adminv2mocks.TaskServiceClient + tenantservice *adminv2mocks.TenantServiceClient + tokenservice *adminv2mocks.TokenServiceClient + vpnservice *adminv2mocks.VPNServiceClient } Adminv2MockFns struct { - Component func(m *mock.Mock) - Filesystem func(m *mock.Mock) - Image func(m *mock.Mock) - IP func(m *mock.Mock) - Machine func(m *mock.Mock) - Network func(m *mock.Mock) - Partition func(m *mock.Mock) - Project func(m *mock.Mock) - Size func(m *mock.Mock) - SizeReservation func(m *mock.Mock) - Switch func(m *mock.Mock) - Task func(m *mock.Mock) - Tenant func(m *mock.Mock) - Token func(m *mock.Mock) - VPN func(m *mock.Mock) + Component func(m *mock.Mock) + Filesystem func(m *mock.Mock) + Image func(m *mock.Mock) + IP func(m *mock.Mock) + Machine func(m *mock.Mock) + Network func(m *mock.Mock) + Partition func(m *mock.Mock) + Project func(m *mock.Mock) + Size func(m *mock.Mock) + SizeImageConstraint func(m *mock.Mock) + SizeReservation func(m *mock.Mock) + Switch func(m *mock.Mock) + Task func(m *mock.Mock) + Tenant func(m *mock.Mock) + Token func(m *mock.Mock) + VPN func(m *mock.Mock) } apiv2 struct { - filesystemservice *apiv2mocks.FilesystemServiceClient - healthservice *apiv2mocks.HealthServiceClient - imageservice *apiv2mocks.ImageServiceClient - ipservice *apiv2mocks.IPServiceClient - machineservice *apiv2mocks.MachineServiceClient - methodservice *apiv2mocks.MethodServiceClient - networkservice *apiv2mocks.NetworkServiceClient - partitionservice *apiv2mocks.PartitionServiceClient - projectservice *apiv2mocks.ProjectServiceClient - sizeservice *apiv2mocks.SizeServiceClient - sizereservationservice *apiv2mocks.SizeReservationServiceClient - tenantservice *apiv2mocks.TenantServiceClient - tokenservice *apiv2mocks.TokenServiceClient - userservice *apiv2mocks.UserServiceClient - versionservice *apiv2mocks.VersionServiceClient + filesystemservice *apiv2mocks.FilesystemServiceClient + healthservice *apiv2mocks.HealthServiceClient + imageservice *apiv2mocks.ImageServiceClient + ipservice *apiv2mocks.IPServiceClient + machineservice *apiv2mocks.MachineServiceClient + methodservice *apiv2mocks.MethodServiceClient + networkservice *apiv2mocks.NetworkServiceClient + partitionservice *apiv2mocks.PartitionServiceClient + projectservice *apiv2mocks.ProjectServiceClient + sizeservice *apiv2mocks.SizeServiceClient + sizeimageconstraintservice *apiv2mocks.SizeImageConstraintServiceClient + sizereservationservice *apiv2mocks.SizeReservationServiceClient + tenantservice *apiv2mocks.TenantServiceClient + tokenservice *apiv2mocks.TokenServiceClient + userservice *apiv2mocks.UserServiceClient + versionservice *apiv2mocks.VersionServiceClient } Apiv2MockFns struct { - Filesystem func(m *mock.Mock) - Health func(m *mock.Mock) - Image func(m *mock.Mock) - IP func(m *mock.Mock) - Machine func(m *mock.Mock) - Method func(m *mock.Mock) - Network func(m *mock.Mock) - Partition func(m *mock.Mock) - Project func(m *mock.Mock) - Size func(m *mock.Mock) - SizeReservation func(m *mock.Mock) - Tenant func(m *mock.Mock) - Token func(m *mock.Mock) - User func(m *mock.Mock) - Version func(m *mock.Mock) + Filesystem func(m *mock.Mock) + Health func(m *mock.Mock) + Image func(m *mock.Mock) + IP func(m *mock.Mock) + Machine func(m *mock.Mock) + Method func(m *mock.Mock) + Network func(m *mock.Mock) + Partition func(m *mock.Mock) + Project func(m *mock.Mock) + Size func(m *mock.Mock) + SizeImageConstraint func(m *mock.Mock) + SizeReservation func(m *mock.Mock) + Tenant func(m *mock.Mock) + Token func(m *mock.Mock) + User func(m *mock.Mock) + Version func(m *mock.Mock) } infrav2 struct { bmcservice *infrav2mocks.BMCServiceClient @@ -149,21 +153,22 @@ func (w wrapper) Adminv2(fns *Adminv2MockFns) *adminv2 { func newadminv2(t *testing.T, fns *Adminv2MockFns) *adminv2 { a := &adminv2{ - componentservice: adminv2mocks.NewComponentServiceClient(t), - filesystemservice: adminv2mocks.NewFilesystemServiceClient(t), - imageservice: adminv2mocks.NewImageServiceClient(t), - ipservice: adminv2mocks.NewIPServiceClient(t), - machineservice: adminv2mocks.NewMachineServiceClient(t), - networkservice: adminv2mocks.NewNetworkServiceClient(t), - partitionservice: adminv2mocks.NewPartitionServiceClient(t), - projectservice: adminv2mocks.NewProjectServiceClient(t), - sizeservice: adminv2mocks.NewSizeServiceClient(t), - sizereservationservice: adminv2mocks.NewSizeReservationServiceClient(t), - switchservice: adminv2mocks.NewSwitchServiceClient(t), - taskservice: adminv2mocks.NewTaskServiceClient(t), - tenantservice: adminv2mocks.NewTenantServiceClient(t), - tokenservice: adminv2mocks.NewTokenServiceClient(t), - vpnservice: adminv2mocks.NewVPNServiceClient(t), + componentservice: adminv2mocks.NewComponentServiceClient(t), + filesystemservice: adminv2mocks.NewFilesystemServiceClient(t), + imageservice: adminv2mocks.NewImageServiceClient(t), + ipservice: adminv2mocks.NewIPServiceClient(t), + machineservice: adminv2mocks.NewMachineServiceClient(t), + networkservice: adminv2mocks.NewNetworkServiceClient(t), + partitionservice: adminv2mocks.NewPartitionServiceClient(t), + projectservice: adminv2mocks.NewProjectServiceClient(t), + sizeservice: adminv2mocks.NewSizeServiceClient(t), + sizeimageconstraintservice: adminv2mocks.NewSizeImageConstraintServiceClient(t), + sizereservationservice: adminv2mocks.NewSizeReservationServiceClient(t), + switchservice: adminv2mocks.NewSwitchServiceClient(t), + taskservice: adminv2mocks.NewTaskServiceClient(t), + tenantservice: adminv2mocks.NewTenantServiceClient(t), + tokenservice: adminv2mocks.NewTokenServiceClient(t), + vpnservice: adminv2mocks.NewVPNServiceClient(t), } if fns != nil { @@ -194,6 +199,9 @@ func newadminv2(t *testing.T, fns *Adminv2MockFns) *adminv2 { if fns.Size != nil { fns.Size(&a.sizeservice.Mock) } + if fns.SizeImageConstraint != nil { + fns.SizeImageConstraint(&a.sizeimageconstraintservice.Mock) + } if fns.SizeReservation != nil { fns.SizeReservation(&a.sizereservationservice.Mock) } @@ -245,6 +253,9 @@ func (c *adminv2) Project() adminv2connect.ProjectServiceClient { func (c *adminv2) Size() adminv2connect.SizeServiceClient { return c.sizeservice } +func (c *adminv2) SizeImageConstraint() adminv2connect.SizeImageConstraintServiceClient { + return c.sizeimageconstraintservice +} func (c *adminv2) SizeReservation() adminv2connect.SizeReservationServiceClient { return c.sizereservationservice } @@ -270,21 +281,22 @@ func (w wrapper) Apiv2(fns *Apiv2MockFns) *apiv2 { func newapiv2(t *testing.T, fns *Apiv2MockFns) *apiv2 { a := &apiv2{ - filesystemservice: apiv2mocks.NewFilesystemServiceClient(t), - healthservice: apiv2mocks.NewHealthServiceClient(t), - imageservice: apiv2mocks.NewImageServiceClient(t), - ipservice: apiv2mocks.NewIPServiceClient(t), - machineservice: apiv2mocks.NewMachineServiceClient(t), - methodservice: apiv2mocks.NewMethodServiceClient(t), - networkservice: apiv2mocks.NewNetworkServiceClient(t), - partitionservice: apiv2mocks.NewPartitionServiceClient(t), - projectservice: apiv2mocks.NewProjectServiceClient(t), - sizeservice: apiv2mocks.NewSizeServiceClient(t), - sizereservationservice: apiv2mocks.NewSizeReservationServiceClient(t), - tenantservice: apiv2mocks.NewTenantServiceClient(t), - tokenservice: apiv2mocks.NewTokenServiceClient(t), - userservice: apiv2mocks.NewUserServiceClient(t), - versionservice: apiv2mocks.NewVersionServiceClient(t), + filesystemservice: apiv2mocks.NewFilesystemServiceClient(t), + healthservice: apiv2mocks.NewHealthServiceClient(t), + imageservice: apiv2mocks.NewImageServiceClient(t), + ipservice: apiv2mocks.NewIPServiceClient(t), + machineservice: apiv2mocks.NewMachineServiceClient(t), + methodservice: apiv2mocks.NewMethodServiceClient(t), + networkservice: apiv2mocks.NewNetworkServiceClient(t), + partitionservice: apiv2mocks.NewPartitionServiceClient(t), + projectservice: apiv2mocks.NewProjectServiceClient(t), + sizeservice: apiv2mocks.NewSizeServiceClient(t), + sizeimageconstraintservice: apiv2mocks.NewSizeImageConstraintServiceClient(t), + sizereservationservice: apiv2mocks.NewSizeReservationServiceClient(t), + tenantservice: apiv2mocks.NewTenantServiceClient(t), + tokenservice: apiv2mocks.NewTokenServiceClient(t), + userservice: apiv2mocks.NewUserServiceClient(t), + versionservice: apiv2mocks.NewVersionServiceClient(t), } if fns != nil { @@ -318,6 +330,9 @@ func newapiv2(t *testing.T, fns *Apiv2MockFns) *apiv2 { if fns.Size != nil { fns.Size(&a.sizeservice.Mock) } + if fns.SizeImageConstraint != nil { + fns.SizeImageConstraint(&a.sizeimageconstraintservice.Mock) + } if fns.SizeReservation != nil { fns.SizeReservation(&a.sizereservationservice.Mock) } @@ -369,6 +384,9 @@ func (c *apiv2) Project() apiv2connect.ProjectServiceClient { func (c *apiv2) Size() apiv2connect.SizeServiceClient { return c.sizeservice } +func (c *apiv2) SizeImageConstraint() apiv2connect.SizeImageConstraintServiceClient { + return c.sizeimageconstraintservice +} func (c *apiv2) SizeReservation() apiv2connect.SizeReservationServiceClient { return c.sizereservationservice } diff --git a/go/tests/mocks/client/Adminv2.go b/go/tests/mocks/client/Adminv2.go index e6733eba..d15f4251 100644 --- a/go/tests/mocks/client/Adminv2.go +++ b/go/tests/mocks/client/Adminv2.go @@ -450,6 +450,52 @@ func (_c *Adminv2_Size_Call) RunAndReturn(run func() adminv2connect.SizeServiceC return _c } +// SizeImageConstraint provides a mock function for the type Adminv2 +func (_mock *Adminv2) SizeImageConstraint() adminv2connect.SizeImageConstraintServiceClient { + ret := _mock.Called() + + if len(ret) == 0 { + panic("no return value specified for SizeImageConstraint") + } + + var r0 adminv2connect.SizeImageConstraintServiceClient + if returnFunc, ok := ret.Get(0).(func() adminv2connect.SizeImageConstraintServiceClient); ok { + r0 = returnFunc() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(adminv2connect.SizeImageConstraintServiceClient) + } + } + return r0 +} + +// Adminv2_SizeImageConstraint_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SizeImageConstraint' +type Adminv2_SizeImageConstraint_Call struct { + *mock.Call +} + +// SizeImageConstraint is a helper method to define mock.On call +func (_e *Adminv2_Expecter) SizeImageConstraint() *Adminv2_SizeImageConstraint_Call { + return &Adminv2_SizeImageConstraint_Call{Call: _e.mock.On("SizeImageConstraint")} +} + +func (_c *Adminv2_SizeImageConstraint_Call) Run(run func()) *Adminv2_SizeImageConstraint_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *Adminv2_SizeImageConstraint_Call) Return(sizeImageConstraintServiceClient adminv2connect.SizeImageConstraintServiceClient) *Adminv2_SizeImageConstraint_Call { + _c.Call.Return(sizeImageConstraintServiceClient) + return _c +} + +func (_c *Adminv2_SizeImageConstraint_Call) RunAndReturn(run func() adminv2connect.SizeImageConstraintServiceClient) *Adminv2_SizeImageConstraint_Call { + _c.Call.Return(run) + return _c +} + // SizeReservation provides a mock function for the type Adminv2 func (_mock *Adminv2) SizeReservation() adminv2connect.SizeReservationServiceClient { ret := _mock.Called() diff --git a/go/tests/mocks/client/Apiv2.go b/go/tests/mocks/client/Apiv2.go index b637cb87..5bb35362 100644 --- a/go/tests/mocks/client/Apiv2.go +++ b/go/tests/mocks/client/Apiv2.go @@ -496,6 +496,52 @@ func (_c *Apiv2_Size_Call) RunAndReturn(run func() apiv2connect.SizeServiceClien return _c } +// SizeImageConstraint provides a mock function for the type Apiv2 +func (_mock *Apiv2) SizeImageConstraint() apiv2connect.SizeImageConstraintServiceClient { + ret := _mock.Called() + + if len(ret) == 0 { + panic("no return value specified for SizeImageConstraint") + } + + var r0 apiv2connect.SizeImageConstraintServiceClient + if returnFunc, ok := ret.Get(0).(func() apiv2connect.SizeImageConstraintServiceClient); ok { + r0 = returnFunc() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(apiv2connect.SizeImageConstraintServiceClient) + } + } + return r0 +} + +// Apiv2_SizeImageConstraint_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SizeImageConstraint' +type Apiv2_SizeImageConstraint_Call struct { + *mock.Call +} + +// SizeImageConstraint is a helper method to define mock.On call +func (_e *Apiv2_Expecter) SizeImageConstraint() *Apiv2_SizeImageConstraint_Call { + return &Apiv2_SizeImageConstraint_Call{Call: _e.mock.On("SizeImageConstraint")} +} + +func (_c *Apiv2_SizeImageConstraint_Call) Run(run func()) *Apiv2_SizeImageConstraint_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *Apiv2_SizeImageConstraint_Call) Return(sizeImageConstraintServiceClient apiv2connect.SizeImageConstraintServiceClient) *Apiv2_SizeImageConstraint_Call { + _c.Call.Return(sizeImageConstraintServiceClient) + return _c +} + +func (_c *Apiv2_SizeImageConstraint_Call) RunAndReturn(run func() apiv2connect.SizeImageConstraintServiceClient) *Apiv2_SizeImageConstraint_Call { + _c.Call.Return(run) + return _c +} + // SizeReservation provides a mock function for the type Apiv2 func (_mock *Apiv2) SizeReservation() apiv2connect.SizeReservationServiceClient { ret := _mock.Called() diff --git a/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceClient.go b/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceClient.go new file mode 100644 index 00000000..7765dd47 --- /dev/null +++ b/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceClient.go @@ -0,0 +1,379 @@ +// Code generated by mockery; DO NOT EDIT. +// github.com/vektra/mockery +// template: testify + +package adminv2connect + +import ( + "context" + + "github.com/metal-stack/api/go/metalstack/admin/v2" + mock "github.com/stretchr/testify/mock" +) + +// NewSizeImageConstraintServiceClient creates a new instance of SizeImageConstraintServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewSizeImageConstraintServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *SizeImageConstraintServiceClient { + mock := &SizeImageConstraintServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} + +// SizeImageConstraintServiceClient is an autogenerated mock type for the SizeImageConstraintServiceClient type +type SizeImageConstraintServiceClient struct { + mock.Mock +} + +type SizeImageConstraintServiceClient_Expecter struct { + mock *mock.Mock +} + +func (_m *SizeImageConstraintServiceClient) EXPECT() *SizeImageConstraintServiceClient_Expecter { + return &SizeImageConstraintServiceClient_Expecter{mock: &_m.Mock} +} + +// Create provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) Create(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceCreateRequest) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *adminv2.SizeImageConstraintServiceCreateResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) *adminv2.SizeImageConstraintServiceCreateResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceCreateResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_Create_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Create' +type SizeImageConstraintServiceClient_Create_Call struct { + *mock.Call +} + +// Create is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest +func (_e *SizeImageConstraintServiceClient_Expecter) Create(context1 interface{}, sizeImageConstraintServiceCreateRequest interface{}) *SizeImageConstraintServiceClient_Create_Call { + return &SizeImageConstraintServiceClient_Create_Call{Call: _e.mock.On("Create", context1, sizeImageConstraintServiceCreateRequest)} +} + +func (_c *SizeImageConstraintServiceClient_Create_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest)) *SizeImageConstraintServiceClient_Create_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceCreateRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceCreateRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Create_Call) Return(sizeImageConstraintServiceCreateResponse *adminv2.SizeImageConstraintServiceCreateResponse, err error) *SizeImageConstraintServiceClient_Create_Call { + _c.Call.Return(sizeImageConstraintServiceCreateResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Create_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error)) *SizeImageConstraintServiceClient_Create_Call { + _c.Call.Return(run) + return _c +} + +// Delete provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) Delete(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceDeleteRequest) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *adminv2.SizeImageConstraintServiceDeleteResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) *adminv2.SizeImageConstraintServiceDeleteResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceDeleteResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete' +type SizeImageConstraintServiceClient_Delete_Call struct { + *mock.Call +} + +// Delete is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest +func (_e *SizeImageConstraintServiceClient_Expecter) Delete(context1 interface{}, sizeImageConstraintServiceDeleteRequest interface{}) *SizeImageConstraintServiceClient_Delete_Call { + return &SizeImageConstraintServiceClient_Delete_Call{Call: _e.mock.On("Delete", context1, sizeImageConstraintServiceDeleteRequest)} +} + +func (_c *SizeImageConstraintServiceClient_Delete_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest)) *SizeImageConstraintServiceClient_Delete_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceDeleteRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceDeleteRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Delete_Call) Return(sizeImageConstraintServiceDeleteResponse *adminv2.SizeImageConstraintServiceDeleteResponse, err error) *SizeImageConstraintServiceClient_Delete_Call { + _c.Call.Return(sizeImageConstraintServiceDeleteResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Delete_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error)) *SizeImageConstraintServiceClient_Delete_Call { + _c.Call.Return(run) + return _c +} + +// Get provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) Get(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceGetRequest) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *adminv2.SizeImageConstraintServiceGetResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceGetRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) *adminv2.SizeImageConstraintServiceGetResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceGetRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceGetResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceGetRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get' +type SizeImageConstraintServiceClient_Get_Call struct { + *mock.Call +} + +// Get is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest +func (_e *SizeImageConstraintServiceClient_Expecter) Get(context1 interface{}, sizeImageConstraintServiceGetRequest interface{}) *SizeImageConstraintServiceClient_Get_Call { + return &SizeImageConstraintServiceClient_Get_Call{Call: _e.mock.On("Get", context1, sizeImageConstraintServiceGetRequest)} +} + +func (_c *SizeImageConstraintServiceClient_Get_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest)) *SizeImageConstraintServiceClient_Get_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceGetRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceGetRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Get_Call) Return(sizeImageConstraintServiceGetResponse *adminv2.SizeImageConstraintServiceGetResponse, err error) *SizeImageConstraintServiceClient_Get_Call { + _c.Call.Return(sizeImageConstraintServiceGetResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Get_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error)) *SizeImageConstraintServiceClient_Get_Call { + _c.Call.Return(run) + return _c +} + +// List provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) List(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceListRequest) + + if len(ret) == 0 { + panic("no return value specified for List") + } + + var r0 *adminv2.SizeImageConstraintServiceListResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceListRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) *adminv2.SizeImageConstraintServiceListResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceListRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceListResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceListRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List' +type SizeImageConstraintServiceClient_List_Call struct { + *mock.Call +} + +// List is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest +func (_e *SizeImageConstraintServiceClient_Expecter) List(context1 interface{}, sizeImageConstraintServiceListRequest interface{}) *SizeImageConstraintServiceClient_List_Call { + return &SizeImageConstraintServiceClient_List_Call{Call: _e.mock.On("List", context1, sizeImageConstraintServiceListRequest)} +} + +func (_c *SizeImageConstraintServiceClient_List_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest)) *SizeImageConstraintServiceClient_List_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceListRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceListRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_List_Call) Return(sizeImageConstraintServiceListResponse *adminv2.SizeImageConstraintServiceListResponse, err error) *SizeImageConstraintServiceClient_List_Call { + _c.Call.Return(sizeImageConstraintServiceListResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_List_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error)) *SizeImageConstraintServiceClient_List_Call { + _c.Call.Return(run) + return _c +} + +// Update provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) Update(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceUpdateRequest) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *adminv2.SizeImageConstraintServiceUpdateResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) *adminv2.SizeImageConstraintServiceUpdateResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceUpdateResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update' +type SizeImageConstraintServiceClient_Update_Call struct { + *mock.Call +} + +// Update is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest +func (_e *SizeImageConstraintServiceClient_Expecter) Update(context1 interface{}, sizeImageConstraintServiceUpdateRequest interface{}) *SizeImageConstraintServiceClient_Update_Call { + return &SizeImageConstraintServiceClient_Update_Call{Call: _e.mock.On("Update", context1, sizeImageConstraintServiceUpdateRequest)} +} + +func (_c *SizeImageConstraintServiceClient_Update_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest)) *SizeImageConstraintServiceClient_Update_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceUpdateRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceUpdateRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Update_Call) Return(sizeImageConstraintServiceUpdateResponse *adminv2.SizeImageConstraintServiceUpdateResponse, err error) *SizeImageConstraintServiceClient_Update_Call { + _c.Call.Return(sizeImageConstraintServiceUpdateResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Update_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error)) *SizeImageConstraintServiceClient_Update_Call { + _c.Call.Return(run) + return _c +} diff --git a/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceHandler.go b/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceHandler.go new file mode 100644 index 00000000..8601857e --- /dev/null +++ b/go/tests/mocks/metalstack/admin/v2/adminv2connect/SizeImageConstraintServiceHandler.go @@ -0,0 +1,379 @@ +// Code generated by mockery; DO NOT EDIT. +// github.com/vektra/mockery +// template: testify + +package adminv2connect + +import ( + "context" + + "github.com/metal-stack/api/go/metalstack/admin/v2" + mock "github.com/stretchr/testify/mock" +) + +// NewSizeImageConstraintServiceHandler creates a new instance of SizeImageConstraintServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewSizeImageConstraintServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *SizeImageConstraintServiceHandler { + mock := &SizeImageConstraintServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} + +// SizeImageConstraintServiceHandler is an autogenerated mock type for the SizeImageConstraintServiceHandler type +type SizeImageConstraintServiceHandler struct { + mock.Mock +} + +type SizeImageConstraintServiceHandler_Expecter struct { + mock *mock.Mock +} + +func (_m *SizeImageConstraintServiceHandler) EXPECT() *SizeImageConstraintServiceHandler_Expecter { + return &SizeImageConstraintServiceHandler_Expecter{mock: &_m.Mock} +} + +// Create provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) Create(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceCreateRequest) + + if len(ret) == 0 { + panic("no return value specified for Create") + } + + var r0 *adminv2.SizeImageConstraintServiceCreateResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) *adminv2.SizeImageConstraintServiceCreateResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceCreateResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceCreateRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceCreateRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_Create_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Create' +type SizeImageConstraintServiceHandler_Create_Call struct { + *mock.Call +} + +// Create is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) Create(context1 interface{}, sizeImageConstraintServiceCreateRequest interface{}) *SizeImageConstraintServiceHandler_Create_Call { + return &SizeImageConstraintServiceHandler_Create_Call{Call: _e.mock.On("Create", context1, sizeImageConstraintServiceCreateRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_Create_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest)) *SizeImageConstraintServiceHandler_Create_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceCreateRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceCreateRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Create_Call) Return(sizeImageConstraintServiceCreateResponse *adminv2.SizeImageConstraintServiceCreateResponse, err error) *SizeImageConstraintServiceHandler_Create_Call { + _c.Call.Return(sizeImageConstraintServiceCreateResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Create_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceCreateRequest *adminv2.SizeImageConstraintServiceCreateRequest) (*adminv2.SizeImageConstraintServiceCreateResponse, error)) *SizeImageConstraintServiceHandler_Create_Call { + _c.Call.Return(run) + return _c +} + +// Delete provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) Delete(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceDeleteRequest) + + if len(ret) == 0 { + panic("no return value specified for Delete") + } + + var r0 *adminv2.SizeImageConstraintServiceDeleteResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) *adminv2.SizeImageConstraintServiceDeleteResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceDeleteResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceDeleteRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceDeleteRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete' +type SizeImageConstraintServiceHandler_Delete_Call struct { + *mock.Call +} + +// Delete is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) Delete(context1 interface{}, sizeImageConstraintServiceDeleteRequest interface{}) *SizeImageConstraintServiceHandler_Delete_Call { + return &SizeImageConstraintServiceHandler_Delete_Call{Call: _e.mock.On("Delete", context1, sizeImageConstraintServiceDeleteRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_Delete_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest)) *SizeImageConstraintServiceHandler_Delete_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceDeleteRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceDeleteRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Delete_Call) Return(sizeImageConstraintServiceDeleteResponse *adminv2.SizeImageConstraintServiceDeleteResponse, err error) *SizeImageConstraintServiceHandler_Delete_Call { + _c.Call.Return(sizeImageConstraintServiceDeleteResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Delete_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceDeleteRequest *adminv2.SizeImageConstraintServiceDeleteRequest) (*adminv2.SizeImageConstraintServiceDeleteResponse, error)) *SizeImageConstraintServiceHandler_Delete_Call { + _c.Call.Return(run) + return _c +} + +// Get provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) Get(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceGetRequest) + + if len(ret) == 0 { + panic("no return value specified for Get") + } + + var r0 *adminv2.SizeImageConstraintServiceGetResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceGetRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) *adminv2.SizeImageConstraintServiceGetResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceGetRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceGetResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceGetRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceGetRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get' +type SizeImageConstraintServiceHandler_Get_Call struct { + *mock.Call +} + +// Get is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) Get(context1 interface{}, sizeImageConstraintServiceGetRequest interface{}) *SizeImageConstraintServiceHandler_Get_Call { + return &SizeImageConstraintServiceHandler_Get_Call{Call: _e.mock.On("Get", context1, sizeImageConstraintServiceGetRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_Get_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest)) *SizeImageConstraintServiceHandler_Get_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceGetRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceGetRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Get_Call) Return(sizeImageConstraintServiceGetResponse *adminv2.SizeImageConstraintServiceGetResponse, err error) *SizeImageConstraintServiceHandler_Get_Call { + _c.Call.Return(sizeImageConstraintServiceGetResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Get_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceGetRequest *adminv2.SizeImageConstraintServiceGetRequest) (*adminv2.SizeImageConstraintServiceGetResponse, error)) *SizeImageConstraintServiceHandler_Get_Call { + _c.Call.Return(run) + return _c +} + +// List provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) List(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceListRequest) + + if len(ret) == 0 { + panic("no return value specified for List") + } + + var r0 *adminv2.SizeImageConstraintServiceListResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceListRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) *adminv2.SizeImageConstraintServiceListResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceListRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceListResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceListRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceListRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List' +type SizeImageConstraintServiceHandler_List_Call struct { + *mock.Call +} + +// List is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) List(context1 interface{}, sizeImageConstraintServiceListRequest interface{}) *SizeImageConstraintServiceHandler_List_Call { + return &SizeImageConstraintServiceHandler_List_Call{Call: _e.mock.On("List", context1, sizeImageConstraintServiceListRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_List_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest)) *SizeImageConstraintServiceHandler_List_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceListRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceListRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_List_Call) Return(sizeImageConstraintServiceListResponse *adminv2.SizeImageConstraintServiceListResponse, err error) *SizeImageConstraintServiceHandler_List_Call { + _c.Call.Return(sizeImageConstraintServiceListResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_List_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceListRequest *adminv2.SizeImageConstraintServiceListRequest) (*adminv2.SizeImageConstraintServiceListResponse, error)) *SizeImageConstraintServiceHandler_List_Call { + _c.Call.Return(run) + return _c +} + +// Update provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) Update(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceUpdateRequest) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 *adminv2.SizeImageConstraintServiceUpdateResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) *adminv2.SizeImageConstraintServiceUpdateResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*adminv2.SizeImageConstraintServiceUpdateResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *adminv2.SizeImageConstraintServiceUpdateRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceUpdateRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update' +type SizeImageConstraintServiceHandler_Update_Call struct { + *mock.Call +} + +// Update is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) Update(context1 interface{}, sizeImageConstraintServiceUpdateRequest interface{}) *SizeImageConstraintServiceHandler_Update_Call { + return &SizeImageConstraintServiceHandler_Update_Call{Call: _e.mock.On("Update", context1, sizeImageConstraintServiceUpdateRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_Update_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest)) *SizeImageConstraintServiceHandler_Update_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *adminv2.SizeImageConstraintServiceUpdateRequest + if args[1] != nil { + arg1 = args[1].(*adminv2.SizeImageConstraintServiceUpdateRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Update_Call) Return(sizeImageConstraintServiceUpdateResponse *adminv2.SizeImageConstraintServiceUpdateResponse, err error) *SizeImageConstraintServiceHandler_Update_Call { + _c.Call.Return(sizeImageConstraintServiceUpdateResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Update_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceUpdateRequest *adminv2.SizeImageConstraintServiceUpdateRequest) (*adminv2.SizeImageConstraintServiceUpdateResponse, error)) *SizeImageConstraintServiceHandler_Update_Call { + _c.Call.Return(run) + return _c +} diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceClient.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceClient.go new file mode 100644 index 00000000..10390724 --- /dev/null +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceClient.go @@ -0,0 +1,107 @@ +// Code generated by mockery; DO NOT EDIT. +// github.com/vektra/mockery +// template: testify + +package apiv2connect + +import ( + "context" + + "github.com/metal-stack/api/go/metalstack/api/v2" + mock "github.com/stretchr/testify/mock" +) + +// NewSizeImageConstraintServiceClient creates a new instance of SizeImageConstraintServiceClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewSizeImageConstraintServiceClient(t interface { + mock.TestingT + Cleanup(func()) +}) *SizeImageConstraintServiceClient { + mock := &SizeImageConstraintServiceClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} + +// SizeImageConstraintServiceClient is an autogenerated mock type for the SizeImageConstraintServiceClient type +type SizeImageConstraintServiceClient struct { + mock.Mock +} + +type SizeImageConstraintServiceClient_Expecter struct { + mock *mock.Mock +} + +func (_m *SizeImageConstraintServiceClient) EXPECT() *SizeImageConstraintServiceClient_Expecter { + return &SizeImageConstraintServiceClient_Expecter{mock: &_m.Mock} +} + +// Try provides a mock function for the type SizeImageConstraintServiceClient +func (_mock *SizeImageConstraintServiceClient) Try(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceTryRequest) + + if len(ret) == 0 { + panic("no return value specified for Try") + } + + var r0 *apiv2.SizeImageConstraintServiceTryResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceTryRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) *apiv2.SizeImageConstraintServiceTryResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceTryRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.SizeImageConstraintServiceTryResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceTryRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceClient_Try_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Try' +type SizeImageConstraintServiceClient_Try_Call struct { + *mock.Call +} + +// Try is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest +func (_e *SizeImageConstraintServiceClient_Expecter) Try(context1 interface{}, sizeImageConstraintServiceTryRequest interface{}) *SizeImageConstraintServiceClient_Try_Call { + return &SizeImageConstraintServiceClient_Try_Call{Call: _e.mock.On("Try", context1, sizeImageConstraintServiceTryRequest)} +} + +func (_c *SizeImageConstraintServiceClient_Try_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest)) *SizeImageConstraintServiceClient_Try_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.SizeImageConstraintServiceTryRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.SizeImageConstraintServiceTryRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Try_Call) Return(sizeImageConstraintServiceTryResponse *apiv2.SizeImageConstraintServiceTryResponse, err error) *SizeImageConstraintServiceClient_Try_Call { + _c.Call.Return(sizeImageConstraintServiceTryResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceClient_Try_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error)) *SizeImageConstraintServiceClient_Try_Call { + _c.Call.Return(run) + return _c +} diff --git a/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceHandler.go b/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceHandler.go new file mode 100644 index 00000000..8037655c --- /dev/null +++ b/go/tests/mocks/metalstack/api/v2/apiv2connect/SizeImageConstraintServiceHandler.go @@ -0,0 +1,107 @@ +// Code generated by mockery; DO NOT EDIT. +// github.com/vektra/mockery +// template: testify + +package apiv2connect + +import ( + "context" + + "github.com/metal-stack/api/go/metalstack/api/v2" + mock "github.com/stretchr/testify/mock" +) + +// NewSizeImageConstraintServiceHandler creates a new instance of SizeImageConstraintServiceHandler. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewSizeImageConstraintServiceHandler(t interface { + mock.TestingT + Cleanup(func()) +}) *SizeImageConstraintServiceHandler { + mock := &SizeImageConstraintServiceHandler{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} + +// SizeImageConstraintServiceHandler is an autogenerated mock type for the SizeImageConstraintServiceHandler type +type SizeImageConstraintServiceHandler struct { + mock.Mock +} + +type SizeImageConstraintServiceHandler_Expecter struct { + mock *mock.Mock +} + +func (_m *SizeImageConstraintServiceHandler) EXPECT() *SizeImageConstraintServiceHandler_Expecter { + return &SizeImageConstraintServiceHandler_Expecter{mock: &_m.Mock} +} + +// Try provides a mock function for the type SizeImageConstraintServiceHandler +func (_mock *SizeImageConstraintServiceHandler) Try(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error) { + ret := _mock.Called(context1, sizeImageConstraintServiceTryRequest) + + if len(ret) == 0 { + panic("no return value specified for Try") + } + + var r0 *apiv2.SizeImageConstraintServiceTryResponse + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error)); ok { + return returnFunc(context1, sizeImageConstraintServiceTryRequest) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) *apiv2.SizeImageConstraintServiceTryResponse); ok { + r0 = returnFunc(context1, sizeImageConstraintServiceTryRequest) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*apiv2.SizeImageConstraintServiceTryResponse) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *apiv2.SizeImageConstraintServiceTryRequest) error); ok { + r1 = returnFunc(context1, sizeImageConstraintServiceTryRequest) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// SizeImageConstraintServiceHandler_Try_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Try' +type SizeImageConstraintServiceHandler_Try_Call struct { + *mock.Call +} + +// Try is a helper method to define mock.On call +// - context1 context.Context +// - sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest +func (_e *SizeImageConstraintServiceHandler_Expecter) Try(context1 interface{}, sizeImageConstraintServiceTryRequest interface{}) *SizeImageConstraintServiceHandler_Try_Call { + return &SizeImageConstraintServiceHandler_Try_Call{Call: _e.mock.On("Try", context1, sizeImageConstraintServiceTryRequest)} +} + +func (_c *SizeImageConstraintServiceHandler_Try_Call) Run(run func(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest)) *SizeImageConstraintServiceHandler_Try_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *apiv2.SizeImageConstraintServiceTryRequest + if args[1] != nil { + arg1 = args[1].(*apiv2.SizeImageConstraintServiceTryRequest) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Try_Call) Return(sizeImageConstraintServiceTryResponse *apiv2.SizeImageConstraintServiceTryResponse, err error) *SizeImageConstraintServiceHandler_Try_Call { + _c.Call.Return(sizeImageConstraintServiceTryResponse, err) + return _c +} + +func (_c *SizeImageConstraintServiceHandler_Try_Call) RunAndReturn(run func(context1 context.Context, sizeImageConstraintServiceTryRequest *apiv2.SizeImageConstraintServiceTryRequest) (*apiv2.SizeImageConstraintServiceTryResponse, error)) *SizeImageConstraintServiceHandler_Try_Call { + _c.Call.Return(run) + return _c +} diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts b/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts new file mode 100644 index 00000000..cda37d32 --- /dev/null +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts @@ -0,0 +1,293 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Meta, UpdateMeta } from "../../api/v2/common_pb"; +import type { ImageConstraint, SizeImageConstraint, SizeImageConstraintQuery } from "../../api/v2/size_imageconstraint_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/size_imageconstraint.proto. + */ +export declare const file_metalstack_admin_v2_size_imageconstraint: GenFile; +/** + * SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest + */ +export type SizeImageConstraintServiceCreateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 2; + */ + imageConstraints: ImageConstraint[]; + /** + * Meta for this size image constraint + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest. + * Use `create(SizeImageConstraintServiceCreateRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceCreateRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceCreateResponse is the response payload for a size image constraint create request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceCreateResponse + */ +export type SizeImageConstraintServiceCreateResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateResponse"> & { + /** + * SizeImageConstraint created + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateResponse. + * Use `create(SizeImageConstraintServiceCreateResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceCreateResponseSchema: GenMessage; +/** + * SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest + */ +export type SizeImageConstraintServiceUpdateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 3; + */ + imageConstraints: ImageConstraint[]; + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest. + * Use `create(SizeImageConstraintServiceUpdateRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceUpdateRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceUpdateResponse is the response payload for a size image constraint update request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse + */ +export type SizeImageConstraintServiceUpdateResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse"> & { + /** + * SizeImageConstraint updated + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse. + * Use `create(SizeImageConstraintServiceUpdateResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceUpdateResponseSchema: GenMessage; +/** + * SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest + */ +export type SizeImageConstraintServiceDeleteRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest. + * Use `create(SizeImageConstraintServiceDeleteRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceDeleteRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceDeleteResponse is the response payload for a size image constraint delete request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse + */ +export type SizeImageConstraintServiceDeleteResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse"> & { + /** + * SizeImageConstraint deleted + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse. + * Use `create(SizeImageConstraintServiceDeleteResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceDeleteResponseSchema: GenMessage; +/** + * SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceGetRequest + */ +export type SizeImageConstraintServiceGetRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceGetRequest"> & { + /** + * Id of the size to get + * + * @generated from field: string size = 1; + */ + size: string; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetRequest. + * Use `create(SizeImageConstraintServiceGetRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceGetRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceGetResponse is the response payload for a size image constraint get request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceGetResponse + */ +export type SizeImageConstraintServiceGetResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceGetResponse"> & { + /** + * SizeImageConstraint get + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetResponse. + * Use `create(SizeImageConstraintServiceGetResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceGetResponseSchema: GenMessage; +/** + * SizeImageConstraintServiceListRequest is the request payload for a size image constraint list request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceListRequest + */ +export type SizeImageConstraintServiceListRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceListRequest"> & { + /** + * Query for size image constraints + * + * @generated from field: metalstack.api.v2.SizeImageConstraintQuery query = 1; + */ + query?: SizeImageConstraintQuery; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListRequest. + * Use `create(SizeImageConstraintServiceListRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceListRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceListResponse is the response payload for a size image constraint list request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceListResponse + */ +export type SizeImageConstraintServiceListResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceListResponse"> & { + /** + * SizeImageConstraints listed + * + * @generated from field: repeated metalstack.api.v2.SizeImageConstraint size_image_constraints = 1; + */ + sizeImageConstraints: SizeImageConstraint[]; +}; +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListResponse. + * Use `create(SizeImageConstraintServiceListResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceListResponseSchema: GenMessage; +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.admin.v2.SizeImageConstraintService + */ +export declare const SizeImageConstraintService: GenService<{ + /** + * Create a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Create + */ + create: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceCreateRequestSchema; + output: typeof SizeImageConstraintServiceCreateResponseSchema; + }; + /** + * Update a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Update + */ + update: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceUpdateRequestSchema; + output: typeof SizeImageConstraintServiceUpdateResponseSchema; + }; + /** + * Delete a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceDeleteRequestSchema; + output: typeof SizeImageConstraintServiceDeleteResponseSchema; + }; + /** + * Get a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Get + */ + get: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceGetRequestSchema; + output: typeof SizeImageConstraintServiceGetResponseSchema; + }; + /** + * List a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.List + */ + list: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceListRequestSchema; + output: typeof SizeImageConstraintServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.js b/js/metalstack/admin/v2/size_imageconstraint_pb.js new file mode 100644 index 00000000..075490f3 --- /dev/null +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.js @@ -0,0 +1,68 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file metalstack/admin/v2/size_imageconstraint.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import { file_metalstack_api_v2_size_imageconstraint } from "../../api/v2/size_imageconstraint_pb"; +/** + * Describes the file metalstack/admin/v2/size_imageconstraint.proto. + */ +export const file_metalstack_admin_v2_size_imageconstraint = /*@__PURE__*/ fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest. + * Use `create(SizeImageConstraintServiceCreateRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 0); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateResponse. + * Use `create(SizeImageConstraintServiceCreateResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 1); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest. + * Use `create(SizeImageConstraintServiceUpdateRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 2); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse. + * Use `create(SizeImageConstraintServiceUpdateResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 3); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest. + * Use `create(SizeImageConstraintServiceDeleteRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 4); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse. + * Use `create(SizeImageConstraintServiceDeleteResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 5); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetRequest. + * Use `create(SizeImageConstraintServiceGetRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 6); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetResponse. + * Use `create(SizeImageConstraintServiceGetResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 7); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListRequest. + * Use `create(SizeImageConstraintServiceListRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 8); +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListResponse. + * Use `create(SizeImageConstraintServiceListResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_imageconstraint, 9); +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.admin.v2.SizeImageConstraintService + */ +export const SizeImageConstraintService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_size_imageconstraint, 0); diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.ts b/js/metalstack/admin/v2/size_imageconstraint_pb.ts new file mode 100644 index 00000000..3ba9cd20 --- /dev/null +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.ts @@ -0,0 +1,345 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file metalstack/admin/v2/size_imageconstraint.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Meta, UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { ImageConstraint, SizeImageConstraint, SizeImageConstraintQuery } from "../../api/v2/size_imageconstraint_pb"; +import { file_metalstack_api_v2_size_imageconstraint } from "../../api/v2/size_imageconstraint_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/size_imageconstraint.proto. + */ +export const file_metalstack_admin_v2_size_imageconstraint: GenFile = /*@__PURE__*/ + fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); + +/** + * SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest + */ +export type SizeImageConstraintServiceCreateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 2; + */ + imageConstraints: ImageConstraint[]; + + /** + * Meta for this size image constraint + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest. + * Use `create(SizeImageConstraintServiceCreateRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 0); + +/** + * SizeImageConstraintServiceCreateResponse is the response payload for a size image constraint create request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceCreateResponse + */ +export type SizeImageConstraintServiceCreateResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateResponse"> & { + /** + * SizeImageConstraint created + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateResponse. + * Use `create(SizeImageConstraintServiceCreateResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 1); + +/** + * SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest + */ +export type SizeImageConstraintServiceUpdateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 3; + */ + imageConstraints: ImageConstraint[]; + + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest. + * Use `create(SizeImageConstraintServiceUpdateRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 2); + +/** + * SizeImageConstraintServiceUpdateResponse is the response payload for a size image constraint update request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse + */ +export type SizeImageConstraintServiceUpdateResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse"> & { + /** + * SizeImageConstraint updated + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse. + * Use `create(SizeImageConstraintServiceUpdateResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 3); + +/** + * SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest + */ +export type SizeImageConstraintServiceDeleteRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest. + * Use `create(SizeImageConstraintServiceDeleteRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 4); + +/** + * SizeImageConstraintServiceDeleteResponse is the response payload for a size image constraint delete request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse + */ +export type SizeImageConstraintServiceDeleteResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse"> & { + /** + * SizeImageConstraint deleted + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse. + * Use `create(SizeImageConstraintServiceDeleteResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 5); + +/** + * SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceGetRequest + */ +export type SizeImageConstraintServiceGetRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceGetRequest"> & { + /** + * Id of the size to get + * + * @generated from field: string size = 1; + */ + size: string; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetRequest. + * Use `create(SizeImageConstraintServiceGetRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 6); + +/** + * SizeImageConstraintServiceGetResponse is the response payload for a size image constraint get request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceGetResponse + */ +export type SizeImageConstraintServiceGetResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceGetResponse"> & { + /** + * SizeImageConstraint get + * + * @generated from field: metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; + */ + sizeImageConstraint?: SizeImageConstraint; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceGetResponse. + * Use `create(SizeImageConstraintServiceGetResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 7); + +/** + * SizeImageConstraintServiceListRequest is the request payload for a size image constraint list request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceListRequest + */ +export type SizeImageConstraintServiceListRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceListRequest"> & { + /** + * Query for size image constraints + * + * @generated from field: metalstack.api.v2.SizeImageConstraintQuery query = 1; + */ + query?: SizeImageConstraintQuery; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListRequest. + * Use `create(SizeImageConstraintServiceListRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 8); + +/** + * SizeImageConstraintServiceListResponse is the response payload for a size image constraint list request + * + * @generated from message metalstack.admin.v2.SizeImageConstraintServiceListResponse + */ +export type SizeImageConstraintServiceListResponse = Message<"metalstack.admin.v2.SizeImageConstraintServiceListResponse"> & { + /** + * SizeImageConstraints listed + * + * @generated from field: repeated metalstack.api.v2.SizeImageConstraint size_image_constraints = 1; + */ + sizeImageConstraints: SizeImageConstraint[]; +}; + +/** + * Describes the message metalstack.admin.v2.SizeImageConstraintServiceListResponse. + * Use `create(SizeImageConstraintServiceListResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size_imageconstraint, 9); + +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.admin.v2.SizeImageConstraintService + */ +export const SizeImageConstraintService: GenService<{ + /** + * Create a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Create + */ + create: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceCreateRequestSchema; + output: typeof SizeImageConstraintServiceCreateResponseSchema; + }, + /** + * Update a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Update + */ + update: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceUpdateRequestSchema; + output: typeof SizeImageConstraintServiceUpdateResponseSchema; + }, + /** + * Delete a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceDeleteRequestSchema; + output: typeof SizeImageConstraintServiceDeleteResponseSchema; + }, + /** + * Get a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.Get + */ + get: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceGetRequestSchema; + output: typeof SizeImageConstraintServiceGetResponseSchema; + }, + /** + * List a size image constraint + * + * @generated from rpc metalstack.admin.v2.SizeImageConstraintService.List + */ + list: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceListRequestSchema; + output: typeof SizeImageConstraintServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_size_imageconstraint, 0); + diff --git a/js/metalstack/api/v2/size_imageconstraint_pb.d.ts b/js/metalstack/api/v2/size_imageconstraint_pb.d.ts new file mode 100644 index 00000000..09cfb6d6 --- /dev/null +++ b/js/metalstack/api/v2/size_imageconstraint_pb.d.ts @@ -0,0 +1,165 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/size_imageconstraint.proto. + */ +export declare const file_metalstack_api_v2_size_imageconstraint: GenFile; +/** + * SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request + * + * @generated from message metalstack.api.v2.SizeImageConstraintServiceTryRequest + */ +export type SizeImageConstraintServiceTryRequest = Message<"metalstack.api.v2.SizeImageConstraintServiceTryRequest"> & { + /** + * ID of the size to try + * + * @generated from field: string size = 1; + */ + size: string; + /** + * ID of the image to try + * + * @generated from field: string image = 2; + */ + image: string; +}; +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryRequest. + * Use `create(SizeImageConstraintServiceTryRequestSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceTryRequestSchema: GenMessage; +/** + * SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request + * + * @generated from message metalstack.api.v2.SizeImageConstraintServiceTryResponse + */ +export type SizeImageConstraintServiceTryResponse = Message<"metalstack.api.v2.SizeImageConstraintServiceTryResponse"> & {}; +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryResponse. + * Use `create(SizeImageConstraintServiceTryResponseSchema)` to create a new message. + */ +export declare const SizeImageConstraintServiceTryResponseSchema: GenMessage; +/** + * SizeImageConstraint expresses optional restrictions for specific size to image combinations + * this might be required if the support for a specific hardware in a given size is only supported + * with a newer version of the image. + * + * If the size in question is not found, no restrictions apply. + * If the image in question is not found, no restrictions apply as well. + * If the image in question is found, but does not match the given expression, machine creation must be forbidden. + * + * @generated from message metalstack.api.v2.SizeImageConstraint + */ +export type SizeImageConstraint = Message<"metalstack.api.v2.SizeImageConstraint"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 2; + */ + imageConstraints: ImageConstraint[]; + /** + * Meta for this size image constraint + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; +/** + * Describes the message metalstack.api.v2.SizeImageConstraint. + * Use `create(SizeImageConstraintSchema)` to create a new message. + */ +export declare const SizeImageConstraintSchema: GenMessage; +/** + * ImageConstraint defines a constraint for a image + * examples: + * images: + * ubuntu: ">= 20.04.20211011" + * debian: ">= 10.0.20210101" + * + * @generated from message metalstack.api.v2.ImageConstraint + */ +export type ImageConstraint = Message<"metalstack.api.v2.ImageConstraint"> & { + /** + * Id of the image + * + * @generated from field: string image = 1; + */ + image: string; + /** + * Semver match + * + * @generated from field: string semver_match = 2; + */ + semverMatch: string; +}; +/** + * Describes the message metalstack.api.v2.ImageConstraint. + * Use `create(ImageConstraintSchema)` to create a new message. + */ +export declare const ImageConstraintSchema: GenMessage; +/** + * SizeImageConstraintQuery is used to search size image constraints + * + * @generated from message metalstack.api.v2.SizeImageConstraintQuery + */ +export type SizeImageConstraintQuery = Message<"metalstack.api.v2.SizeImageConstraintQuery"> & { + /** + * Size of the size image constraint + * + * @generated from field: optional string size = 1; + */ + size?: string; + /** + * Name of the size image constraint to query + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Description of the size image constraint to query + * + * @generated from field: optional string description = 3; + */ + description?: string; +}; +/** + * Describes the message metalstack.api.v2.SizeImageConstraintQuery. + * Use `create(SizeImageConstraintQuerySchema)` to create a new message. + */ +export declare const SizeImageConstraintQuerySchema: GenMessage; +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.api.v2.SizeImageConstraintService + */ +export declare const SizeImageConstraintService: GenService<{ + /** + * Try if a given combination of size and image is possible + * + * @generated from rpc metalstack.api.v2.SizeImageConstraintService.Try + */ + try: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceTryRequestSchema; + output: typeof SizeImageConstraintServiceTryResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/size_imageconstraint_pb.js b/js/metalstack/api/v2/size_imageconstraint_pb.js new file mode 100644 index 00000000..9320fc10 --- /dev/null +++ b/js/metalstack/api/v2/size_imageconstraint_pb.js @@ -0,0 +1,42 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file metalstack/api/v2/size_imageconstraint.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/size_imageconstraint.proto. + */ +export const file_metalstack_api_v2_size_imageconstraint = /*@__PURE__*/ fileDesc("CixtZXRhbHN0YWNrL2FwaS92Mi9zaXplX2ltYWdlY29uc3RyYWludC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiXQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VUcnlSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBEhoKBWltYWdlGAIgASgJQgu6SAhyBsCzrrECASInCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlc3BvbnNlIvYBChNTaXplSW1hZ2VDb25zdHJhaW50EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBEj0KEWltYWdlX2NvbnN0cmFpbnRzGAIgAygLMiIubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VDb25zdHJhaW50EiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIlAKD0ltYWdlQ29uc3RyYWludBIaCgVpbWFnZRgBIAEoCUILukgIcgbAs66xAgESIQoMc2VtdmVyX21hdGNoGAIgASgJQgu6SAhyBsizrrECASKjAQoYU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5Eh4KBHNpemUYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBAUIHCgVfc2l6ZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24yoQEKGlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlEoIBCgNUcnkSNy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlcXVlc3QaOC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlc3BvbnNlIgjY8xgD4PMYAkLOAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQhhTaXplSW1hZ2Vjb25zdHJhaW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryRequest. + * Use `create(SizeImageConstraintServiceTryRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceTryRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_imageconstraint, 0); +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryResponse. + * Use `create(SizeImageConstraintServiceTryResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceTryResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_imageconstraint, 1); +/** + * Describes the message metalstack.api.v2.SizeImageConstraint. + * Use `create(SizeImageConstraintSchema)` to create a new message. + */ +export const SizeImageConstraintSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_imageconstraint, 2); +/** + * Describes the message metalstack.api.v2.ImageConstraint. + * Use `create(ImageConstraintSchema)` to create a new message. + */ +export const ImageConstraintSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_imageconstraint, 3); +/** + * Describes the message metalstack.api.v2.SizeImageConstraintQuery. + * Use `create(SizeImageConstraintQuerySchema)` to create a new message. + */ +export const SizeImageConstraintQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_imageconstraint, 4); +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.api.v2.SizeImageConstraintService + */ +export const SizeImageConstraintService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_size_imageconstraint, 0); diff --git a/js/metalstack/api/v2/size_imageconstraint_pb.ts b/js/metalstack/api/v2/size_imageconstraint_pb.ts new file mode 100644 index 00000000..ae4904b6 --- /dev/null +++ b/js/metalstack/api/v2/size_imageconstraint_pb.ts @@ -0,0 +1,202 @@ +// @generated by protoc-gen-es v2.11.0 with parameter "target=ts" +// @generated from file metalstack/api/v2/size_imageconstraint.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/size_imageconstraint.proto. + */ +export const file_metalstack_api_v2_size_imageconstraint: GenFile = /*@__PURE__*/ + fileDesc("CixtZXRhbHN0YWNrL2FwaS92Mi9zaXplX2ltYWdlY29uc3RyYWludC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiXQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VUcnlSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBEhoKBWltYWdlGAIgASgJQgu6SAhyBsCzrrECASInCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlc3BvbnNlIvYBChNTaXplSW1hZ2VDb25zdHJhaW50EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBEj0KEWltYWdlX2NvbnN0cmFpbnRzGAIgAygLMiIubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VDb25zdHJhaW50EiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIlAKD0ltYWdlQ29uc3RyYWludBIaCgVpbWFnZRgBIAEoCUILukgIcgbAs66xAgESIQoMc2VtdmVyX21hdGNoGAIgASgJQgu6SAhyBsizrrECASKjAQoYU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5Eh4KBHNpemUYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBAUIHCgVfc2l6ZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24yoQEKGlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlEoIBCgNUcnkSNy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlcXVlc3QaOC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVRyeVJlc3BvbnNlIgjY8xgD4PMYAkLOAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQhhTaXplSW1hZ2Vjb25zdHJhaW50UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request + * + * @generated from message metalstack.api.v2.SizeImageConstraintServiceTryRequest + */ +export type SizeImageConstraintServiceTryRequest = Message<"metalstack.api.v2.SizeImageConstraintServiceTryRequest"> & { + /** + * ID of the size to try + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * ID of the image to try + * + * @generated from field: string image = 2; + */ + image: string; +}; + +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryRequest. + * Use `create(SizeImageConstraintServiceTryRequestSchema)` to create a new message. + */ +export const SizeImageConstraintServiceTryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size_imageconstraint, 0); + +/** + * SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request + * + * @generated from message metalstack.api.v2.SizeImageConstraintServiceTryResponse + */ +export type SizeImageConstraintServiceTryResponse = Message<"metalstack.api.v2.SizeImageConstraintServiceTryResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.SizeImageConstraintServiceTryResponse. + * Use `create(SizeImageConstraintServiceTryResponseSchema)` to create a new message. + */ +export const SizeImageConstraintServiceTryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size_imageconstraint, 1); + +/** + * SizeImageConstraint expresses optional restrictions for specific size to image combinations + * this might be required if the support for a specific hardware in a given size is only supported + * with a newer version of the image. + * + * If the size in question is not found, no restrictions apply. + * If the image in question is not found, no restrictions apply as well. + * If the image in question is found, but does not match the given expression, machine creation must be forbidden. + * + * @generated from message metalstack.api.v2.SizeImageConstraint + */ +export type SizeImageConstraint = Message<"metalstack.api.v2.SizeImageConstraint"> & { + /** + * Id of the size + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * ImageConstraints to apply to this size + * + * @generated from field: repeated metalstack.api.v2.ImageConstraint image_constraints = 2; + */ + imageConstraints: ImageConstraint[]; + + /** + * Meta for this size image constraint + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + + /** + * Name of this size image constraint + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this size image constraint + * + * @generated from field: optional string description = 5; + */ + description?: string; +}; + +/** + * Describes the message metalstack.api.v2.SizeImageConstraint. + * Use `create(SizeImageConstraintSchema)` to create a new message. + */ +export const SizeImageConstraintSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size_imageconstraint, 2); + +/** + * ImageConstraint defines a constraint for a image + * examples: + * images: + * ubuntu: ">= 20.04.20211011" + * debian: ">= 10.0.20210101" + * + * @generated from message metalstack.api.v2.ImageConstraint + */ +export type ImageConstraint = Message<"metalstack.api.v2.ImageConstraint"> & { + /** + * Id of the image + * + * @generated from field: string image = 1; + */ + image: string; + + /** + * Semver match + * + * @generated from field: string semver_match = 2; + */ + semverMatch: string; +}; + +/** + * Describes the message metalstack.api.v2.ImageConstraint. + * Use `create(ImageConstraintSchema)` to create a new message. + */ +export const ImageConstraintSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size_imageconstraint, 3); + +/** + * SizeImageConstraintQuery is used to search size image constraints + * + * @generated from message metalstack.api.v2.SizeImageConstraintQuery + */ +export type SizeImageConstraintQuery = Message<"metalstack.api.v2.SizeImageConstraintQuery"> & { + /** + * Size of the size image constraint + * + * @generated from field: optional string size = 1; + */ + size?: string; + + /** + * Name of the size image constraint to query + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Description of the size image constraint to query + * + * @generated from field: optional string description = 3; + */ + description?: string; +}; + +/** + * Describes the message metalstack.api.v2.SizeImageConstraintQuery. + * Use `create(SizeImageConstraintQuerySchema)` to create a new message. + */ +export const SizeImageConstraintQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size_imageconstraint, 4); + +/** + * SizeImageConstraintService serves size and image constraint related functions + * + * @generated from service metalstack.api.v2.SizeImageConstraintService + */ +export const SizeImageConstraintService: GenService<{ + /** + * Try if a given combination of size and image is possible + * + * @generated from rpc metalstack.api.v2.SizeImageConstraintService.Try + */ + try: { + methodKind: "unary"; + input: typeof SizeImageConstraintServiceTryRequestSchema; + output: typeof SizeImageConstraintServiceTryResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_size_imageconstraint, 0); + diff --git a/js/metalstack/api/v2/size_pb.js b/js/metalstack/api/v2/size_pb.js index cd52827b..32a60dc3 100644 --- a/js/metalstack/api/v2/size_pb.js +++ b/js/metalstack/api/v2/size_pb.js @@ -8,7 +8,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; /** * Describes the file metalstack/api/v2/size.proto. */ -export const file_metalstack_api_v2_size = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIvChVTaXplU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoWU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBIrCgVxdWVyeRgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlNpemVRdWVyeSI/ChZTaXplU2VydmljZUdldFJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkEKF1NpemVTZXJ2aWNlTGlzdFJlc3BvbnNlEiYKBXNpemVzGAEgAygLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSLeAQoEU2l6ZRIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI2Cgtjb25zdHJhaW50cxgGIAMoCzIhLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50QgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKdAQoOU2l6ZUNvbnN0cmFpbnQSPQoEdHlwZRgBIAEoDjIlLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50VHlwZUIIukgFggECEAESCwoDbWluGAIgASgEEgsKA21heBgDIAEoBBIjCgppZGVudGlmaWVyGAQgASgJQgq6SAdyBRAAGIABSACIAQFCDQoLX2lkZW50aWZpZXIiywEKCVNpemVRdWVyeRIcCgJpZBgBIAEoCUILukgIcgbAs66xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEi4KBmxhYmVscxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gDiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyroAQoSU2l6ZUNvbnN0cmFpbnRUeXBlEiQKIFNJWkVfQ09OU1RSQUlOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKQoaU0laRV9DT05TVFJBSU5UX1RZUEVfQ09SRVMQARoJgrIZBWNvcmVzEisKG1NJWkVfQ09OU1RSQUlOVF9UWVBFX01FTU9SWRACGgqCshkGbWVtb3J5Ei0KHFNJWkVfQ09OU1RSQUlOVF9UWVBFX1NUT1JBR0UQAxoLgrIZB3N0b3JhZ2USJQoYU0laRV9DT05TVFJBSU5UX1RZUEVfR1BVEAQaB4KyGQNncHUy3AEKC1NpemVTZXJ2aWNlEmQKA0dldBIoLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVxdWVzdBopLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmcKBExpc3QSKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUxpc3RSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCQr8BChVjb20ubWV0YWxzdGFjay5hcGkudjJCCVNpemVQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +export const file_metalstack_api_v2_size = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIwChVTaXplU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIkUKFlNpemVTZXJ2aWNlTGlzdFJlcXVlc3QSKwoFcXVlcnkYASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUXVlcnkiPwoWU2l6ZVNlcnZpY2VHZXRSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSJBChdTaXplU2VydmljZUxpc3RSZXNwb25zZRImCgVzaXplcxgBIAMoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUi3gEKBFNpemUSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNgoLY29uc3RyYWludHMYBiADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplQ29uc3RyYWludEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24inQEKDlNpemVDb25zdHJhaW50Ej0KBHR5cGUYASABKA4yJS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplQ29uc3RyYWludFR5cGVCCLpIBYIBAhABEgsKA21pbhgCIAEoBBILCgNtYXgYAyABKAQSIwoKaWRlbnRpZmllchgEIAEoCUIKukgHcgUQABiAAUgAiAEBQg0KC19pZGVudGlmaWVyIssBCglTaXplUXVlcnkSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMq6AEKElNpemVDb25zdHJhaW50VHlwZRIkCiBTSVpFX0NPTlNUUkFJTlRfVFlQRV9VTlNQRUNJRklFRBAAEikKGlNJWkVfQ09OU1RSQUlOVF9UWVBFX0NPUkVTEAEaCYKyGQVjb3JlcxIrChtTSVpFX0NPTlNUUkFJTlRfVFlQRV9NRU1PUlkQAhoKgrIZBm1lbW9yeRItChxTSVpFX0NPTlNUUkFJTlRfVFlQRV9TVE9SQUdFEAMaC4KyGQdzdG9yYWdlEiUKGFNJWkVfQ09OU1RSQUlOVF9UWVBFX0dQVRAEGgeCshkDZ3B1MtwBCgtTaXplU2VydmljZRJkCgNHZXQSKC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlcXVlc3QaKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlc3BvbnNlIgjY8xgD4PMYAhJnCgRMaXN0EikubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkK/AQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQglTaXplUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); /** * Describes the message metalstack.api.v2.SizeServiceGetRequest. * Use `create(SizeServiceGetRequestSchema)` to create a new message. diff --git a/js/metalstack/api/v2/size_pb.ts b/js/metalstack/api/v2/size_pb.ts index 43e69118..b41f9bd3 100644 --- a/js/metalstack/api/v2/size_pb.ts +++ b/js/metalstack/api/v2/size_pb.ts @@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/api/v2/size.proto. */ export const file_metalstack_api_v2_size: GenFile = /*@__PURE__*/ - fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIvChVTaXplU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoWU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBIrCgVxdWVyeRgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlNpemVRdWVyeSI/ChZTaXplU2VydmljZUdldFJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkEKF1NpemVTZXJ2aWNlTGlzdFJlc3BvbnNlEiYKBXNpemVzGAEgAygLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSLeAQoEU2l6ZRIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI2Cgtjb25zdHJhaW50cxgGIAMoCzIhLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50QgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKdAQoOU2l6ZUNvbnN0cmFpbnQSPQoEdHlwZRgBIAEoDjIlLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50VHlwZUIIukgFggECEAESCwoDbWluGAIgASgEEgsKA21heBgDIAEoBBIjCgppZGVudGlmaWVyGAQgASgJQgq6SAdyBRAAGIABSACIAQFCDQoLX2lkZW50aWZpZXIiywEKCVNpemVRdWVyeRIcCgJpZBgBIAEoCUILukgIcgbAs66xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEi4KBmxhYmVscxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gDiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyroAQoSU2l6ZUNvbnN0cmFpbnRUeXBlEiQKIFNJWkVfQ09OU1RSQUlOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKQoaU0laRV9DT05TVFJBSU5UX1RZUEVfQ09SRVMQARoJgrIZBWNvcmVzEisKG1NJWkVfQ09OU1RSQUlOVF9UWVBFX01FTU9SWRACGgqCshkGbWVtb3J5Ei0KHFNJWkVfQ09OU1RSQUlOVF9UWVBFX1NUT1JBR0UQAxoLgrIZB3N0b3JhZ2USJQoYU0laRV9DT05TVFJBSU5UX1RZUEVfR1BVEAQaB4KyGQNncHUy3AEKC1NpemVTZXJ2aWNlEmQKA0dldBIoLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVxdWVzdBopLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmcKBExpc3QSKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUxpc3RSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCQr8BChVjb20ubWV0YWxzdGFjay5hcGkudjJCCVNpemVQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIwChVTaXplU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIkUKFlNpemVTZXJ2aWNlTGlzdFJlcXVlc3QSKwoFcXVlcnkYASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUXVlcnkiPwoWU2l6ZVNlcnZpY2VHZXRSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSJBChdTaXplU2VydmljZUxpc3RSZXNwb25zZRImCgVzaXplcxgBIAMoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUi3gEKBFNpemUSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNgoLY29uc3RyYWludHMYBiADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplQ29uc3RyYWludEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24inQEKDlNpemVDb25zdHJhaW50Ej0KBHR5cGUYASABKA4yJS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplQ29uc3RyYWludFR5cGVCCLpIBYIBAhABEgsKA21pbhgCIAEoBBILCgNtYXgYAyABKAQSIwoKaWRlbnRpZmllchgEIAEoCUIKukgHcgUQABiAAUgAiAEBQg0KC19pZGVudGlmaWVyIssBCglTaXplUXVlcnkSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMq6AEKElNpemVDb25zdHJhaW50VHlwZRIkCiBTSVpFX0NPTlNUUkFJTlRfVFlQRV9VTlNQRUNJRklFRBAAEikKGlNJWkVfQ09OU1RSQUlOVF9UWVBFX0NPUkVTEAEaCYKyGQVjb3JlcxIrChtTSVpFX0NPTlNUUkFJTlRfVFlQRV9NRU1PUlkQAhoKgrIZBm1lbW9yeRItChxTSVpFX0NPTlNUUkFJTlRfVFlQRV9TVE9SQUdFEAMaC4KyGQdzdG9yYWdlEiUKGFNJWkVfQ09OU1RSQUlOVF9UWVBFX0dQVRAEGgeCshkDZ3B1MtwBCgtTaXplU2VydmljZRJkCgNHZXQSKC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlcXVlc3QaKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlc3BvbnNlIgjY8xgD4PMYAhJnCgRMaXN0EikubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkK/AQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQglTaXplUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); /** * SizeServiceGetRequest is the request payload for a size get request diff --git a/proto/metalstack/admin/v2/size_imageconstraint.proto b/proto/metalstack/admin/v2/size_imageconstraint.proto new file mode 100644 index 00000000..4e3f4fae --- /dev/null +++ b/proto/metalstack/admin/v2/size_imageconstraint.proto @@ -0,0 +1,115 @@ +syntax = "proto3"; + +package metalstack.admin.v2; + +import "buf/validate/validate.proto"; +import "metalstack/api/v2/common.proto"; +import "metalstack/api/v2/predefined_rules.proto"; +import "metalstack/api/v2/size_imageconstraint.proto"; + +// SizeImageConstraintService serves size and image constraint related functions +service SizeImageConstraintService { + // Create a size image constraint + rpc Create(SizeImageConstraintServiceCreateRequest) returns (SizeImageConstraintServiceCreateResponse) { + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; + option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + } + // Update a size image constraint + rpc Update(SizeImageConstraintServiceUpdateRequest) returns (SizeImageConstraintServiceUpdateResponse) { + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; + option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + } + // Delete a size image constraint + rpc Delete(SizeImageConstraintServiceDeleteRequest) returns (SizeImageConstraintServiceDeleteResponse) { + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; + option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + } + // Get a size image constraint + rpc Get(SizeImageConstraintServiceGetRequest) returns (SizeImageConstraintServiceGetResponse) { + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_VIEWER; + option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + } + // List a size image constraint + rpc List(SizeImageConstraintServiceListRequest) returns (SizeImageConstraintServiceListResponse) { + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; + option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_VIEWER; + option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + } +} + +// SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request +message SizeImageConstraintServiceCreateRequest { + // Id of the size + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // ImageConstraints to apply to this size + repeated metalstack.api.v2.ImageConstraint image_constraints = 2; + // Meta for this size image constraint + metalstack.api.v2.Meta meta = 3; + // Name of this size image constraint + optional string name = 4 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Description of this size image constraint + optional string description = 5 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; +} + +// SizeImageConstraintServiceCreateResponse is the response payload for a size image constraint create request +message SizeImageConstraintServiceCreateResponse { + // SizeImageConstraint created + metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; +} + +// SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request +message SizeImageConstraintServiceUpdateRequest { + // Id of the size + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // UpdateMeta contains the timestamp and strategy to be used in this update request + metalstack.api.v2.UpdateMeta update_meta = 2 [(buf.validate.field).required = true]; + // ImageConstraints to apply to this size + repeated metalstack.api.v2.ImageConstraint image_constraints = 3; + // Name of this size image constraint + optional string name = 4 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Description of this size image constraint + optional string description = 5 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; +} + +// SizeImageConstraintServiceUpdateResponse is the response payload for a size image constraint update request +message SizeImageConstraintServiceUpdateResponse { + // SizeImageConstraint updated + metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; +} + +// SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request +message SizeImageConstraintServiceDeleteRequest { + // Id of the size + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; +} + +// SizeImageConstraintServiceDeleteResponse is the response payload for a size image constraint delete request +message SizeImageConstraintServiceDeleteResponse { + // SizeImageConstraint deleted + metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; +} + +// SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request +message SizeImageConstraintServiceGetRequest { + // Id of the size to get + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; +} + +// SizeImageConstraintServiceGetResponse is the response payload for a size image constraint get request +message SizeImageConstraintServiceGetResponse { + // SizeImageConstraint get + metalstack.api.v2.SizeImageConstraint size_image_constraint = 1; +} + +// SizeImageConstraintServiceListRequest is the request payload for a size image constraint list request +message SizeImageConstraintServiceListRequest { + // Query for size image constraints + metalstack.api.v2.SizeImageConstraintQuery query = 1; +} + +// SizeImageConstraintServiceListResponse is the response payload for a size image constraint list request +message SizeImageConstraintServiceListResponse { + // SizeImageConstraints listed + repeated metalstack.api.v2.SizeImageConstraint size_image_constraints = 1; +} diff --git a/proto/metalstack/api/v2/size.proto b/proto/metalstack/api/v2/size.proto index e012e1dd..c1ce8664 100644 --- a/proto/metalstack/api/v2/size.proto +++ b/proto/metalstack/api/v2/size.proto @@ -23,10 +23,7 @@ service SizeService { // SizeServiceGetRequest is the request payload for a size get request message SizeServiceGetRequest { // ID of the size to get - string id = 1 [(buf.validate.field).string = { - min_len: 2 - max_len: 128 - }]; + string id = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; } // SizeServiceListRequest is the request payload for a size list request diff --git a/proto/metalstack/api/v2/size_imageconstraint.proto b/proto/metalstack/api/v2/size_imageconstraint.proto new file mode 100644 index 00000000..29de1292 --- /dev/null +++ b/proto/metalstack/api/v2/size_imageconstraint.proto @@ -0,0 +1,69 @@ +syntax = "proto3"; + +package metalstack.api.v2; + +import "buf/validate/validate.proto"; +import "metalstack/api/v2/common.proto"; +import "metalstack/api/v2/predefined_rules.proto"; + +// SizeImageConstraintService serves size and image constraint related functions +service SizeImageConstraintService { + // Try if a given combination of size and image is possible + rpc Try(SizeImageConstraintServiceTryRequest) returns (SizeImageConstraintServiceTryResponse) { + option (visibility) = VISIBILITY_SELF; + option (auditing) = AUDITING_EXCLUDED; + } +} + +// SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request +message SizeImageConstraintServiceTryRequest { + // ID of the size to try + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // ID of the image to try + string image = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; +} + +// SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request +message SizeImageConstraintServiceTryResponse {} + +// SizeImageConstraint expresses optional restrictions for specific size to image combinations +// this might be required if the support for a specific hardware in a given size is only supported +// with a newer version of the image. +// +// If the size in question is not found, no restrictions apply. +// If the image in question is not found, no restrictions apply as well. +// If the image in question is found, but does not match the given expression, machine creation must be forbidden. +message SizeImageConstraint { + // Id of the size + string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // ImageConstraints to apply to this size + repeated ImageConstraint image_constraints = 2; + // Meta for this size image constraint + Meta meta = 3; + // Name of this size image constraint + optional string name = 4 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Description of this size image constraint + optional string description = 5 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; +} + +// ImageConstraint defines a constraint for a image +// examples: +// images: +// ubuntu: ">= 20.04.20211011" +// debian: ">= 10.0.20210101" +message ImageConstraint { + // Id of the image + string image = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Semver match + string semver_match = 2 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; +} + +// SizeImageConstraintQuery is used to search size image constraints +message SizeImageConstraintQuery { + // Size of the size image constraint + optional string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Name of the size image constraint to query + optional string name = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; + // Description of the size image constraint to query + optional string description = 3 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; +} diff --git a/python/metalstack/admin/v2/size_imageconstraint_connect.py b/python/metalstack/admin/v2/size_imageconstraint_connect.py new file mode 100644 index 00000000..2a08837a --- /dev/null +++ b/python/metalstack/admin/v2/size_imageconstraint_connect.py @@ -0,0 +1,380 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: metalstack/admin/v2/size_imageconstraint.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import metalstack.admin.v2.size_imageconstraint_pb2 as metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2 + + +class SizeImageConstraintService(Protocol): + async def create(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def update(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def delete(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SizeImageConstraintServiceASGIApplication(ConnectASGIApplication[SizeImageConstraintService]): + def __init__(self, service: SizeImageConstraintService | AsyncGenerator[SizeImageConstraintService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/metalstack.admin.v2.SizeImageConstraintService/Create": Endpoint.unary( + method=MethodInfo( + name="Create", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.create, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Update": Endpoint.unary( + method=MethodInfo( + name="Update", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.update, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Delete": Endpoint.unary( + method=MethodInfo( + name="Delete", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.delete, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Get": Endpoint.unary( + method=MethodInfo( + name="Get", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get, + ), + "/metalstack.admin.v2.SizeImageConstraintService/List": Endpoint.unary( + method=MethodInfo( + name="List", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/metalstack.admin.v2.SizeImageConstraintService" + + +class SizeImageConstraintServiceClient(ConnectClient): + async def create( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Create", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def update( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Update", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def delete( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Delete", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Get", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="List", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class SizeImageConstraintServiceSync(Protocol): + def create(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def update(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def delete(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list(self, request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SizeImageConstraintServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: SizeImageConstraintServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + super().__init__( + endpoints={ + "/metalstack.admin.v2.SizeImageConstraintService/Create": EndpointSync.unary( + method=MethodInfo( + name="Create", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.create, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Update": EndpointSync.unary( + method=MethodInfo( + name="Update", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.update, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Delete": EndpointSync.unary( + method=MethodInfo( + name="Delete", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.delete, + ), + "/metalstack.admin.v2.SizeImageConstraintService/Get": EndpointSync.unary( + method=MethodInfo( + name="Get", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get, + ), + "/metalstack.admin.v2.SizeImageConstraintService/List": EndpointSync.unary( + method=MethodInfo( + name="List", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/metalstack.admin.v2.SizeImageConstraintService" + + +class SizeImageConstraintServiceClientSync(ConnectClientSync): + def create( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Create", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceCreateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def update( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Update", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceUpdateResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def delete( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Delete", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceDeleteResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Get", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceGetResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list( + self, + request: metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="List", + service_name="metalstack.admin.v2.SizeImageConstraintService", + input=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListRequest, + output=metalstack_dot_admin_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceListResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/python/metalstack/admin/v2/size_imageconstraint_pb2.py b/python/metalstack/admin/v2/size_imageconstraint_pb2.py new file mode 100644 index 00000000..9486eeb6 --- /dev/null +++ b/python/metalstack/admin/v2/size_imageconstraint_pb2.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: metalstack/admin/v2/size_imageconstraint.proto +# Protobuf Python Version: 6.33.5 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 33, + 5, + '', + 'metalstack/admin/v2/size_imageconstraint.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 +from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2 +from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 +from metalstack.api.v2 import size_imageconstraint_pb2 as metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.metalstack/admin/v2/size_imageconstraint.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a,metalstack/api/v2/size_imageconstraint.proto\"\xbb\x02\n\'SizeImageConstraintServiceCreateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n\x11image_constraints\x18\x02 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceCreateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"\xd6\x02\n\'SizeImageConstraintServiceUpdateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12O\n\x11image_constraints\x18\x03 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceUpdateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"J\n\'SizeImageConstraintServiceDeleteRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x86\x01\n(SizeImageConstraintServiceDeleteResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"G\n$SizeImageConstraintServiceGetRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x83\x01\n%SizeImageConstraintServiceGetResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"j\n%SizeImageConstraintServiceListRequest\x12\x41\n\x05query\x18\x01 \x01(\x0b\x32+.metalstack.api.v2.SizeImageConstraintQueryR\x05query\"\x86\x01\n&SizeImageConstraintServiceListResponse\x12\\\n\x16size_image_constraints\x18\x01 \x03(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x14sizeImageConstraints2\xee\x05\n\x1aSizeImageConstraintService\x12\x90\x01\n\x06\x43reate\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n\x06\x44\x65lete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x88\x01\n\x03Get\x12\x39.metalstack.admin.v2.SizeImageConstraintServiceGetRequest\x1a:.metalstack.admin.v2.SizeImageConstraintServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x8b\x01\n\x04List\x12:.metalstack.admin.v2.SizeImageConstraintServiceListRequest\x1a;.metalstack.admin.v2.SizeImageConstraintServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xdc\x01\n\x17\x63om.metalstack.admin.v2B\x18SizeImageconstraintProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.admin.v2.size_imageconstraint_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\030SizeImageconstraintProtoP\001Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\242\002\003MAX\252\002\023Metalstack.Admin.V2\312\002\023Metalstack\\Admin\\V2\342\002\037Metalstack\\Admin\\V2\\GPBMetadata\352\002\025Metalstack::Admin::V2' + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._serialized_options = b'\272H\003\310\001\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['name']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['description']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETEREQUEST'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETEREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Create']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Update']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Delete']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Get']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Get']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['List']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST']._serialized_start=221 + _globals['_SIZEIMAGECONSTRAINTSERVICECREATEREQUEST']._serialized_end=536 + _globals['_SIZEIMAGECONSTRAINTSERVICECREATERESPONSE']._serialized_start=539 + _globals['_SIZEIMAGECONSTRAINTSERVICECREATERESPONSE']._serialized_end=673 + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST']._serialized_start=676 + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATEREQUEST']._serialized_end=1018 + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATERESPONSE']._serialized_start=1021 + _globals['_SIZEIMAGECONSTRAINTSERVICEUPDATERESPONSE']._serialized_end=1155 + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETEREQUEST']._serialized_start=1157 + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETEREQUEST']._serialized_end=1231 + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETERESPONSE']._serialized_start=1234 + _globals['_SIZEIMAGECONSTRAINTSERVICEDELETERESPONSE']._serialized_end=1368 + _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST']._serialized_start=1370 + _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST']._serialized_end=1441 + _globals['_SIZEIMAGECONSTRAINTSERVICEGETRESPONSE']._serialized_start=1444 + _globals['_SIZEIMAGECONSTRAINTSERVICEGETRESPONSE']._serialized_end=1575 + _globals['_SIZEIMAGECONSTRAINTSERVICELISTREQUEST']._serialized_start=1577 + _globals['_SIZEIMAGECONSTRAINTSERVICELISTREQUEST']._serialized_end=1683 + _globals['_SIZEIMAGECONSTRAINTSERVICELISTRESPONSE']._serialized_start=1686 + _globals['_SIZEIMAGECONSTRAINTSERVICELISTRESPONSE']._serialized_end=1820 + _globals['_SIZEIMAGECONSTRAINTSERVICE']._serialized_start=1823 + _globals['_SIZEIMAGECONSTRAINTSERVICE']._serialized_end=2573 +# @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/admin/v2/size_imageconstraint_pb2.pyi b/python/metalstack/admin/v2/size_imageconstraint_pb2.pyi new file mode 100644 index 00000000..4f92b929 --- /dev/null +++ b/python/metalstack/admin/v2/size_imageconstraint_pb2.pyi @@ -0,0 +1,87 @@ +from buf.validate import validate_pb2 as _validate_pb2 +from metalstack.api.v2 import common_pb2 as _common_pb2 +from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2 +from metalstack.api.v2 import size_imageconstraint_pb2 as _size_imageconstraint_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class SizeImageConstraintServiceCreateRequest(_message.Message): + __slots__ = ("size", "image_constraints", "meta", "name", "description") + SIZE_FIELD_NUMBER: _ClassVar[int] + IMAGE_CONSTRAINTS_FIELD_NUMBER: _ClassVar[int] + META_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + size: str + image_constraints: _containers.RepeatedCompositeFieldContainer[_size_imageconstraint_pb2.ImageConstraint] + meta: _common_pb2.Meta + name: str + description: str + def __init__(self, size: _Optional[str] = ..., image_constraints: _Optional[_Iterable[_Union[_size_imageconstraint_pb2.ImageConstraint, _Mapping]]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintServiceCreateResponse(_message.Message): + __slots__ = ("size_image_constraint",) + SIZE_IMAGE_CONSTRAINT_FIELD_NUMBER: _ClassVar[int] + size_image_constraint: _size_imageconstraint_pb2.SizeImageConstraint + def __init__(self, size_image_constraint: _Optional[_Union[_size_imageconstraint_pb2.SizeImageConstraint, _Mapping]] = ...) -> None: ... + +class SizeImageConstraintServiceUpdateRequest(_message.Message): + __slots__ = ("size", "update_meta", "image_constraints", "name", "description") + SIZE_FIELD_NUMBER: _ClassVar[int] + UPDATE_META_FIELD_NUMBER: _ClassVar[int] + IMAGE_CONSTRAINTS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + size: str + update_meta: _common_pb2.UpdateMeta + image_constraints: _containers.RepeatedCompositeFieldContainer[_size_imageconstraint_pb2.ImageConstraint] + name: str + description: str + def __init__(self, size: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., image_constraints: _Optional[_Iterable[_Union[_size_imageconstraint_pb2.ImageConstraint, _Mapping]]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintServiceUpdateResponse(_message.Message): + __slots__ = ("size_image_constraint",) + SIZE_IMAGE_CONSTRAINT_FIELD_NUMBER: _ClassVar[int] + size_image_constraint: _size_imageconstraint_pb2.SizeImageConstraint + def __init__(self, size_image_constraint: _Optional[_Union[_size_imageconstraint_pb2.SizeImageConstraint, _Mapping]] = ...) -> None: ... + +class SizeImageConstraintServiceDeleteRequest(_message.Message): + __slots__ = ("size",) + SIZE_FIELD_NUMBER: _ClassVar[int] + size: str + def __init__(self, size: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintServiceDeleteResponse(_message.Message): + __slots__ = ("size_image_constraint",) + SIZE_IMAGE_CONSTRAINT_FIELD_NUMBER: _ClassVar[int] + size_image_constraint: _size_imageconstraint_pb2.SizeImageConstraint + def __init__(self, size_image_constraint: _Optional[_Union[_size_imageconstraint_pb2.SizeImageConstraint, _Mapping]] = ...) -> None: ... + +class SizeImageConstraintServiceGetRequest(_message.Message): + __slots__ = ("size",) + SIZE_FIELD_NUMBER: _ClassVar[int] + size: str + def __init__(self, size: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintServiceGetResponse(_message.Message): + __slots__ = ("size_image_constraint",) + SIZE_IMAGE_CONSTRAINT_FIELD_NUMBER: _ClassVar[int] + size_image_constraint: _size_imageconstraint_pb2.SizeImageConstraint + def __init__(self, size_image_constraint: _Optional[_Union[_size_imageconstraint_pb2.SizeImageConstraint, _Mapping]] = ...) -> None: ... + +class SizeImageConstraintServiceListRequest(_message.Message): + __slots__ = ("query",) + QUERY_FIELD_NUMBER: _ClassVar[int] + query: _size_imageconstraint_pb2.SizeImageConstraintQuery + def __init__(self, query: _Optional[_Union[_size_imageconstraint_pb2.SizeImageConstraintQuery, _Mapping]] = ...) -> None: ... + +class SizeImageConstraintServiceListResponse(_message.Message): + __slots__ = ("size_image_constraints",) + SIZE_IMAGE_CONSTRAINTS_FIELD_NUMBER: _ClassVar[int] + size_image_constraints: _containers.RepeatedCompositeFieldContainer[_size_imageconstraint_pb2.SizeImageConstraint] + def __init__(self, size_image_constraints: _Optional[_Iterable[_Union[_size_imageconstraint_pb2.SizeImageConstraint, _Mapping]]] = ...) -> None: ... diff --git a/python/metalstack/api/v2/size_imageconstraint_connect.py b/python/metalstack/api/v2/size_imageconstraint_connect.py new file mode 100644 index 00000000..184c1490 --- /dev/null +++ b/python/metalstack/api/v2/size_imageconstraint_connect.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: metalstack/api/v2/size_imageconstraint.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import metalstack.api.v2.size_imageconstraint_pb2 as metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2 + + +class SizeImageConstraintService(Protocol): + async def try_(self, request: metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SizeImageConstraintServiceASGIApplication(ConnectASGIApplication[SizeImageConstraintService]): + def __init__(self, service: SizeImageConstraintService | AsyncGenerator[SizeImageConstraintService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/metalstack.api.v2.SizeImageConstraintService/Try": Endpoint.unary( + method=MethodInfo( + name="Try", + service_name="metalstack.api.v2.SizeImageConstraintService", + input=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + output=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.try_, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/metalstack.api.v2.SizeImageConstraintService" + + +class SizeImageConstraintServiceClient(ConnectClient): + async def try_( + self, + request: metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="Try", + service_name="metalstack.api.v2.SizeImageConstraintService", + input=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + output=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class SizeImageConstraintServiceSync(Protocol): + def try_(self, request: metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SizeImageConstraintServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: SizeImageConstraintServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + super().__init__( + endpoints={ + "/metalstack.api.v2.SizeImageConstraintService/Try": EndpointSync.unary( + method=MethodInfo( + name="Try", + service_name="metalstack.api.v2.SizeImageConstraintService", + input=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + output=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.try_, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/metalstack.api.v2.SizeImageConstraintService" + + +class SizeImageConstraintServiceClientSync(ConnectClientSync): + def try_( + self, + request: metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="Try", + service_name="metalstack.api.v2.SizeImageConstraintService", + input=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryRequest, + output=metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2.SizeImageConstraintServiceTryResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/python/metalstack/api/v2/size_imageconstraint_pb2.py b/python/metalstack/api/v2/size_imageconstraint_pb2.py new file mode 100644 index 00000000..59e5a429 --- /dev/null +++ b/python/metalstack/api/v2/size_imageconstraint_pb2.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: metalstack/api/v2/size_imageconstraint.proto +# Protobuf Python Version: 6.33.5 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 33, + 5, + '', + 'metalstack/api/v2/size_imageconstraint.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 +from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2 +from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,metalstack/api/v2/size_imageconstraint.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"j\n$SizeImageConstraintServiceTryRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12!\n\x05image\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05image\"\'\n%SizeImageConstraintServiceTryResponse\"\xa7\x02\n\x13SizeImageConstraint\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n\x11image_constraints\x18\x02 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"d\n\x0fImageConstraint\x12!\n\x05image\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x05image\x12.\n\x0csemver_match\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0bsemverMatch\"\xbc\x01\n\x18SizeImageConstraintQuery\x12$\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04size\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_sizeB\x07\n\x05_nameB\x0e\n\x0c_description2\xa1\x01\n\x1aSizeImageConstraintService\x12\x82\x01\n\x03Try\x12\x37.metalstack.api.v2.SizeImageConstraintServiceTryRequest\x1a\x38.metalstack.api.v2.SizeImageConstraintServiceTryResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xce\x01\n\x15\x63om.metalstack.api.v2B\x18SizeImageconstraintProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.api.v2.size_imageconstraint_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\025com.metalstack.api.v2B\030SizeImageconstraintProtoP\001Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\242\002\003MAX\252\002\021Metalstack.Api.V2\312\002\021Metalstack\\Api\\V2\342\002\035Metalstack\\Api\\V2\\GPBMetadata\352\002\023Metalstack::Api::V2' + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST'].fields_by_name['image']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST'].fields_by_name['image']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['name']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['description']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINT'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' + _globals['_IMAGECONSTRAINT'].fields_by_name['image']._loaded_options = None + _globals['_IMAGECONSTRAINT'].fields_by_name['image']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_IMAGECONSTRAINT'].fields_by_name['semver_match']._loaded_options = None + _globals['_IMAGECONSTRAINT'].fields_by_name['semver_match']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['size']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['name']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['description']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTQUERY'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Try']._loaded_options = None + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Try']._serialized_options = b'\330\363\030\003\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST']._serialized_start=170 + _globals['_SIZEIMAGECONSTRAINTSERVICETRYREQUEST']._serialized_end=276 + _globals['_SIZEIMAGECONSTRAINTSERVICETRYRESPONSE']._serialized_start=278 + _globals['_SIZEIMAGECONSTRAINTSERVICETRYRESPONSE']._serialized_end=317 + _globals['_SIZEIMAGECONSTRAINT']._serialized_start=320 + _globals['_SIZEIMAGECONSTRAINT']._serialized_end=615 + _globals['_IMAGECONSTRAINT']._serialized_start=617 + _globals['_IMAGECONSTRAINT']._serialized_end=717 + _globals['_SIZEIMAGECONSTRAINTQUERY']._serialized_start=720 + _globals['_SIZEIMAGECONSTRAINTQUERY']._serialized_end=908 + _globals['_SIZEIMAGECONSTRAINTSERVICE']._serialized_start=911 + _globals['_SIZEIMAGECONSTRAINTSERVICE']._serialized_end=1072 +# @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/size_imageconstraint_pb2.pyi b/python/metalstack/api/v2/size_imageconstraint_pb2.pyi new file mode 100644 index 00000000..c85182d9 --- /dev/null +++ b/python/metalstack/api/v2/size_imageconstraint_pb2.pyi @@ -0,0 +1,54 @@ +from buf.validate import validate_pb2 as _validate_pb2 +from metalstack.api.v2 import common_pb2 as _common_pb2 +from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class SizeImageConstraintServiceTryRequest(_message.Message): + __slots__ = ("size", "image") + SIZE_FIELD_NUMBER: _ClassVar[int] + IMAGE_FIELD_NUMBER: _ClassVar[int] + size: str + image: str + def __init__(self, size: _Optional[str] = ..., image: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintServiceTryResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class SizeImageConstraint(_message.Message): + __slots__ = ("size", "image_constraints", "meta", "name", "description") + SIZE_FIELD_NUMBER: _ClassVar[int] + IMAGE_CONSTRAINTS_FIELD_NUMBER: _ClassVar[int] + META_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + size: str + image_constraints: _containers.RepeatedCompositeFieldContainer[ImageConstraint] + meta: _common_pb2.Meta + name: str + description: str + def __init__(self, size: _Optional[str] = ..., image_constraints: _Optional[_Iterable[_Union[ImageConstraint, _Mapping]]] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... + +class ImageConstraint(_message.Message): + __slots__ = ("image", "semver_match") + IMAGE_FIELD_NUMBER: _ClassVar[int] + SEMVER_MATCH_FIELD_NUMBER: _ClassVar[int] + image: str + semver_match: str + def __init__(self, image: _Optional[str] = ..., semver_match: _Optional[str] = ...) -> None: ... + +class SizeImageConstraintQuery(_message.Message): + __slots__ = ("size", "name", "description") + SIZE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + size: str + name: str + description: str + def __init__(self, size: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... diff --git a/python/metalstack/api/v2/size_pb2.py b/python/metalstack/api/v2/size_pb2.py index f39aad2c..554d99aa 100644 --- a/python/metalstack/api/v2/size_pb2.py +++ b/python/metalstack/api/v2/size_pb2.py @@ -27,7 +27,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cmetalstack/api/v2/size.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"3\n\x15SizeServiceGetRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x02id\"L\n\x16SizeServiceListRequest\x12\x32\n\x05query\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.SizeQueryR\x05query\"E\n\x16SizeServiceGetResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"H\n\x17SizeServiceListResponse\x12-\n\x05sizes\x18\x01 \x03(\x0b\x32\x17.metalstack.api.v2.SizeR\x05sizes\"\x88\x02\n\x04Size\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x43\n\x0b\x63onstraints\x18\x06 \x03(\x0b\x32!.metalstack.api.v2.SizeConstraintR\x0b\x63onstraintsB\x07\n\x05_nameB\x0e\n\x0c_description\"\xb9\x01\n\x0eSizeConstraint\x12\x43\n\x04type\x18\x01 \x01(\x0e\x32%.metalstack.api.v2.SizeConstraintTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\x10\n\x03min\x18\x02 \x01(\x04R\x03min\x12\x10\n\x03max\x18\x03 \x01(\x04R\x03max\x12/\n\nidentifier\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x00\x18\x80\x01H\x00R\nidentifier\x88\x01\x01\x42\r\n\x0b_identifier\"\xea\x01\n\tSizeQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels*\xe8\x01\n\x12SizeConstraintType\x12$\n SIZE_CONSTRAINT_TYPE_UNSPECIFIED\x10\x00\x12)\n\x1aSIZE_CONSTRAINT_TYPE_CORES\x10\x01\x1a\t\x82\xb2\x19\x05\x63ores\x12+\n\x1bSIZE_CONSTRAINT_TYPE_MEMORY\x10\x02\x1a\n\x82\xb2\x19\x06memory\x12-\n\x1cSIZE_CONSTRAINT_TYPE_STORAGE\x10\x03\x1a\x0b\x82\xb2\x19\x07storage\x12%\n\x18SIZE_CONSTRAINT_TYPE_GPU\x10\x04\x1a\x07\x82\xb2\x19\x03gpu2\xdc\x01\n\x0bSizeService\x12\x64\n\x03Get\x12(.metalstack.api.v2.SizeServiceGetRequest\x1a).metalstack.api.v2.SizeServiceGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12g\n\x04List\x12).metalstack.api.v2.SizeServiceListRequest\x1a*.metalstack.api.v2.SizeServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xbf\x01\n\x15\x63om.metalstack.api.v2B\tSizeProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cmetalstack/api/v2/size.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"4\n\x15SizeServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"L\n\x16SizeServiceListRequest\x12\x32\n\x05query\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.SizeQueryR\x05query\"E\n\x16SizeServiceGetResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"H\n\x17SizeServiceListResponse\x12-\n\x05sizes\x18\x01 \x03(\x0b\x32\x17.metalstack.api.v2.SizeR\x05sizes\"\x88\x02\n\x04Size\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x43\n\x0b\x63onstraints\x18\x06 \x03(\x0b\x32!.metalstack.api.v2.SizeConstraintR\x0b\x63onstraintsB\x07\n\x05_nameB\x0e\n\x0c_description\"\xb9\x01\n\x0eSizeConstraint\x12\x43\n\x04type\x18\x01 \x01(\x0e\x32%.metalstack.api.v2.SizeConstraintTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\x10\n\x03min\x18\x02 \x01(\x04R\x03min\x12\x10\n\x03max\x18\x03 \x01(\x04R\x03max\x12/\n\nidentifier\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x00\x18\x80\x01H\x00R\nidentifier\x88\x01\x01\x42\r\n\x0b_identifier\"\xea\x01\n\tSizeQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels*\xe8\x01\n\x12SizeConstraintType\x12$\n SIZE_CONSTRAINT_TYPE_UNSPECIFIED\x10\x00\x12)\n\x1aSIZE_CONSTRAINT_TYPE_CORES\x10\x01\x1a\t\x82\xb2\x19\x05\x63ores\x12+\n\x1bSIZE_CONSTRAINT_TYPE_MEMORY\x10\x02\x1a\n\x82\xb2\x19\x06memory\x12-\n\x1cSIZE_CONSTRAINT_TYPE_STORAGE\x10\x03\x1a\x0b\x82\xb2\x19\x07storage\x12%\n\x18SIZE_CONSTRAINT_TYPE_GPU\x10\x04\x1a\x07\x82\xb2\x19\x03gpu2\xdc\x01\n\x0bSizeService\x12\x64\n\x03Get\x12(.metalstack.api.v2.SizeServiceGetRequest\x1a).metalstack.api.v2.SizeServiceGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12g\n\x04List\x12).metalstack.api.v2.SizeServiceListRequest\x1a*.metalstack.api.v2.SizeServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xbf\x01\n\x15\x63om.metalstack.api.v2B\tSizeProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -44,7 +44,7 @@ _globals['_SIZECONSTRAINTTYPE'].values_by_name["SIZE_CONSTRAINT_TYPE_GPU"]._loaded_options = None _globals['_SIZECONSTRAINTTYPE'].values_by_name["SIZE_CONSTRAINT_TYPE_GPU"]._serialized_options = b'\202\262\031\003gpu' _globals['_SIZESERVICEGETREQUEST'].fields_by_name['id']._loaded_options = None - _globals['_SIZESERVICEGETREQUEST'].fields_by_name['id']._serialized_options = b'\272H\007r\005\020\002\030\200\001' + _globals['_SIZESERVICEGETREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' _globals['_SIZE'].fields_by_name['id']._loaded_options = None _globals['_SIZE'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' _globals['_SIZE'].fields_by_name['name']._loaded_options = None @@ -65,22 +65,22 @@ _globals['_SIZESERVICE'].methods_by_name['Get']._serialized_options = b'\330\363\030\003\340\363\030\002' _globals['_SIZESERVICE'].methods_by_name['List']._loaded_options = None _globals['_SIZESERVICE'].methods_by_name['List']._serialized_options = b'\330\363\030\003\340\363\030\002' - _globals['_SIZECONSTRAINTTYPE']._serialized_start=1123 - _globals['_SIZECONSTRAINTTYPE']._serialized_end=1355 + _globals['_SIZECONSTRAINTTYPE']._serialized_start=1124 + _globals['_SIZECONSTRAINTTYPE']._serialized_end=1356 _globals['_SIZESERVICEGETREQUEST']._serialized_start=154 - _globals['_SIZESERVICEGETREQUEST']._serialized_end=205 - _globals['_SIZESERVICELISTREQUEST']._serialized_start=207 - _globals['_SIZESERVICELISTREQUEST']._serialized_end=283 - _globals['_SIZESERVICEGETRESPONSE']._serialized_start=285 - _globals['_SIZESERVICEGETRESPONSE']._serialized_end=354 - _globals['_SIZESERVICELISTRESPONSE']._serialized_start=356 - _globals['_SIZESERVICELISTRESPONSE']._serialized_end=428 - _globals['_SIZE']._serialized_start=431 - _globals['_SIZE']._serialized_end=695 - _globals['_SIZECONSTRAINT']._serialized_start=698 - _globals['_SIZECONSTRAINT']._serialized_end=883 - _globals['_SIZEQUERY']._serialized_start=886 - _globals['_SIZEQUERY']._serialized_end=1120 - _globals['_SIZESERVICE']._serialized_start=1358 - _globals['_SIZESERVICE']._serialized_end=1578 + _globals['_SIZESERVICEGETREQUEST']._serialized_end=206 + _globals['_SIZESERVICELISTREQUEST']._serialized_start=208 + _globals['_SIZESERVICELISTREQUEST']._serialized_end=284 + _globals['_SIZESERVICEGETRESPONSE']._serialized_start=286 + _globals['_SIZESERVICEGETRESPONSE']._serialized_end=355 + _globals['_SIZESERVICELISTRESPONSE']._serialized_start=357 + _globals['_SIZESERVICELISTRESPONSE']._serialized_end=429 + _globals['_SIZE']._serialized_start=432 + _globals['_SIZE']._serialized_end=696 + _globals['_SIZECONSTRAINT']._serialized_start=699 + _globals['_SIZECONSTRAINT']._serialized_end=884 + _globals['_SIZEQUERY']._serialized_start=887 + _globals['_SIZEQUERY']._serialized_end=1121 + _globals['_SIZESERVICE']._serialized_start=1359 + _globals['_SIZESERVICE']._serialized_end=1579 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/client/client.py b/python/metalstack/client/client.py index a27ea63c..8bc3365e 100755 --- a/python/metalstack/client/client.py +++ b/python/metalstack/client/client.py @@ -11,6 +11,7 @@ import metalstack.admin.v2.partition_connect as admin_partition_connect import metalstack.admin.v2.project_connect as admin_project_connect import metalstack.admin.v2.size_connect as admin_size_connect +import metalstack.admin.v2.size_imageconstraint_connect as admin_size_imageconstraint_connect import metalstack.admin.v2.size_reservation_connect as admin_size_reservation_connect import metalstack.admin.v2.switch_connect as admin_switch_connect import metalstack.admin.v2.task_connect as admin_task_connect @@ -28,6 +29,7 @@ import metalstack.api.v2.partition_connect as api_partition_connect import metalstack.api.v2.project_connect as api_project_connect import metalstack.api.v2.size_connect as api_size_connect +import metalstack.api.v2.size_imageconstraint_connect as api_size_imageconstraint_connect import metalstack.api.v2.size_reservation_connect as api_size_reservation_connect import metalstack.api.v2.tenant_connect as api_tenant_connect import metalstack.api.v2.token_connect as api_token_connect @@ -98,6 +100,9 @@ def project(self): def size(self): return admin_size_connect.SizeServiceClientSync(address=self._baseurl, http_client=self._client) + def size_imageconstraint(self): + return admin_size_imageconstraint_connect.SizeImageConstraintServiceClientSync(address=self._baseurl, http_client=self._client) + def size_reservation(self): return admin_size_reservation_connect.SizeReservationServiceClientSync(address=self._baseurl, http_client=self._client) @@ -153,6 +158,9 @@ def project(self): def size(self): return api_size_connect.SizeServiceClientSync(address=self._baseurl, http_client=self._client) + def size_imageconstraint(self): + return api_size_imageconstraint_connect.SizeImageConstraintServiceClientSync(address=self._baseurl, http_client=self._client) + def size_reservation(self): return api_size_reservation_connect.SizeReservationServiceClientSync(address=self._baseurl, http_client=self._client) From 45803ca36c292f0ae28ad52ee0f8db8c34985bd0 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Thu, 26 Feb 2026 15:01:41 +0100 Subject: [PATCH 3/3] Review Findings --- doc/index.html | 18 +++++++++--------- .../admin/v2/size_imageconstraint.pb.go | 14 +++++++------- .../api/v2/size_imageconstraint.pb.go | 10 +++++----- go/permissions/servicepermissions.go | 6 +++--- .../admin/v2/size_imageconstraint_pb.d.ts | 8 ++++---- .../admin/v2/size_imageconstraint_pb.js | 2 +- .../admin/v2/size_imageconstraint_pb.ts | 10 +++++----- .../api/v2/size_imageconstraint_pb.d.ts | 10 +++++----- .../api/v2/size_imageconstraint_pb.ts | 10 +++++----- .../admin/v2/size_imageconstraint.proto | 14 +++++++------- .../api/v2/size_imageconstraint.proto | 10 +++++----- .../admin/v2/size_imageconstraint_pb2.py | 8 ++++---- 12 files changed, 60 insertions(+), 60 deletions(-) diff --git a/doc/index.html b/doc/index.html index 7e6c05b9..806c8b50 100644 --- a/doc/index.html +++ b/doc/index.html @@ -14216,14 +14216,14 @@

      ImageConstraint

      image string -

      Id of the image

      +

      Image of the constraint

      semver_match string -

      Semver match

      +

      SemverMatch which defines in semver match format which image version should apply

      @@ -14247,7 +14247,7 @@

      SizeImageConstraint

      size string -

      Id of the size

      +

      Size where this constraint should apply

      @@ -14337,14 +14337,14 @@

      SizeImageConstra size string -

      ID of the size to try

      +

      Size to try

      image string -

      ID of the image to try

      +

      Image to try

      @@ -14408,7 +14408,7 @@

      SizeImageCo size string -

      Id of the size

      +

      Size of the constraint

      @@ -14484,7 +14484,7 @@

      SizeImageCo size string -

      Id of the size

      +

      Size of the constraint

      @@ -14532,7 +14532,7 @@

      SizeImageConst size string -

      Id of the size to get

      +

      Size of the constraint

      @@ -14628,7 +14628,7 @@

      SizeImageCo size string -

      Id of the size

      +

      Size of the image constraint to update

      diff --git a/go/metalstack/admin/v2/size_imageconstraint.pb.go b/go/metalstack/admin/v2/size_imageconstraint.pb.go index 4ec4f267..f1cc8be8 100644 --- a/go/metalstack/admin/v2/size_imageconstraint.pb.go +++ b/go/metalstack/admin/v2/size_imageconstraint.pb.go @@ -26,7 +26,7 @@ const ( // SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request type SizeImageConstraintServiceCreateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the size + // Size of the constraint Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` // ImageConstraints to apply to this size ImageConstraints []*v2.ImageConstraint `protobuf:"bytes,2,rep,name=image_constraints,json=imageConstraints,proto3" json:"image_constraints,omitempty"` @@ -154,7 +154,7 @@ func (x *SizeImageConstraintServiceCreateResponse) GetSizeImageConstraint() *v2. // SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request type SizeImageConstraintServiceUpdateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the size + // Size of the image constraint to update Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` // UpdateMeta contains the timestamp and strategy to be used in this update request UpdateMeta *v2.UpdateMeta `protobuf:"bytes,2,opt,name=update_meta,json=updateMeta,proto3" json:"update_meta,omitempty"` @@ -282,7 +282,7 @@ func (x *SizeImageConstraintServiceUpdateResponse) GetSizeImageConstraint() *v2. // SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request type SizeImageConstraintServiceDeleteRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the size + // Size of the constraint Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -374,7 +374,7 @@ func (x *SizeImageConstraintServiceDeleteResponse) GetSizeImageConstraint() *v2. // SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request type SizeImageConstraintServiceGetRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the size to get + // Size of the constraint Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -594,9 +594,9 @@ const file_metalstack_admin_v2_size_imageconstraint_proto_rawDesc = "" + "&SizeImageConstraintServiceListResponse\x12\\\n" + "\x16size_image_constraints\x18\x01 \x03(\v2&.metalstack.api.v2.SizeImageConstraintR\x14sizeImageConstraints2\xee\x05\n" + "\x1aSizeImageConstraintService\x12\x90\x01\n" + - "\x06Create\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n" + - "\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n" + - "\x06Delete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x88\x01\n" + + "\x06Create\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x90\x01\n" + + "\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x90\x01\n" + + "\x06Delete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n" + "\x03Get\x129.metalstack.admin.v2.SizeImageConstraintServiceGetRequest\x1a:.metalstack.admin.v2.SizeImageConstraintServiceGetResponse\"\n" + "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x8b\x01\n" + "\x04List\x12:.metalstack.admin.v2.SizeImageConstraintServiceListRequest\x1a;.metalstack.admin.v2.SizeImageConstraintServiceListResponse\"\n" + diff --git a/go/metalstack/api/v2/size_imageconstraint.pb.go b/go/metalstack/api/v2/size_imageconstraint.pb.go index 144cbed2..430d9a35 100644 --- a/go/metalstack/api/v2/size_imageconstraint.pb.go +++ b/go/metalstack/api/v2/size_imageconstraint.pb.go @@ -25,9 +25,9 @@ const ( // SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request type SizeImageConstraintServiceTryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // ID of the size to try + // Size to try Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` - // ID of the image to try + // Image to try Image string `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -123,7 +123,7 @@ func (*SizeImageConstraintServiceTryResponse) Descriptor() ([]byte, []int) { // If the image in question is found, but does not match the given expression, machine creation must be forbidden. type SizeImageConstraint struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the size + // Size where this constraint should apply Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` // ImageConstraints to apply to this size ImageConstraints []*ImageConstraint `protobuf:"bytes,2,rep,name=image_constraints,json=imageConstraints,proto3" json:"image_constraints,omitempty"` @@ -210,9 +210,9 @@ func (x *SizeImageConstraint) GetDescription() string { // debian: ">= 10.0.20210101" type ImageConstraint struct { state protoimpl.MessageState `protogen:"open.v1"` - // Id of the image + // Image of the constraint Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` - // Semver match + // SemverMatch which defines in semver match format which image version should apply SemverMatch string `protobuf:"bytes,2,opt,name=semver_match,json=semverMatch,proto3" json:"semver_match,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index 8dca7ad8..67b4c18d 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -583,11 +583,11 @@ func GetServicePermissions() *ServicePermissions { "/metalstack.admin.v2.PartitionService/Delete": true, "/metalstack.admin.v2.PartitionService/Update": true, "/metalstack.admin.v2.ProjectService/List": false, - "/metalstack.admin.v2.SizeImageConstraintService/Create": false, - "/metalstack.admin.v2.SizeImageConstraintService/Delete": false, + "/metalstack.admin.v2.SizeImageConstraintService/Create": true, + "/metalstack.admin.v2.SizeImageConstraintService/Delete": true, "/metalstack.admin.v2.SizeImageConstraintService/Get": false, "/metalstack.admin.v2.SizeImageConstraintService/List": false, - "/metalstack.admin.v2.SizeImageConstraintService/Update": false, + "/metalstack.admin.v2.SizeImageConstraintService/Update": true, "/metalstack.admin.v2.SizeReservationService/Create": true, "/metalstack.admin.v2.SizeReservationService/Delete": true, "/metalstack.admin.v2.SizeReservationService/List": false, diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts b/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts index cda37d32..81cc96dc 100644 --- a/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.d.ts @@ -13,7 +13,7 @@ export declare const file_metalstack_admin_v2_size_imageconstraint: GenFile; */ export type SizeImageConstraintServiceCreateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateRequest"> & { /** - * Id of the size + * Size of the constraint * * @generated from field: string size = 1; */ @@ -73,7 +73,7 @@ export declare const SizeImageConstraintServiceCreateResponseSchema: GenMessage< */ export type SizeImageConstraintServiceUpdateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest"> & { /** - * Id of the size + * Size of the image constraint to update * * @generated from field: string size = 1; */ @@ -133,7 +133,7 @@ export declare const SizeImageConstraintServiceUpdateResponseSchema: GenMessage< */ export type SizeImageConstraintServiceDeleteRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest"> & { /** - * Id of the size + * Size of the constraint * * @generated from field: string size = 1; */ @@ -169,7 +169,7 @@ export declare const SizeImageConstraintServiceDeleteResponseSchema: GenMessage< */ export type SizeImageConstraintServiceGetRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceGetRequest"> & { /** - * Id of the size to get + * Size of the constraint * * @generated from field: string size = 1; */ diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.js b/js/metalstack/admin/v2/size_imageconstraint_pb.js index 075490f3..bcf57f42 100644 --- a/js/metalstack/admin/v2/size_imageconstraint_pb.js +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.js @@ -9,7 +9,7 @@ import { file_metalstack_api_v2_size_imageconstraint } from "../../api/v2/size_i /** * Describes the file metalstack/admin/v2/size_imageconstraint.proto. */ -export const file_metalstack_admin_v2_size_imageconstraint = /*@__PURE__*/ fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); +export const file_metalstack_admin_v2_size_imageconstraint = /*@__PURE__*/ fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); /** * Describes the message metalstack.admin.v2.SizeImageConstraintServiceCreateRequest. * Use `create(SizeImageConstraintServiceCreateRequestSchema)` to create a new message. diff --git a/js/metalstack/admin/v2/size_imageconstraint_pb.ts b/js/metalstack/admin/v2/size_imageconstraint_pb.ts index 3ba9cd20..328d5331 100644 --- a/js/metalstack/admin/v2/size_imageconstraint_pb.ts +++ b/js/metalstack/admin/v2/size_imageconstraint_pb.ts @@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/admin/v2/size_imageconstraint.proto. */ export const file_metalstack_admin_v2_size_imageconstraint: GenFile = /*@__PURE__*/ - fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAhKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); + fileDesc("Ci5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfaW1hZ2Vjb25zdHJhaW50LnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIooCCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESPQoRaW1hZ2VfY29uc3RyYWludHMYAiADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VDcmVhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Ip8CCidTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESPQoRaW1hZ2VfY29uc3RyYWludHMYAyADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNvbnN0cmFpbnQSHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24icQooU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VVcGRhdGVSZXNwb25zZRJFChVzaXplX2ltYWdlX2NvbnN0cmFpbnQYASABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50IkQKJ1NpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgRzaXplGAEgASgJQgu6SAhyBsCzrrECASJxCihTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlc3BvbnNlEkUKFXNpemVfaW1hZ2VfY29uc3RyYWludBgBIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLlNpemVJbWFnZUNvbnN0cmFpbnQiQQokU2l6ZUltYWdlQ29uc3RyYWludFNlcnZpY2VHZXRSZXF1ZXN0EhkKBHNpemUYASABKAlCC7pICHIGwLOusQIBIm4KJVNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2USRQoVc2l6ZV9pbWFnZV9jb25zdHJhaW50GAEgASgLMiYubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludCJjCiVTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUxpc3RSZXF1ZXN0EjoKBXF1ZXJ5GAEgASgLMisubWV0YWxzdGFjay5hcGkudjIuU2l6ZUltYWdlQ29uc3RyYWludFF1ZXJ5InAKJlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEkYKFnNpemVfaW1hZ2VfY29uc3RyYWludHMYASADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplSW1hZ2VDb25zdHJhaW50Mu4FChpTaXplSW1hZ2VDb25zdHJhaW50U2VydmljZRKQAQoGQ3JlYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUNyZWF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARKQAQoGVXBkYXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZVVwZGF0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARKQAQoGRGVsZXRlEjwubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZURlbGV0ZVJlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoDR2V0EjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplSW1hZ2VDb25zdHJhaW50U2VydmljZUdldFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAISiwEKBExpc3QSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVJbWFnZUNvbnN0cmFpbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtwBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIYU2l6ZUltYWdlY29uc3RyYWludFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_imageconstraint]); /** * SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request @@ -25,7 +25,7 @@ export const file_metalstack_admin_v2_size_imageconstraint: GenFile = /*@__PURE_ */ export type SizeImageConstraintServiceCreateRequest = Message<"metalstack.admin.v2.SizeImageConstraintServiceCreateRequest"> & { /** - * Id of the size + * Size of the constraint * * @generated from field: string size = 1; */ @@ -95,7 +95,7 @@ export const SizeImageConstraintServiceCreateResponseSchema: GenMessage & { /** - * Id of the size + * Size of the image constraint to update * * @generated from field: string size = 1; */ @@ -165,7 +165,7 @@ export const SizeImageConstraintServiceUpdateResponseSchema: GenMessage & { /** - * Id of the size + * Size of the constraint * * @generated from field: string size = 1; */ @@ -207,7 +207,7 @@ export const SizeImageConstraintServiceDeleteResponseSchema: GenMessage & { /** - * Id of the size to get + * Size of the constraint * * @generated from field: string size = 1; */ diff --git a/js/metalstack/api/v2/size_imageconstraint_pb.d.ts b/js/metalstack/api/v2/size_imageconstraint_pb.d.ts index 09cfb6d6..1db16df7 100644 --- a/js/metalstack/api/v2/size_imageconstraint_pb.d.ts +++ b/js/metalstack/api/v2/size_imageconstraint_pb.d.ts @@ -12,13 +12,13 @@ export declare const file_metalstack_api_v2_size_imageconstraint: GenFile; */ export type SizeImageConstraintServiceTryRequest = Message<"metalstack.api.v2.SizeImageConstraintServiceTryRequest"> & { /** - * ID of the size to try + * Size to try * * @generated from field: string size = 1; */ size: string; /** - * ID of the image to try + * Image to try * * @generated from field: string image = 2; */ @@ -53,7 +53,7 @@ export declare const SizeImageConstraintServiceTryResponseSchema: GenMessage & { /** - * Id of the size + * Size where this constraint should apply * * @generated from field: string size = 1; */ @@ -99,13 +99,13 @@ export declare const SizeImageConstraintSchema: GenMessage; */ export type ImageConstraint = Message<"metalstack.api.v2.ImageConstraint"> & { /** - * Id of the image + * Image of the constraint * * @generated from field: string image = 1; */ image: string; /** - * Semver match + * SemverMatch which defines in semver match format which image version should apply * * @generated from field: string semver_match = 2; */ diff --git a/js/metalstack/api/v2/size_imageconstraint_pb.ts b/js/metalstack/api/v2/size_imageconstraint_pb.ts index ae4904b6..0764d969 100644 --- a/js/metalstack/api/v2/size_imageconstraint_pb.ts +++ b/js/metalstack/api/v2/size_imageconstraint_pb.ts @@ -23,14 +23,14 @@ export const file_metalstack_api_v2_size_imageconstraint: GenFile = /*@__PURE__* */ export type SizeImageConstraintServiceTryRequest = Message<"metalstack.api.v2.SizeImageConstraintServiceTryRequest"> & { /** - * ID of the size to try + * Size to try * * @generated from field: string size = 1; */ size: string; /** - * ID of the image to try + * Image to try * * @generated from field: string image = 2; */ @@ -72,7 +72,7 @@ export const SizeImageConstraintServiceTryResponseSchema: GenMessage & { /** - * Id of the size + * Size where this constraint should apply * * @generated from field: string size = 1; */ @@ -125,14 +125,14 @@ export const SizeImageConstraintSchema: GenMessage = /*@__P */ export type ImageConstraint = Message<"metalstack.api.v2.ImageConstraint"> & { /** - * Id of the image + * Image of the constraint * * @generated from field: string image = 1; */ image: string; /** - * Semver match + * SemverMatch which defines in semver match format which image version should apply * * @generated from field: string semver_match = 2; */ diff --git a/proto/metalstack/admin/v2/size_imageconstraint.proto b/proto/metalstack/admin/v2/size_imageconstraint.proto index 4e3f4fae..0444c7e1 100644 --- a/proto/metalstack/admin/v2/size_imageconstraint.proto +++ b/proto/metalstack/admin/v2/size_imageconstraint.proto @@ -12,17 +12,17 @@ service SizeImageConstraintService { // Create a size image constraint rpc Create(SizeImageConstraintServiceCreateRequest) returns (SizeImageConstraintServiceCreateResponse) { option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; - option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + option (metalstack.api.v2.auditing) = AUDITING_INCLUDED; } // Update a size image constraint rpc Update(SizeImageConstraintServiceUpdateRequest) returns (SizeImageConstraintServiceUpdateResponse) { option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; - option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + option (metalstack.api.v2.auditing) = AUDITING_INCLUDED; } // Delete a size image constraint rpc Delete(SizeImageConstraintServiceDeleteRequest) returns (SizeImageConstraintServiceDeleteResponse) { option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR; - option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED; + option (metalstack.api.v2.auditing) = AUDITING_INCLUDED; } // Get a size image constraint rpc Get(SizeImageConstraintServiceGetRequest) returns (SizeImageConstraintServiceGetResponse) { @@ -40,7 +40,7 @@ service SizeImageConstraintService { // SizeImageConstraintServiceCreateRequest is the request payload for a size image constraint create request message SizeImageConstraintServiceCreateRequest { - // Id of the size + // Size of the constraint string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; // ImageConstraints to apply to this size repeated metalstack.api.v2.ImageConstraint image_constraints = 2; @@ -60,7 +60,7 @@ message SizeImageConstraintServiceCreateResponse { // SizeImageConstraintServiceUpdateRequest is the request payload for a size image constraint update request message SizeImageConstraintServiceUpdateRequest { - // Id of the size + // Size of the image constraint to update string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; // UpdateMeta contains the timestamp and strategy to be used in this update request metalstack.api.v2.UpdateMeta update_meta = 2 [(buf.validate.field).required = true]; @@ -80,7 +80,7 @@ message SizeImageConstraintServiceUpdateResponse { // SizeImageConstraintServiceDeleteRequest is the request payload for a size image constraint delete request message SizeImageConstraintServiceDeleteRequest { - // Id of the size + // Size of the constraint string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; } @@ -92,7 +92,7 @@ message SizeImageConstraintServiceDeleteResponse { // SizeImageConstraintServiceGetRequest is the request payload for a size image constraint get request message SizeImageConstraintServiceGetRequest { - // Id of the size to get + // Size of the constraint string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; } diff --git a/proto/metalstack/api/v2/size_imageconstraint.proto b/proto/metalstack/api/v2/size_imageconstraint.proto index 29de1292..12e81ea8 100644 --- a/proto/metalstack/api/v2/size_imageconstraint.proto +++ b/proto/metalstack/api/v2/size_imageconstraint.proto @@ -17,9 +17,9 @@ service SizeImageConstraintService { // SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request message SizeImageConstraintServiceTryRequest { - // ID of the size to try + // Size to try string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; - // ID of the image to try + // Image to try string image = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; } @@ -34,7 +34,7 @@ message SizeImageConstraintServiceTryResponse {} // If the image in question is not found, no restrictions apply as well. // If the image in question is found, but does not match the given expression, machine creation must be forbidden. message SizeImageConstraint { - // Id of the size + // Size where this constraint should apply string size = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; // ImageConstraints to apply to this size repeated ImageConstraint image_constraints = 2; @@ -52,9 +52,9 @@ message SizeImageConstraint { // ubuntu: ">= 20.04.20211011" // debian: ">= 10.0.20210101" message ImageConstraint { - // Id of the image + // Image of the constraint string image = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; - // Semver match + // SemverMatch which defines in semver match format which image version should apply string semver_match = 2 [(buf.validate.field).string.(metalstack.api.v2.is_description) = true]; } diff --git a/python/metalstack/admin/v2/size_imageconstraint_pb2.py b/python/metalstack/admin/v2/size_imageconstraint_pb2.py index 9486eeb6..5ba89e12 100644 --- a/python/metalstack/admin/v2/size_imageconstraint_pb2.py +++ b/python/metalstack/admin/v2/size_imageconstraint_pb2.py @@ -28,7 +28,7 @@ from metalstack.api.v2 import size_imageconstraint_pb2 as metalstack_dot_api_dot_v2_dot_size__imageconstraint__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.metalstack/admin/v2/size_imageconstraint.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a,metalstack/api/v2/size_imageconstraint.proto\"\xbb\x02\n\'SizeImageConstraintServiceCreateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n\x11image_constraints\x18\x02 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceCreateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"\xd6\x02\n\'SizeImageConstraintServiceUpdateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12O\n\x11image_constraints\x18\x03 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceUpdateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"J\n\'SizeImageConstraintServiceDeleteRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x86\x01\n(SizeImageConstraintServiceDeleteResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"G\n$SizeImageConstraintServiceGetRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x83\x01\n%SizeImageConstraintServiceGetResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"j\n%SizeImageConstraintServiceListRequest\x12\x41\n\x05query\x18\x01 \x01(\x0b\x32+.metalstack.api.v2.SizeImageConstraintQueryR\x05query\"\x86\x01\n&SizeImageConstraintServiceListResponse\x12\\\n\x16size_image_constraints\x18\x01 \x03(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x14sizeImageConstraints2\xee\x05\n\x1aSizeImageConstraintService\x12\x90\x01\n\x06\x43reate\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x90\x01\n\x06\x44\x65lete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12\x88\x01\n\x03Get\x12\x39.metalstack.admin.v2.SizeImageConstraintServiceGetRequest\x1a:.metalstack.admin.v2.SizeImageConstraintServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x8b\x01\n\x04List\x12:.metalstack.admin.v2.SizeImageConstraintServiceListRequest\x1a;.metalstack.admin.v2.SizeImageConstraintServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xdc\x01\n\x17\x63om.metalstack.admin.v2B\x18SizeImageconstraintProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.metalstack/admin/v2/size_imageconstraint.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a,metalstack/api/v2/size_imageconstraint.proto\"\xbb\x02\n\'SizeImageConstraintServiceCreateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12O\n\x11image_constraints\x18\x02 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceCreateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"\xd6\x02\n\'SizeImageConstraintServiceUpdateRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12O\n\x11image_constraints\x18\x03 \x03(\x0b\x32\".metalstack.api.v2.ImageConstraintR\x10imageConstraints\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_description\"\x86\x01\n(SizeImageConstraintServiceUpdateResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"J\n\'SizeImageConstraintServiceDeleteRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x86\x01\n(SizeImageConstraintServiceDeleteResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"G\n$SizeImageConstraintServiceGetRequest\x12\x1f\n\x04size\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04size\"\x83\x01\n%SizeImageConstraintServiceGetResponse\x12Z\n\x15size_image_constraint\x18\x01 \x01(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x13sizeImageConstraint\"j\n%SizeImageConstraintServiceListRequest\x12\x41\n\x05query\x18\x01 \x01(\x0b\x32+.metalstack.api.v2.SizeImageConstraintQueryR\x05query\"\x86\x01\n&SizeImageConstraintServiceListResponse\x12\\\n\x16size_image_constraints\x18\x01 \x03(\x0b\x32&.metalstack.api.v2.SizeImageConstraintR\x14sizeImageConstraints2\xee\x05\n\x1aSizeImageConstraintService\x12\x90\x01\n\x06\x43reate\x12<.metalstack.admin.v2.SizeImageConstraintServiceCreateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x90\x01\n\x06Update\x12<.metalstack.admin.v2.SizeImageConstraintServiceUpdateRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x90\x01\n\x06\x44\x65lete\x12<.metalstack.admin.v2.SizeImageConstraintServiceDeleteRequest\x1a=.metalstack.admin.v2.SizeImageConstraintServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x88\x01\n\x03Get\x12\x39.metalstack.admin.v2.SizeImageConstraintServiceGetRequest\x1a:.metalstack.admin.v2.SizeImageConstraintServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x8b\x01\n\x04List\x12:.metalstack.admin.v2.SizeImageConstraintServiceListRequest\x1a;.metalstack.admin.v2.SizeImageConstraintServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xdc\x01\n\x17\x63om.metalstack.admin.v2B\x18SizeImageconstraintProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -55,11 +55,11 @@ _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST'].fields_by_name['size']._loaded_options = None _globals['_SIZEIMAGECONSTRAINTSERVICEGETREQUEST'].fields_by_name['size']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Create']._loaded_options = None - _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001\340\363\030\001' _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Update']._loaded_options = None - _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\001\001\340\363\030\001' _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Delete']._loaded_options = None - _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001\340\363\030\002' + _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001\340\363\030\001' _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Get']._loaded_options = None _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['Get']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002' _globals['_SIZEIMAGECONSTRAINTSERVICE'].methods_by_name['List']._loaded_options = None