diff --git a/doc/index.html b/doc/index.html
index d9f91307..83ffef54 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1589,15 +1589,15 @@
@@ -14661,10 +14661,10 @@
- | role |
- MachineRole |
- |
- Role defines if this is machine or a firewall |
+ allocation_type |
+ MachineAllocationType |
+ optional |
+ AllocationType of this machine |
@@ -14787,10 +14787,10 @@
- | role |
- MachineRole |
+ allocation_type |
+ MachineAllocationType |
optional |
- Role of this machine |
+ AllocationType of this machine |
@@ -15333,6 +15333,27 @@
Identifier the unique identifier of this network interface |
+
+ | vendor |
+ string |
+ |
+ Vendor of this network card |
+
+
+
+ | model |
+ string |
+ |
+ Model of this network card |
+
+
+
+ | speed |
+ uint64 |
+ |
+ Speed in bits/second of this network card |
+
+
| neighbors |
MachineNic |
@@ -15739,10 +15760,10 @@
- | role |
- MachineRole |
- |
- Role defines if this is machine or a firewall |
+ allocation_type |
+ MachineAllocationType |
+ optional |
+ AllocationType of this machine |
@@ -16216,6 +16237,35 @@
+
+ MachineAllocationType defines if this is a machine or a firewall
+
+
+ | Name | Number | Description |
+
+
+
+
+ | MACHINE_ALLOCATION_TYPE_UNSPECIFIED |
+ 0 |
+ MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified |
+
+
+
+ | MACHINE_ALLOCATION_TYPE_MACHINE |
+ 1 |
+ MACHINE_ALLOCATION_TYPE_MACHINE is a machine |
+
+
+
+ | MACHINE_ALLOCATION_TYPE_FIREWALL |
+ 2 |
+ MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall |
+
+
+
+
+
MachineLiveliness specifies the liveliness of a machine
-
- MachineRole defines if this is a machine or a firewall
-
-
- | Name | Number | Description |
-
-
-
-
- | MACHINE_ROLE_UNSPECIFIED |
- 0 |
- MACHINE_ROLE_UNSPECIFIED is unspecified |
-
-
-
- | MACHINE_ROLE_MACHINE |
- 1 |
- MACHINE_ROLE_MACHINE is a machine |
-
-
-
- | MACHINE_ROLE_FIREWALL |
- 2 |
- MACHINE_ROLE_FIREWALL is a firewall |
-
-
-
-
-
MachineState defines if the machine was locked or reserved from a operator
diff --git a/go/metalstack/api/v2/machine.pb.go b/go/metalstack/api/v2/machine.pb.go
index 344873c9..cb9da59d 100644
--- a/go/metalstack/api/v2/machine.pb.go
+++ b/go/metalstack/api/v2/machine.pb.go
@@ -243,56 +243,56 @@ func (MachineLiveliness) EnumDescriptor() ([]byte, []int) {
return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{3}
}
-// MachineRole defines if this is a machine or a firewall
-type MachineRole int32
+// MachineAllocationType defines if this is a machine or a firewall
+type MachineAllocationType int32
const (
- // MACHINE_ROLE_UNSPECIFIED is unspecified
- MachineRole_MACHINE_ROLE_UNSPECIFIED MachineRole = 0
- // MACHINE_ROLE_MACHINE is a machine
- MachineRole_MACHINE_ROLE_MACHINE MachineRole = 1
- // MACHINE_ROLE_FIREWALL is a firewall
- MachineRole_MACHINE_ROLE_FIREWALL MachineRole = 2
+ // MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified
+ MachineAllocationType_MACHINE_ALLOCATION_TYPE_UNSPECIFIED MachineAllocationType = 0
+ // MACHINE_ALLOCATION_TYPE_MACHINE is a machine
+ MachineAllocationType_MACHINE_ALLOCATION_TYPE_MACHINE MachineAllocationType = 1
+ // MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall
+ MachineAllocationType_MACHINE_ALLOCATION_TYPE_FIREWALL MachineAllocationType = 2
)
-// Enum value maps for MachineRole.
+// Enum value maps for MachineAllocationType.
var (
- MachineRole_name = map[int32]string{
- 0: "MACHINE_ROLE_UNSPECIFIED",
- 1: "MACHINE_ROLE_MACHINE",
- 2: "MACHINE_ROLE_FIREWALL",
+ MachineAllocationType_name = map[int32]string{
+ 0: "MACHINE_ALLOCATION_TYPE_UNSPECIFIED",
+ 1: "MACHINE_ALLOCATION_TYPE_MACHINE",
+ 2: "MACHINE_ALLOCATION_TYPE_FIREWALL",
}
- MachineRole_value = map[string]int32{
- "MACHINE_ROLE_UNSPECIFIED": 0,
- "MACHINE_ROLE_MACHINE": 1,
- "MACHINE_ROLE_FIREWALL": 2,
+ MachineAllocationType_value = map[string]int32{
+ "MACHINE_ALLOCATION_TYPE_UNSPECIFIED": 0,
+ "MACHINE_ALLOCATION_TYPE_MACHINE": 1,
+ "MACHINE_ALLOCATION_TYPE_FIREWALL": 2,
}
)
-func (x MachineRole) Enum() *MachineRole {
- p := new(MachineRole)
+func (x MachineAllocationType) Enum() *MachineAllocationType {
+ p := new(MachineAllocationType)
*p = x
return p
}
-func (x MachineRole) String() string {
+func (x MachineAllocationType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
-func (MachineRole) Descriptor() protoreflect.EnumDescriptor {
+func (MachineAllocationType) Descriptor() protoreflect.EnumDescriptor {
return file_metalstack_api_v2_machine_proto_enumTypes[4].Descriptor()
}
-func (MachineRole) Type() protoreflect.EnumType {
+func (MachineAllocationType) Type() protoreflect.EnumType {
return &file_metalstack_api_v2_machine_proto_enumTypes[4]
}
-func (x MachineRole) Number() protoreflect.EnumNumber {
+func (x MachineAllocationType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
-// Deprecated: Use MachineRole.Descriptor instead.
-func (MachineRole) EnumDescriptor() ([]byte, []int) {
+// Deprecated: Use MachineAllocationType.Descriptor instead.
+func (MachineAllocationType) EnumDescriptor() ([]byte, []int) {
return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{4}
}
@@ -439,8 +439,8 @@ type MachineServiceCreateRequest struct {
DnsServer []*DNSServer `protobuf:"bytes,16,rep,name=dns_server,json=dnsServer,proto3" json:"dns_server,omitempty"`
// NTPServer the ntp servers used for the machine
NtpServer []*NTPServer `protobuf:"bytes,17,rep,name=ntp_server,json=ntpServer,proto3" json:"ntp_server,omitempty"`
- // Role defines if this is machine or a firewall
- Role MachineRole `protobuf:"varint,18,opt,name=role,proto3,enum=metalstack.api.v2.MachineRole" json:"role,omitempty"`
+ // AllocationType of this machine
+ AllocationType *MachineAllocationType `protobuf:"varint,18,opt,name=allocation_type,json=allocationType,proto3,enum=metalstack.api.v2.MachineAllocationType,oneof" json:"allocation_type,omitempty"`
// 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"`
unknownFields protoimpl.UnknownFields
@@ -596,11 +596,11 @@ func (x *MachineServiceCreateRequest) GetNtpServer() []*NTPServer {
return nil
}
-func (x *MachineServiceCreateRequest) GetRole() MachineRole {
- if x != nil {
- return x.Role
+func (x *MachineServiceCreateRequest) GetAllocationType() MachineAllocationType {
+ if x != nil && x.AllocationType != nil {
+ return *x.AllocationType
}
- return MachineRole_MACHINE_ROLE_UNSPECIFIED
+ return MachineAllocationType_MACHINE_ALLOCATION_TYPE_UNSPECIFIED
}
func (x *MachineServiceCreateRequest) GetFirewallRules() *FirewallRules {
@@ -1278,8 +1278,8 @@ type MachineAllocation struct {
// Userdata contains instructions required to bootstrap the machine.
// AWS limits the max userdata size to 16k, lets allow twice as much
Userdata string `protobuf:"bytes,12,opt,name=userdata,proto3" json:"userdata,omitempty"`
- // Role defines if this is machine or a firewall
- Role MachineRole `protobuf:"varint,13,opt,name=role,proto3,enum=metalstack.api.v2.MachineRole" json:"role,omitempty"`
+ // AllocationType of this machine
+ AllocationType *MachineAllocationType `protobuf:"varint,13,opt,name=allocation_type,json=allocationType,proto3,enum=metalstack.api.v2.MachineAllocationType,oneof" json:"allocation_type,omitempty"`
// FirewallRules to be applied if this is a firewall
FirewallRules *FirewallRules `protobuf:"bytes,14,opt,name=firewall_rules,json=firewallRules,proto3" json:"firewall_rules,omitempty"`
// DNSServers for this machine
@@ -1406,11 +1406,11 @@ func (x *MachineAllocation) GetUserdata() string {
return ""
}
-func (x *MachineAllocation) GetRole() MachineRole {
- if x != nil {
- return x.Role
+func (x *MachineAllocation) GetAllocationType() MachineAllocationType {
+ if x != nil && x.AllocationType != nil {
+ return *x.AllocationType
}
- return MachineRole_MACHINE_ROLE_UNSPECIFIED
+ return MachineAllocationType_MACHINE_ALLOCATION_TYPE_UNSPECIFIED
}
func (x *MachineAllocation) GetFirewallRules() *FirewallRules {
@@ -2035,8 +2035,14 @@ type MachineNic struct {
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
// Identifier the unique identifier of this network interface
Identifier string `protobuf:"bytes,3,opt,name=identifier,proto3" json:"identifier,omitempty"`
+ // Vendor of this network card
+ Vendor string `protobuf:"bytes,4,opt,name=vendor,proto3" json:"vendor,omitempty"`
+ // Model of this network card
+ Model string `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`
+ // Speed in bits/second of this network card
+ Speed uint64 `protobuf:"varint,6,opt,name=speed,proto3" json:"speed,omitempty"`
// Neighbors the neighbors visible to this network interface
- Neighbors []*MachineNic `protobuf:"bytes,4,rep,name=neighbors,proto3" json:"neighbors,omitempty"`
+ Neighbors []*MachineNic `protobuf:"bytes,7,rep,name=neighbors,proto3" json:"neighbors,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -2092,6 +2098,27 @@ func (x *MachineNic) GetIdentifier() string {
return ""
}
+func (x *MachineNic) GetVendor() string {
+ if x != nil {
+ return x.Vendor
+ }
+ return ""
+}
+
+func (x *MachineNic) GetModel() string {
+ if x != nil {
+ return x.Model
+ }
+ return ""
+}
+
+func (x *MachineNic) GetSpeed() uint64 {
+ if x != nil {
+ return x.Speed
+ }
+ return 0
+}
+
func (x *MachineNic) GetNeighbors() []*MachineNic {
if x != nil {
return x.Neighbors
@@ -2652,10 +2679,10 @@ type MachineAllocationQuery struct {
FilesystemLayout *string `protobuf:"bytes,5,opt,name=filesystem_layout,json=filesystemLayout,proto3,oneof" json:"filesystem_layout,omitempty"`
// Hostname of the machine to get
Hostname *string `protobuf:"bytes,6,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"`
- // Role of this machine
- Role *MachineRole `protobuf:"varint,7,opt,name=role,proto3,enum=metalstack.api.v2.MachineRole,oneof" json:"role,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
+ // AllocationType of this machine
+ AllocationType *MachineAllocationType `protobuf:"varint,7,opt,name=allocation_type,json=allocationType,proto3,enum=metalstack.api.v2.MachineAllocationType,oneof" json:"allocation_type,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
}
func (x *MachineAllocationQuery) Reset() {
@@ -2730,11 +2757,11 @@ func (x *MachineAllocationQuery) GetHostname() string {
return ""
}
-func (x *MachineAllocationQuery) GetRole() MachineRole {
- if x != nil && x.Role != nil {
- return *x.Role
+func (x *MachineAllocationQuery) GetAllocationType() MachineAllocationType {
+ if x != nil && x.AllocationType != nil {
+ return *x.AllocationType
}
- return MachineRole_MACHINE_ROLE_UNSPECIFIED
+ return MachineAllocationType_MACHINE_ALLOCATION_TYPE_UNSPECIFIED
}
// MachineNetworkQuery network specific machine queries
@@ -3220,7 +3247,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\"\x92\b\n" +
+ "\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\xca\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\x1c\n" +
@@ -3243,13 +3270,14 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"dns_server\x18\x10 \x03(\v2\x1c.metalstack.api.v2.DNSServerB\b\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12E\n" +
"\n" +
"ntp_server\x18\x11 \x03(\v2\x1c.metalstack.api.v2.NTPServerB\b\xbaH\x05\x92\x01\x02\x10\n" +
- "R\tntpServer\x12<\n" +
- "\x04role\x18\x12 \x01(\x0e2\x1e.metalstack.api.v2.MachineRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12G\n" +
+ "R\tntpServer\x12`\n" +
+ "\x0fallocation_type\x18\x12 \x01(\x0e2(.metalstack.api.v2.MachineAllocationTypeB\b\xbaH\x05\x82\x01\x02\x10\x01H\x04R\x0eallocationType\x88\x01\x01\x12G\n" +
"\x0efirewall_rules\x18\x13 \x01(\v2 .metalstack.api.v2.FirewallRulesR\rfirewallRulesB\a\n" +
"\x05_uuidB\v\n" +
"\t_hostnameB\x14\n" +
"\x12_filesystem_layoutB\v\n" +
- "\t_userdata\"T\n" +
+ "\t_userdataB\x12\n" +
+ "\x10_allocation_type\"T\n" +
"\x1cMachineServiceCreateResponse\x124\n" +
"\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\xa4\x02\n" +
"\x1bMachineServiceUpdateRequest\x12\x1c\n" +
@@ -3296,7 +3324,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\x10MachineCondition\x12?\n" +
"\x05state\x18\x01 \x01(\x0e2\x1f.metalstack.api.v2.MachineStateB\b\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12*\n" +
"\vdescription\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\vdescription\x12 \n" +
- "\x06issuer\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\x83\a\n" +
+ "\x06issuer\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xbb\a\n" +
"\x11MachineAllocation\x12\x1c\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n" +
"\x04meta\x18\x02 \x01(\v2\x17.metalstack.api.v2.MetaR\x04meta\x12\x1c\n" +
@@ -3311,15 +3339,16 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\bhostname\x18\n" +
" \x01(\tB\a\xbaH\x04r\x02h\x01R\bhostname\x129\n" +
"\x0fssh_public_keys\x18\v \x03(\tB\x11\xbaH\x0e\x92\x01\v\x102\"\ar\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n" +
- "\buserdata\x18\f \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\buserdata\x12<\n" +
- "\x04role\x18\r \x01(\x0e2\x1e.metalstack.api.v2.MachineRoleB\b\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12G\n" +
+ "\buserdata\x18\f \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\buserdata\x12`\n" +
+ "\x0fallocation_type\x18\r \x01(\x0e2(.metalstack.api.v2.MachineAllocationTypeB\b\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x0eallocationType\x88\x01\x01\x12G\n" +
"\x0efirewall_rules\x18\x0e \x01(\v2 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12E\n" +
"\n" +
"dns_server\x18\x0f \x03(\v2\x1c.metalstack.api.v2.DNSServerB\b\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12E\n" +
"\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" +
+ "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpnB\x12\n" +
+ "\x10_allocation_type\"}\n" +
"\x18MachineAllocationNetwork\x12\x18\n" +
"\anetwork\x18\x01 \x01(\tR\anetwork\x120\n" +
"\x12no_auto_acquire_ip\x18\x02 \x01(\bH\x00R\x0fnoAutoAcquireIp\x88\x01\x01B\x15\n" +
@@ -3367,7 +3396,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\athreads\x18\x04 \x01(\rR\athreads\"L\n" +
"\bMetalGPU\x12 \n" +
"\x06vendor\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n" +
- "\x05model\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xd6\x01\n" +
+ "\x05model\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xae\x02\n" +
"\n" +
"MachineNic\x12A\n" +
"\x03mac\x18\x01 \x01(\tB/\xbaH,r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x03mac\x12\x1e\n" +
@@ -3375,8 +3404,11 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\xbaH\ar\x05\x10\x02\x18\x80\x01R\x04name\x12(\n" +
"\n" +
"identifier\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x01R\n" +
- "identifier\x12;\n" +
- "\tneighbors\x18\x04 \x03(\v2\x1d.metalstack.api.v2.MachineNicR\tneighbors\"F\n" +
+ "identifier\x12 \n" +
+ "\x06vendor\x18\x04 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n" +
+ "\x05model\x18\x05 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n" +
+ "\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n" +
+ "\tneighbors\x18\a \x03(\v2\x1d.metalstack.api.v2.MachineNicR\tneighbors\"F\n" +
"\x12MachineBlockDevice\x12\x1c\n" +
"\x04name\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x12\n" +
"\x04size\x18\x02 \x01(\x04R\x04size\"l\n" +
@@ -3439,7 +3471,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\x05_ipmiB\x06\n" +
"\x04_fruB\v\n" +
"\t_hardwareB\b\n" +
- "\x06_state\"\xb2\x03\n" +
+ "\x06_state\"\xdc\x03\n" +
"\x16MachineAllocationQuery\x12!\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12#\n" +
"\x04name\x18\x02 \x01(\tB\n" +
@@ -3450,16 +3482,16 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\x11filesystem_layout\x18\x05 \x01(\tB\n" +
"\xbaH\ar\x05\x10\x02\x18\x80\x01H\x04R\x10filesystemLayout\x88\x01\x01\x12+\n" +
"\bhostname\x18\x06 \x01(\tB\n" +
- "\xbaH\ar\x05\x10\x02\x18\x80\x01H\x05R\bhostname\x88\x01\x01\x12A\n" +
- "\x04role\x18\a \x01(\x0e2\x1e.metalstack.api.v2.MachineRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x04role\x88\x01\x01B\a\n" +
+ "\xbaH\ar\x05\x10\x02\x18\x80\x01H\x05R\bhostname\x88\x01\x01\x12`\n" +
+ "\x0fallocation_type\x18\a \x01(\x0e2(.metalstack.api.v2.MachineAllocationTypeB\b\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0eallocationType\x88\x01\x01B\a\n" +
"\x05_uuidB\a\n" +
"\x05_nameB\n" +
"\n" +
"\b_projectB\b\n" +
"\x06_imageB\x14\n" +
"\x12_filesystem_layoutB\v\n" +
- "\t_hostnameB\a\n" +
- "\x05_role\"\x9b\x03\n" +
+ "\t_hostnameB\x12\n" +
+ "\x10_allocation_type\"\x9b\x03\n" +
"\x13MachineNetworkQuery\x12\x1a\n" +
"\bnetworks\x18\x01 \x03(\tR\bnetworks\x12b\n" +
"\bprefixes\x18\x02 \x03(\tBF\xbaHC\x92\x01@\">\xba\x01;\n" +
@@ -3534,11 +3566,11 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" +
"\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12'\n" +
"\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05alive\x12%\n" +
"\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\b\x82\xb2\x19\x04dead\x12+\n" +
- "\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\v\x82\xb2\x19\aunknown*\x81\x01\n" +
- "\vMachineRole\x12\"\n" +
- "\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12%\n" +
- "\x14MACHINE_ROLE_MACHINE\x10\x01\x1a\v\x82\xb2\x19\amachine\x12'\n" +
- "\x15MACHINE_ROLE_FIREWALL\x10\x02\x1a\f\x82\xb2\x19\bfirewall2\xca\x04\n" +
+ "\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\v\x82\xb2\x19\aunknown*\xac\x01\n" +
+ "\x15MachineAllocationType\x12-\n" +
+ "#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x120\n" +
+ "\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\v\x82\xb2\x19\amachine\x122\n" +
+ " MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\f\x82\xb2\x19\bfirewall2\xca\x04\n" +
"\x0eMachineService\x12m\n" +
"\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\v\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n" +
"\x06Create\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n" +
@@ -3566,7 +3598,7 @@ var file_metalstack_api_v2_machine_proto_goTypes = []any{
(MachineState)(0), // 1: metalstack.api.v2.MachineState
(MachineProvisioningEventState)(0), // 2: metalstack.api.v2.MachineProvisioningEventState
(MachineLiveliness)(0), // 3: metalstack.api.v2.MachineLiveliness
- (MachineRole)(0), // 4: metalstack.api.v2.MachineRole
+ (MachineAllocationType)(0), // 4: metalstack.api.v2.MachineAllocationType
(*MachineServiceGetRequest)(nil), // 5: metalstack.api.v2.MachineServiceGetRequest
(*MachineServiceGetResponse)(nil), // 6: metalstack.api.v2.MachineServiceGetResponse
(*MachineServiceCreateRequest)(nil), // 7: metalstack.api.v2.MachineServiceCreateRequest
@@ -3623,7 +3655,7 @@ var file_metalstack_api_v2_machine_proto_depIdxs = []int32{
19, // 2: metalstack.api.v2.MachineServiceCreateRequest.networks:type_name -> metalstack.api.v2.MachineAllocationNetwork
43, // 3: metalstack.api.v2.MachineServiceCreateRequest.dns_server:type_name -> metalstack.api.v2.DNSServer
44, // 4: metalstack.api.v2.MachineServiceCreateRequest.ntp_server:type_name -> metalstack.api.v2.NTPServer
- 4, // 5: metalstack.api.v2.MachineServiceCreateRequest.role:type_name -> metalstack.api.v2.MachineRole
+ 4, // 5: metalstack.api.v2.MachineServiceCreateRequest.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType
20, // 6: metalstack.api.v2.MachineServiceCreateRequest.firewall_rules:type_name -> metalstack.api.v2.FirewallRules
15, // 7: metalstack.api.v2.MachineServiceCreateResponse.machine:type_name -> metalstack.api.v2.Machine
45, // 8: metalstack.api.v2.MachineServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
@@ -3647,7 +3679,7 @@ var file_metalstack_api_v2_machine_proto_depIdxs = []int32{
49, // 26: metalstack.api.v2.MachineAllocation.image:type_name -> metalstack.api.v2.Image
50, // 27: metalstack.api.v2.MachineAllocation.filesystem_layout:type_name -> metalstack.api.v2.FilesystemLayout
23, // 28: metalstack.api.v2.MachineAllocation.networks:type_name -> metalstack.api.v2.MachineNetwork
- 4, // 29: metalstack.api.v2.MachineAllocation.role:type_name -> metalstack.api.v2.MachineRole
+ 4, // 29: metalstack.api.v2.MachineAllocation.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType
20, // 30: metalstack.api.v2.MachineAllocation.firewall_rules:type_name -> metalstack.api.v2.FirewallRules
43, // 31: metalstack.api.v2.MachineAllocation.dns_server:type_name -> metalstack.api.v2.DNSServer
44, // 32: metalstack.api.v2.MachineAllocation.ntp_server:type_name -> metalstack.api.v2.NTPServer
@@ -3677,7 +3709,7 @@ var file_metalstack_api_v2_machine_proto_depIdxs = []int32{
40, // 56: metalstack.api.v2.MachineQuery.fru:type_name -> metalstack.api.v2.MachineFRUQuery
41, // 57: metalstack.api.v2.MachineQuery.hardware:type_name -> metalstack.api.v2.MachineHardwareQuery
1, // 58: metalstack.api.v2.MachineQuery.state:type_name -> metalstack.api.v2.MachineState
- 4, // 59: metalstack.api.v2.MachineAllocationQuery.role:type_name -> metalstack.api.v2.MachineRole
+ 4, // 59: metalstack.api.v2.MachineAllocationQuery.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType
5, // 60: metalstack.api.v2.MachineService.Get:input_type -> metalstack.api.v2.MachineServiceGetRequest
7, // 61: metalstack.api.v2.MachineService.Create:input_type -> metalstack.api.v2.MachineServiceCreateRequest
9, // 62: metalstack.api.v2.MachineService.Update:input_type -> metalstack.api.v2.MachineServiceUpdateRequest
@@ -3708,6 +3740,7 @@ func file_metalstack_api_v2_machine_proto_init() {
file_metalstack_api_v2_size_proto_init()
file_metalstack_api_v2_machine_proto_msgTypes[2].OneofWrappers = []any{}
file_metalstack_api_v2_machine_proto_msgTypes[4].OneofWrappers = []any{}
+ file_metalstack_api_v2_machine_proto_msgTypes[13].OneofWrappers = []any{}
file_metalstack_api_v2_machine_proto_msgTypes[14].OneofWrappers = []any{}
file_metalstack_api_v2_machine_proto_msgTypes[29].OneofWrappers = []any{}
file_metalstack_api_v2_machine_proto_msgTypes[30].OneofWrappers = []any{}
diff --git a/proto/metalstack/api/v2/machine.proto b/proto/metalstack/api/v2/machine.proto
index af86e255..e7021157 100644
--- a/proto/metalstack/api/v2/machine.proto
+++ b/proto/metalstack/api/v2/machine.proto
@@ -124,8 +124,8 @@ message MachineServiceCreateRequest {
repeated DNSServer dns_server = 16 [(buf.validate.field).repeated.max_items = 3];
// NTPServer the ntp servers used for the machine
repeated NTPServer ntp_server = 17 [(buf.validate.field).repeated.max_items = 10];
- // Role defines if this is machine or a firewall
- MachineRole role = 18 [(buf.validate.field).enum.defined_only = true];
+ // AllocationType of this machine
+ optional MachineAllocationType allocation_type = 18 [(buf.validate.field).enum.defined_only = true];
// FirewallRules to be applied if this is a firewall
FirewallRules firewall_rules = 19;
}
@@ -289,8 +289,8 @@ message MachineAllocation {
// Userdata contains instructions required to bootstrap the machine.
// AWS limits the max userdata size to 16k, lets allow twice as much
string userdata = 12 [(buf.validate.field).string = {max_len: 32768}];
- // Role defines if this is machine or a firewall
- MachineRole role = 13 [(buf.validate.field).enum.defined_only = true];
+ // AllocationType of this machine
+ optional MachineAllocationType allocation_type = 13 [(buf.validate.field).enum.defined_only = true];
// FirewallRules to be applied if this is a firewall
FirewallRules firewall_rules = 14;
// DNSServers for this machine
@@ -487,8 +487,14 @@ message MachineNic {
}];
// Identifier the unique identifier of this network interface
string identifier = 3 [(buf.validate.field).string = {max_len: 128}];
+ // Vendor of this network card
+ string vendor = 4 [(buf.validate.field).string = {max_len: 128}];
+ // Model of this network card
+ string model = 5 [(buf.validate.field).string = {max_len: 128}];
+ // Speed in bits/second of this network card
+ uint64 speed = 6;
// Neighbors the neighbors visible to this network interface
- repeated MachineNic neighbors = 4;
+ repeated MachineNic neighbors = 7;
}
// MachineBlockDevice contains details of a block device of this machine
@@ -584,14 +590,14 @@ enum MachineLiveliness {
MACHINE_LIVELINESS_UNKNOWN = 3 [(enum_string_value) = "unknown"];
}
-// MachineRole defines if this is a machine or a firewall
-enum MachineRole {
- // MACHINE_ROLE_UNSPECIFIED is unspecified
- MACHINE_ROLE_UNSPECIFIED = 0 [(enum_string_value) = ""];
- // MACHINE_ROLE_MACHINE is a machine
- MACHINE_ROLE_MACHINE = 1 [(enum_string_value) = "machine"];
- // MACHINE_ROLE_FIREWALL is a firewall
- MACHINE_ROLE_FIREWALL = 2 [(enum_string_value) = "firewall"];
+// MachineAllocationType defines if this is a machine or a firewall
+enum MachineAllocationType {
+ // MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified
+ MACHINE_ALLOCATION_TYPE_UNSPECIFIED = 0 [(enum_string_value) = ""];
+ // MACHINE_ALLOCATION_TYPE_MACHINE is a machine
+ MACHINE_ALLOCATION_TYPE_MACHINE = 1 [(enum_string_value) = "machine"];
+ // MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall
+ MACHINE_ALLOCATION_TYPE_FIREWALL = 2 [(enum_string_value) = "firewall"];
}
// MachineQuery contains fields which can be specified to list specific machines.
@@ -664,8 +670,8 @@ message MachineAllocationQuery {
min_len: 2
max_len: 128
}];
- // Role of this machine
- optional MachineRole role = 7 [(buf.validate.field).enum.defined_only = true];
+ // AllocationType of this machine
+ optional MachineAllocationType allocation_type = 7 [(buf.validate.field).enum.defined_only = true];
}
// MachineNetworkQuery network specific machine queries
diff --git a/python/metalstack/api/v2/machine_pb2.py b/python/metalstack/api/v2/machine_pb2.py
index ccb9fced..7e14191d 100644
--- a/python/metalstack/api/v2/machine_pb2.py
+++ b/python/metalstack/api/v2/machine_pb2.py
@@ -32,7 +32,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\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\"\x92\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\x1c\n\x04name\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x01R\x08hostname\x88\x01\x01\x12&\n\tpartition\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\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\x02R\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\x03R\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\x12H\n\x03ips\x18\x0e \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\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\x04role\x18\x12 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12G\n\x0e\x66irewall_rules\x18\x13 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRulesB\x07\n\x05_uuidB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xa4\x02\n\x1bMachineServiceUpdateRequest\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\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\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\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\"\xc1\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\x32\n\x04\x62ios\x18\x07 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\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\"\xa1\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\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\x83\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\x1c\n\x04name\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\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\x04role\x18\r \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\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\"\x87\x02\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\x12S\n\x02to\x18\x03 \x03(\tBC\xbaH@\x92\x01=\";\xba\x01\x38\n\x08valid_to\x12\x19to prefixes must be valid\x1a\x11this.isIpPrefix()R\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\"\xe5\x02\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\x12S\n\x02to\x18\x03 \x03(\tBC\xbaH@\x92\x01=\";\xba\x01\x38\n\x08valid_to\x12\x19to prefixes must be valid\x1a\x11this.isIpPrefix()R\x02to\x12[\n\x04\x66rom\x18\x04 \x03(\tBG\xbaHD\x92\x01\x41\"?\xba\x01<\n\nvalid_from\x12\x1b\x66rom prefixes must be valid\x1a\x11this.isIpPrefix()R\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\"\x9e\x04\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12\x62\n\x08prefixes\x18\x02 \x03(\tBF\xbaHC\x92\x01@\">\xba\x01;\n\x0evalid_prefixes\x12\x16prefixes must be valid\x1a\x11this.isIpPrefix()R\x08prefixes\x12\x91\x01\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB^\xbaH[\x92\x01X\"V\xba\x01S\n\x1avalid_destination_prefixes\x12\"destination_prefixes must be valid\x1a\x11this.isIpPrefix()R\x13\x64\x65stinationPrefixes\x12H\n\x03ips\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\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\"\xd6\x01\n\nMachineNic\x12\x41\n\x03mac\x18\x01 \x01(\tB/\xbaH,r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x03mac\x12\x1e\n\x04name\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12;\n\tneighbors\x18\x04 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\"F\n\x12MachineBlockDevice\x12\x1c\n\x04name\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"l\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\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\"q\n\x0bMachineBios\x12\"\n\x07version\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07version\x12 \n\x06vendor\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1c\n\x04\x64\x61te\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x04\x64\x61te\"\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\"z\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x14\n\x05\x65vent\x18\x02 \x01(\tR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"y\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\"\xa7\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\n\xbaH\x07r\x05\x10\x02\x18\x80\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<\n\x04ipmi\x18\x0b \x01(\x0b\x32#.metalstack.api.v2.MachineIPMIQueryH\nR\x04ipmi\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\x07\n\x05_ipmiB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_state\"\xb2\x03\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\n\xbaH\x07r\x05\x10\x02\x18\x80\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\x41\n\x04role\x18\x07 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x04role\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\x07\n\x05_role\"\x9b\x03\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12\x62\n\x08prefixes\x18\x02 \x03(\tBF\xbaHC\x92\x01@\">\xba\x01;\n\x0evalid_prefixes\x12\x16prefixes must be valid\x1a\x11this.isIpPrefix()R\x08prefixes\x12\x91\x01\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB^\xbaH[\x92\x01X\"V\xba\x01S\n\x1avalid_destination_prefixes\x12\"destination_prefixes must be valid\x1a\x11this.isIpPrefix()R\x13\x64\x65stinationPrefixes\x12H\n\x03ips\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xe6\x02\n\x0fMachineNicQuery\x12J\n\x04macs\x18\x01 \x03(\tB6\xbaH3\x92\x01\x30\x10\x64\",r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x04macs\x12%\n\x05names\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1c\n\x04vrfs\x18\x03 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x04vrfs\x12[\n\rneighbor_macs\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\x10\x64\",r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x0cneighborMacs\x12\x36\n\x0eneighbor_names\x18\x05 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\rneighborNames\x12-\n\rneighbor_vrfs\x18\x06 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0cneighborVrfs\"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\"\xfd\x01\n\x10MachineIPMIQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\x46\n\x03mac\x18\x02 \x01(\tB/\xbaH,r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$H\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*\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*\x81\x01\n\x0bMachineRole\x12\"\n\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12%\n\x14MACHINE_ROLE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\'\n\x15MACHINE_ROLE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall2\xca\x04\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\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\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\"\xca\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\x1c\n\x04name\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x01R\x08hostname\x88\x01\x01\x12&\n\tpartition\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\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\x02R\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\x03R\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\x12H\n\x03ips\x18\x0e \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\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\x01H\x04R\x0e\x61llocationType\x88\x01\x01\x12G\n\x0e\x66irewall_rules\x18\x13 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRulesB\x07\n\x05_uuidB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdataB\x12\n\x10_allocation_type\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xa4\x02\n\x1bMachineServiceUpdateRequest\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\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\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\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\"\xc1\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\x32\n\x04\x62ios\x18\x07 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\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\"\xa1\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\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xbb\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\x1c\n\x04name\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12*\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\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\x01H\x00R\x0e\x61llocationType\x88\x01\x01\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\x03vpnB\x12\n\x10_allocation_type\"}\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\"\x87\x02\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\x12S\n\x02to\x18\x03 \x03(\tBC\xbaH@\x92\x01=\";\xba\x01\x38\n\x08valid_to\x12\x19to prefixes must be valid\x1a\x11this.isIpPrefix()R\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\"\xe5\x02\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\x12S\n\x02to\x18\x03 \x03(\tBC\xbaH@\x92\x01=\";\xba\x01\x38\n\x08valid_to\x12\x19to prefixes must be valid\x1a\x11this.isIpPrefix()R\x02to\x12[\n\x04\x66rom\x18\x04 \x03(\tBG\xbaHD\x92\x01\x41\"?\xba\x01<\n\nvalid_from\x12\x1b\x66rom prefixes must be valid\x1a\x11this.isIpPrefix()R\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\"\x9e\x04\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12\x62\n\x08prefixes\x18\x02 \x03(\tBF\xbaHC\x92\x01@\">\xba\x01;\n\x0evalid_prefixes\x12\x16prefixes must be valid\x1a\x11this.isIpPrefix()R\x08prefixes\x12\x91\x01\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB^\xbaH[\x92\x01X\"V\xba\x01S\n\x1avalid_destination_prefixes\x12\"destination_prefixes must be valid\x1a\x11this.isIpPrefix()R\x13\x64\x65stinationPrefixes\x12H\n\x03ips\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\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\"\xae\x02\n\nMachineNic\x12\x41\n\x03mac\x18\x01 \x01(\tB/\xbaH,r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x03mac\x12\x1e\n\x04name\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\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\"F\n\x12MachineBlockDevice\x12\x1c\n\x04name\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"l\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\x08\xbaH\x05r\x03\x18\x80\x02R\x0b\x64\x65scription\"q\n\x0bMachineBios\x12\"\n\x07version\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07version\x12 \n\x06vendor\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1c\n\x04\x64\x61te\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x04\x64\x61te\"\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\"z\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x14\n\x05\x65vent\x18\x02 \x01(\tR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"y\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\"\xa7\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\n\xbaH\x07r\x05\x10\x02\x18\x80\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<\n\x04ipmi\x18\x0b \x01(\x0b\x32#.metalstack.api.v2.MachineIPMIQueryH\nR\x04ipmi\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\x07\n\x05_ipmiB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_state\"\xdc\x03\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\n\xbaH\x07r\x05\x10\x02\x18\x80\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\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_type\"\x9b\x03\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12\x62\n\x08prefixes\x18\x02 \x03(\tBF\xbaHC\x92\x01@\">\xba\x01;\n\x0evalid_prefixes\x12\x16prefixes must be valid\x1a\x11this.isIpPrefix()R\x08prefixes\x12\x91\x01\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB^\xbaH[\x92\x01X\"V\xba\x01S\n\x1avalid_destination_prefixes\x12\"destination_prefixes must be valid\x1a\x11this.isIpPrefix()R\x13\x64\x65stinationPrefixes\x12H\n\x03ips\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\".\xba\x01+\n\tvalid_ips\x12\x11ips must be valid\x1a\x0bthis.isIp()R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xe6\x02\n\x0fMachineNicQuery\x12J\n\x04macs\x18\x01 \x03(\tB6\xbaH3\x92\x01\x30\x10\x64\",r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x04macs\x12%\n\x05names\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1c\n\x04vrfs\x18\x03 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x04vrfs\x12[\n\rneighbor_macs\x18\x04 \x03(\tB6\xbaH3\x92\x01\x30\x10\x64\",r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$R\x0cneighborMacs\x12\x36\n\x0eneighbor_names\x18\x05 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\rneighborNames\x12-\n\rneighbor_vrfs\x18\x06 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0cneighborVrfs\"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\"\xfd\x01\n\x10MachineIPMIQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\x46\n\x03mac\x18\x02 \x01(\tB/\xbaH,r*2(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$H\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*\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\x66irewall2\xca\x04\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\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)
@@ -66,12 +66,12 @@
_globals['_MACHINELIVELINESS'].values_by_name["MACHINE_LIVELINESS_DEAD"]._serialized_options = b'\202\262\031\004dead'
_globals['_MACHINELIVELINESS'].values_by_name["MACHINE_LIVELINESS_UNKNOWN"]._loaded_options = None
_globals['_MACHINELIVELINESS'].values_by_name["MACHINE_LIVELINESS_UNKNOWN"]._serialized_options = b'\202\262\031\007unknown'
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_UNSPECIFIED"]._loaded_options = None
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_UNSPECIFIED"]._serialized_options = b'\202\262\031\000'
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_MACHINE"]._loaded_options = None
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_MACHINE"]._serialized_options = b'\202\262\031\007machine'
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_FIREWALL"]._loaded_options = None
- _globals['_MACHINEROLE'].values_by_name["MACHINE_ROLE_FIREWALL"]._serialized_options = b'\202\262\031\010firewall'
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_UNSPECIFIED"]._loaded_options = None
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_UNSPECIFIED"]._serialized_options = b'\202\262\031\000'
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_MACHINE"]._loaded_options = None
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_MACHINE"]._serialized_options = b'\202\262\031\007machine'
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_FIREWALL"]._loaded_options = None
+ _globals['_MACHINEALLOCATIONTYPE'].values_by_name["MACHINE_ALLOCATION_TYPE_FIREWALL"]._serialized_options = b'\202\262\031\010firewall'
_globals['_MACHINESERVICEGETREQUEST'].fields_by_name['uuid']._loaded_options = None
_globals['_MACHINESERVICEGETREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001'
_globals['_MACHINESERVICEGETREQUEST'].fields_by_name['project']._loaded_options = None
@@ -102,8 +102,8 @@
_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
_globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['ntp_server']._serialized_options = b'\272H\005\222\001\002\020\n'
- _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['role']._loaded_options = None
- _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001'
+ _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['allocation_type']._loaded_options = None
+ _globals['_MACHINESERVICECREATEREQUEST'].fields_by_name['allocation_type']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_MACHINESERVICEUPDATEREQUEST'].fields_by_name['uuid']._loaded_options = None
_globals['_MACHINESERVICEUPDATEREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001'
_globals['_MACHINESERVICEUPDATEREQUEST'].fields_by_name['project']._loaded_options = None
@@ -146,8 +146,8 @@
_globals['_MACHINEALLOCATION'].fields_by_name['ssh_public_keys']._serialized_options = b'\272H\016\222\001\013\0202\"\007r\005\020\001\030\200@'
_globals['_MACHINEALLOCATION'].fields_by_name['userdata']._loaded_options = None
_globals['_MACHINEALLOCATION'].fields_by_name['userdata']._serialized_options = b'\272H\006r\004\030\200\200\002'
- _globals['_MACHINEALLOCATION'].fields_by_name['role']._loaded_options = None
- _globals['_MACHINEALLOCATION'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001'
+ _globals['_MACHINEALLOCATION'].fields_by_name['allocation_type']._loaded_options = None
+ _globals['_MACHINEALLOCATION'].fields_by_name['allocation_type']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_MACHINEALLOCATION'].fields_by_name['dns_server']._loaded_options = None
_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
@@ -194,6 +194,10 @@
_globals['_MACHINENIC'].fields_by_name['name']._serialized_options = b'\272H\007r\005\020\002\030\200\001'
_globals['_MACHINENIC'].fields_by_name['identifier']._loaded_options = None
_globals['_MACHINENIC'].fields_by_name['identifier']._serialized_options = b'\272H\005r\003\030\200\001'
+ _globals['_MACHINENIC'].fields_by_name['vendor']._loaded_options = None
+ _globals['_MACHINENIC'].fields_by_name['vendor']._serialized_options = b'\272H\005r\003\030\200\001'
+ _globals['_MACHINENIC'].fields_by_name['model']._loaded_options = None
+ _globals['_MACHINENIC'].fields_by_name['model']._serialized_options = b'\272H\005r\003\030\200\001'
_globals['_MACHINEBLOCKDEVICE'].fields_by_name['name']._loaded_options = None
_globals['_MACHINEBLOCKDEVICE'].fields_by_name['name']._serialized_options = b'\272H\005r\003\030\200\001'
_globals['_MACHINECHASSISIDENTIFYLEDSTATE'].fields_by_name['value']._loaded_options = None
@@ -230,8 +234,8 @@
_globals['_MACHINEALLOCATIONQUERY'].fields_by_name['filesystem_layout']._serialized_options = b'\272H\007r\005\020\002\030\200\001'
_globals['_MACHINEALLOCATIONQUERY'].fields_by_name['hostname']._loaded_options = None
_globals['_MACHINEALLOCATIONQUERY'].fields_by_name['hostname']._serialized_options = b'\272H\007r\005\020\002\030\200\001'
- _globals['_MACHINEALLOCATIONQUERY'].fields_by_name['role']._loaded_options = None
- _globals['_MACHINEALLOCATIONQUERY'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001'
+ _globals['_MACHINEALLOCATIONQUERY'].fields_by_name['allocation_type']._loaded_options = None
+ _globals['_MACHINEALLOCATIONQUERY'].fields_by_name['allocation_type']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_MACHINENETWORKQUERY'].fields_by_name['prefixes']._loaded_options = None
_globals['_MACHINENETWORKQUERY'].fields_by_name['prefixes']._serialized_options = b'\272HC\222\001@\">\272\001;\n\016valid_prefixes\022\026prefixes must be valid\032\021this.isIpPrefix()'
_globals['_MACHINENETWORKQUERY'].fields_by_name['destination_prefixes']._loaded_options = None
@@ -288,90 +292,90 @@
_globals['_MACHINESERVICE'].methods_by_name['List']._serialized_options = b'\312\363\030\003\001\002\003\340\363\030\002'
_globals['_MACHINESERVICE'].methods_by_name['Delete']._loaded_options = None
_globals['_MACHINESERVICE'].methods_by_name['Delete']._serialized_options = b'\312\363\030\002\001\002'
- _globals['_IPPROTOCOL']._serialized_start=10598
- _globals['_IPPROTOCOL']._serialized_end=10699
- _globals['_MACHINESTATE']._serialized_start=10702
- _globals['_MACHINESTATE']._serialized_end=10877
- _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=10880
- _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=11103
- _globals['_MACHINELIVELINESS']._serialized_start=11106
- _globals['_MACHINELIVELINESS']._serialized_end=11292
- _globals['_MACHINEROLE']._serialized_start=11295
- _globals['_MACHINEROLE']._serialized_end=11424
+ _globals['_IPPROTOCOL']._serialized_start=10840
+ _globals['_IPPROTOCOL']._serialized_end=10941
+ _globals['_MACHINESTATE']._serialized_start=10944
+ _globals['_MACHINESTATE']._serialized_end=11119
+ _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=11122
+ _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=11345
+ _globals['_MACHINELIVELINESS']._serialized_start=11348
+ _globals['_MACHINELIVELINESS']._serialized_end=11534
+ _globals['_MACHINEALLOCATIONTYPE']._serialized_start=11537
+ _globals['_MACHINEALLOCATIONTYPE']._serialized_end=11709
_globals['_MACHINESERVICEGETREQUEST']._serialized_start=313
_globals['_MACHINESERVICEGETREQUEST']._serialized_end=405
_globals['_MACHINESERVICEGETRESPONSE']._serialized_start=407
_globals['_MACHINESERVICEGETRESPONSE']._serialized_end=488
_globals['_MACHINESERVICECREATEREQUEST']._serialized_start=491
- _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1533
- _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1535
- _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1619
- _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1622
- _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=1914
- _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=1916
- _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2000
- _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2002
- _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2120
- _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2122
- _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2206
- _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2208
- _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2303
- _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2305
- _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2389
- _globals['_MACHINE']._serialized_start=2392
- _globals['_MACHINE']._serialized_end=2969
- _globals['_MACHINESTATUS']._serialized_start=2972
- _globals['_MACHINESTATUS']._serialized_end=3264
- _globals['_MACHINECONDITION']._serialized_start=3267
- _globals['_MACHINECONDITION']._serialized_end=3428
- _globals['_MACHINEALLOCATION']._serialized_start=3431
- _globals['_MACHINEALLOCATION']._serialized_end=4330
- _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=4332
- _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=4457
- _globals['_FIREWALLRULES']._serialized_start=4460
- _globals['_FIREWALLRULES']._serialized_end=4604
- _globals['_FIREWALLEGRESSRULE']._serialized_start=4607
- _globals['_FIREWALLEGRESSRULE']._serialized_end=4870
- _globals['_FIREWALLINGRESSRULE']._serialized_start=4873
- _globals['_FIREWALLINGRESSRULE']._serialized_end=5230
- _globals['_MACHINENETWORK']._serialized_start=5233
- _globals['_MACHINENETWORK']._serialized_end=5775
- _globals['_MACHINEHARDWARE']._serialized_start=5778
- _globals['_MACHINEHARDWARE']._serialized_end=6029
- _globals['_METALCPU']._serialized_start=6031
- _globals['_METALCPU']._serialized_end=6155
- _globals['_METALGPU']._serialized_start=6157
- _globals['_METALGPU']._serialized_end=6233
- _globals['_MACHINENIC']._serialized_start=6236
- _globals['_MACHINENIC']._serialized_end=6450
- _globals['_MACHINEBLOCKDEVICE']._serialized_start=6452
- _globals['_MACHINEBLOCKDEVICE']._serialized_end=6522
- _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=6524
- _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=6632
- _globals['_MACHINEBIOS']._serialized_start=6634
- _globals['_MACHINEBIOS']._serialized_end=6747
- _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=6750
- _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=7089
- _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=7091
- _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=7213
- _globals['_MACHINEVPN']._serialized_start=7215
- _globals['_MACHINEVPN']._serialized_end=7336
- _globals['_MACHINEQUERY']._serialized_start=7339
- _globals['_MACHINEQUERY']._serialized_end=8274
- _globals['_MACHINEALLOCATIONQUERY']._serialized_start=8277
- _globals['_MACHINEALLOCATIONQUERY']._serialized_end=8711
- _globals['_MACHINENETWORKQUERY']._serialized_start=8714
- _globals['_MACHINENETWORKQUERY']._serialized_end=9125
- _globals['_MACHINENICQUERY']._serialized_start=9128
- _globals['_MACHINENICQUERY']._serialized_end=9486
- _globals['_MACHINEDISKQUERY']._serialized_start=9488
- _globals['_MACHINEDISKQUERY']._serialized_end=9577
- _globals['_MACHINEIPMIQUERY']._serialized_start=9580
- _globals['_MACHINEIPMIQUERY']._serialized_end=9833
- _globals['_MACHINEFRUQUERY']._serialized_start=9836
- _globals['_MACHINEFRUQUERY']._serialized_end=10484
- _globals['_MACHINEHARDWAREQUERY']._serialized_start=10486
- _globals['_MACHINEHARDWAREQUERY']._serialized_end=10596
- _globals['_MACHINESERVICE']._serialized_start=11427
- _globals['_MACHINESERVICE']._serialized_end=12013
+ _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1589
+ _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1591
+ _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1675
+ _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1678
+ _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=1970
+ _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=1972
+ _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2056
+ _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2058
+ _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2176
+ _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2178
+ _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2262
+ _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2264
+ _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2359
+ _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2361
+ _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2445
+ _globals['_MACHINE']._serialized_start=2448
+ _globals['_MACHINE']._serialized_end=3025
+ _globals['_MACHINESTATUS']._serialized_start=3028
+ _globals['_MACHINESTATUS']._serialized_end=3320
+ _globals['_MACHINECONDITION']._serialized_start=3323
+ _globals['_MACHINECONDITION']._serialized_end=3484
+ _globals['_MACHINEALLOCATION']._serialized_start=3487
+ _globals['_MACHINEALLOCATION']._serialized_end=4442
+ _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=4444
+ _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=4569
+ _globals['_FIREWALLRULES']._serialized_start=4572
+ _globals['_FIREWALLRULES']._serialized_end=4716
+ _globals['_FIREWALLEGRESSRULE']._serialized_start=4719
+ _globals['_FIREWALLEGRESSRULE']._serialized_end=4982
+ _globals['_FIREWALLINGRESSRULE']._serialized_start=4985
+ _globals['_FIREWALLINGRESSRULE']._serialized_end=5342
+ _globals['_MACHINENETWORK']._serialized_start=5345
+ _globals['_MACHINENETWORK']._serialized_end=5887
+ _globals['_MACHINEHARDWARE']._serialized_start=5890
+ _globals['_MACHINEHARDWARE']._serialized_end=6141
+ _globals['_METALCPU']._serialized_start=6143
+ _globals['_METALCPU']._serialized_end=6267
+ _globals['_METALGPU']._serialized_start=6269
+ _globals['_METALGPU']._serialized_end=6345
+ _globals['_MACHINENIC']._serialized_start=6348
+ _globals['_MACHINENIC']._serialized_end=6650
+ _globals['_MACHINEBLOCKDEVICE']._serialized_start=6652
+ _globals['_MACHINEBLOCKDEVICE']._serialized_end=6722
+ _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=6724
+ _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=6832
+ _globals['_MACHINEBIOS']._serialized_start=6834
+ _globals['_MACHINEBIOS']._serialized_end=6947
+ _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=6950
+ _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=7289
+ _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=7291
+ _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=7413
+ _globals['_MACHINEVPN']._serialized_start=7415
+ _globals['_MACHINEVPN']._serialized_end=7536
+ _globals['_MACHINEQUERY']._serialized_start=7539
+ _globals['_MACHINEQUERY']._serialized_end=8474
+ _globals['_MACHINEALLOCATIONQUERY']._serialized_start=8477
+ _globals['_MACHINEALLOCATIONQUERY']._serialized_end=8953
+ _globals['_MACHINENETWORKQUERY']._serialized_start=8956
+ _globals['_MACHINENETWORKQUERY']._serialized_end=9367
+ _globals['_MACHINENICQUERY']._serialized_start=9370
+ _globals['_MACHINENICQUERY']._serialized_end=9728
+ _globals['_MACHINEDISKQUERY']._serialized_start=9730
+ _globals['_MACHINEDISKQUERY']._serialized_end=9819
+ _globals['_MACHINEIPMIQUERY']._serialized_start=9822
+ _globals['_MACHINEIPMIQUERY']._serialized_end=10075
+ _globals['_MACHINEFRUQUERY']._serialized_start=10078
+ _globals['_MACHINEFRUQUERY']._serialized_end=10726
+ _globals['_MACHINEHARDWAREQUERY']._serialized_start=10728
+ _globals['_MACHINEHARDWAREQUERY']._serialized_end=10838
+ _globals['_MACHINESERVICE']._serialized_start=11712
+ _globals['_MACHINESERVICE']._serialized_end=12298
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/machine_pb2.pyi b/python/metalstack/api/v2/machine_pb2.pyi
index b7fe8bbb..268511f8 100644
--- a/python/metalstack/api/v2/machine_pb2.pyi
+++ b/python/metalstack/api/v2/machine_pb2.pyi
@@ -43,11 +43,11 @@ class MachineLiveliness(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
MACHINE_LIVELINESS_DEAD: _ClassVar[MachineLiveliness]
MACHINE_LIVELINESS_UNKNOWN: _ClassVar[MachineLiveliness]
-class MachineRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+class MachineAllocationType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = ()
- MACHINE_ROLE_UNSPECIFIED: _ClassVar[MachineRole]
- MACHINE_ROLE_MACHINE: _ClassVar[MachineRole]
- MACHINE_ROLE_FIREWALL: _ClassVar[MachineRole]
+ MACHINE_ALLOCATION_TYPE_UNSPECIFIED: _ClassVar[MachineAllocationType]
+ MACHINE_ALLOCATION_TYPE_MACHINE: _ClassVar[MachineAllocationType]
+ MACHINE_ALLOCATION_TYPE_FIREWALL: _ClassVar[MachineAllocationType]
IP_PROTOCOL_UNSPECIFIED: IPProtocol
IP_PROTOCOL_TCP: IPProtocol
IP_PROTOCOL_UDP: IPProtocol
@@ -62,9 +62,9 @@ MACHINE_LIVELINESS_UNSPECIFIED: MachineLiveliness
MACHINE_LIVELINESS_ALIVE: MachineLiveliness
MACHINE_LIVELINESS_DEAD: MachineLiveliness
MACHINE_LIVELINESS_UNKNOWN: MachineLiveliness
-MACHINE_ROLE_UNSPECIFIED: MachineRole
-MACHINE_ROLE_MACHINE: MachineRole
-MACHINE_ROLE_FIREWALL: MachineRole
+MACHINE_ALLOCATION_TYPE_UNSPECIFIED: MachineAllocationType
+MACHINE_ALLOCATION_TYPE_MACHINE: MachineAllocationType
+MACHINE_ALLOCATION_TYPE_FIREWALL: MachineAllocationType
class MachineServiceGetRequest(_message.Message):
__slots__ = ("uuid", "project")
@@ -81,7 +81,7 @@ class MachineServiceGetResponse(_message.Message):
def __init__(self, machine: _Optional[_Union[Machine, _Mapping]] = ...) -> None: ...
class MachineServiceCreateRequest(_message.Message):
- __slots__ = ("project", "uuid", "name", "description", "hostname", "partition", "size", "image", "filesystem_layout", "ssh_public_keys", "userdata", "labels", "networks", "ips", "placement_tags", "dns_server", "ntp_server", "role", "firewall_rules")
+ __slots__ = ("project", "uuid", "name", "description", "hostname", "partition", "size", "image", "filesystem_layout", "ssh_public_keys", "userdata", "labels", "networks", "ips", "placement_tags", "dns_server", "ntp_server", "allocation_type", "firewall_rules")
PROJECT_FIELD_NUMBER: _ClassVar[int]
UUID_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
@@ -99,7 +99,7 @@ class MachineServiceCreateRequest(_message.Message):
PLACEMENT_TAGS_FIELD_NUMBER: _ClassVar[int]
DNS_SERVER_FIELD_NUMBER: _ClassVar[int]
NTP_SERVER_FIELD_NUMBER: _ClassVar[int]
- ROLE_FIELD_NUMBER: _ClassVar[int]
+ ALLOCATION_TYPE_FIELD_NUMBER: _ClassVar[int]
FIREWALL_RULES_FIELD_NUMBER: _ClassVar[int]
project: str
uuid: str
@@ -118,9 +118,9 @@ class MachineServiceCreateRequest(_message.Message):
placement_tags: _containers.RepeatedScalarFieldContainer[str]
dns_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.DNSServer]
ntp_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.NTPServer]
- role: MachineRole
+ allocation_type: MachineAllocationType
firewall_rules: FirewallRules
- 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]]] = ..., role: _Optional[_Union[MachineRole, str]] = ..., firewall_rules: _Optional[_Union[FirewallRules, _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[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_rules: _Optional[_Union[FirewallRules, _Mapping]] = ...) -> None: ...
class MachineServiceCreateResponse(_message.Message):
__slots__ = ("machine",)
@@ -223,7 +223,7 @@ class MachineCondition(_message.Message):
def __init__(self, state: _Optional[_Union[MachineState, str]] = ..., description: _Optional[str] = ..., issuer: _Optional[str] = ...) -> None: ...
class MachineAllocation(_message.Message):
- __slots__ = ("uuid", "meta", "name", "description", "created_by", "project", "image", "filesystem_layout", "networks", "hostname", "ssh_public_keys", "userdata", "role", "firewall_rules", "dns_server", "ntp_server", "vpn")
+ __slots__ = ("uuid", "meta", "name", "description", "created_by", "project", "image", "filesystem_layout", "networks", "hostname", "ssh_public_keys", "userdata", "allocation_type", "firewall_rules", "dns_server", "ntp_server", "vpn")
UUID_FIELD_NUMBER: _ClassVar[int]
META_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
@@ -236,7 +236,7 @@ class MachineAllocation(_message.Message):
HOSTNAME_FIELD_NUMBER: _ClassVar[int]
SSH_PUBLIC_KEYS_FIELD_NUMBER: _ClassVar[int]
USERDATA_FIELD_NUMBER: _ClassVar[int]
- ROLE_FIELD_NUMBER: _ClassVar[int]
+ ALLOCATION_TYPE_FIELD_NUMBER: _ClassVar[int]
FIREWALL_RULES_FIELD_NUMBER: _ClassVar[int]
DNS_SERVER_FIELD_NUMBER: _ClassVar[int]
NTP_SERVER_FIELD_NUMBER: _ClassVar[int]
@@ -253,12 +253,12 @@ class MachineAllocation(_message.Message):
hostname: str
ssh_public_keys: _containers.RepeatedScalarFieldContainer[str]
userdata: str
- role: MachineRole
+ allocation_type: MachineAllocationType
firewall_rules: FirewallRules
dns_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.DNSServer]
ntp_server: _containers.RepeatedCompositeFieldContainer[_partition_pb2.NTPServer]
vpn: MachineVPN
- def __init__(self, uuid: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., created_by: _Optional[str] = ..., project: _Optional[str] = ..., image: _Optional[_Union[_image_pb2.Image, _Mapping]] = ..., filesystem_layout: _Optional[_Union[_filesystem_pb2.FilesystemLayout, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineNetwork, _Mapping]]] = ..., hostname: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., role: _Optional[_Union[MachineRole, str]] = ..., firewall_rules: _Optional[_Union[FirewallRules, _Mapping]] = ..., dns_server: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_server: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., vpn: _Optional[_Union[MachineVPN, _Mapping]] = ...) -> None: ...
+ def __init__(self, uuid: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., created_by: _Optional[str] = ..., project: _Optional[str] = ..., image: _Optional[_Union[_image_pb2.Image, _Mapping]] = ..., filesystem_layout: _Optional[_Union[_filesystem_pb2.FilesystemLayout, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineNetwork, _Mapping]]] = ..., hostname: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ..., firewall_rules: _Optional[_Union[FirewallRules, _Mapping]] = ..., dns_server: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_server: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., vpn: _Optional[_Union[MachineVPN, _Mapping]] = ...) -> None: ...
class MachineAllocationNetwork(_message.Message):
__slots__ = ("network", "no_auto_acquire_ip")
@@ -356,16 +356,22 @@ class MetalGPU(_message.Message):
def __init__(self, vendor: _Optional[str] = ..., model: _Optional[str] = ...) -> None: ...
class MachineNic(_message.Message):
- __slots__ = ("mac", "name", "identifier", "neighbors")
+ __slots__ = ("mac", "name", "identifier", "vendor", "model", "speed", "neighbors")
MAC_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
+ VENDOR_FIELD_NUMBER: _ClassVar[int]
+ MODEL_FIELD_NUMBER: _ClassVar[int]
+ SPEED_FIELD_NUMBER: _ClassVar[int]
NEIGHBORS_FIELD_NUMBER: _ClassVar[int]
mac: str
name: str
identifier: str
+ vendor: str
+ model: str
+ speed: int
neighbors: _containers.RepeatedCompositeFieldContainer[MachineNic]
- def __init__(self, mac: _Optional[str] = ..., name: _Optional[str] = ..., identifier: _Optional[str] = ..., neighbors: _Optional[_Iterable[_Union[MachineNic, _Mapping]]] = ...) -> None: ...
+ def __init__(self, mac: _Optional[str] = ..., name: _Optional[str] = ..., identifier: _Optional[str] = ..., vendor: _Optional[str] = ..., model: _Optional[str] = ..., speed: _Optional[int] = ..., neighbors: _Optional[_Iterable[_Union[MachineNic, _Mapping]]] = ...) -> None: ...
class MachineBlockDevice(_message.Message):
__slots__ = ("name", "size")
@@ -458,22 +464,22 @@ class MachineQuery(_message.Message):
def __init__(self, uuid: _Optional[str] = ..., name: _Optional[str] = ..., partition: _Optional[str] = ..., size: _Optional[str] = ..., rack: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., allocation: _Optional[_Union[MachineAllocationQuery, _Mapping]] = ..., network: _Optional[_Union[MachineNetworkQuery, _Mapping]] = ..., nic: _Optional[_Union[MachineNicQuery, _Mapping]] = ..., disk: _Optional[_Union[MachineDiskQuery, _Mapping]] = ..., ipmi: _Optional[_Union[MachineIPMIQuery, _Mapping]] = ..., fru: _Optional[_Union[MachineFRUQuery, _Mapping]] = ..., hardware: _Optional[_Union[MachineHardwareQuery, _Mapping]] = ..., state: _Optional[_Union[MachineState, str]] = ...) -> None: ...
class MachineAllocationQuery(_message.Message):
- __slots__ = ("uuid", "name", "project", "image", "filesystem_layout", "hostname", "role")
+ __slots__ = ("uuid", "name", "project", "image", "filesystem_layout", "hostname", "allocation_type")
UUID_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
PROJECT_FIELD_NUMBER: _ClassVar[int]
IMAGE_FIELD_NUMBER: _ClassVar[int]
FILESYSTEM_LAYOUT_FIELD_NUMBER: _ClassVar[int]
HOSTNAME_FIELD_NUMBER: _ClassVar[int]
- ROLE_FIELD_NUMBER: _ClassVar[int]
+ ALLOCATION_TYPE_FIELD_NUMBER: _ClassVar[int]
uuid: str
name: str
project: str
image: str
filesystem_layout: str
hostname: str
- role: MachineRole
- def __init__(self, uuid: _Optional[str] = ..., name: _Optional[str] = ..., project: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., hostname: _Optional[str] = ..., role: _Optional[_Union[MachineRole, str]] = ...) -> None: ...
+ allocation_type: MachineAllocationType
+ def __init__(self, uuid: _Optional[str] = ..., name: _Optional[str] = ..., project: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., hostname: _Optional[str] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ...) -> None: ...
class MachineNetworkQuery(_message.Message):
__slots__ = ("networks", "prefixes", "destination_prefixes", "ips", "vrfs", "asns")