From 7d0a002d8a868bc238e8b84ff96b66fe6d8e5f1b Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 24 Mar 2026 16:13:49 +0100 Subject: [PATCH 1/2] Refinements for machine create --- doc/index.html | 2 +- go/metalstack/api/v2/machine.pb.go | 14 +-- js/metalstack/api/v2/machine_pb.d.ts | 4 +- js/metalstack/api/v2/machine_pb.js | 2 +- js/metalstack/api/v2/machine_pb.ts | 6 +- proto/metalstack/api/v2/machine.proto | 2 +- python/metalstack/api/v2/machine_pb2.py | 150 ++++++++++++------------ 7 files changed, 89 insertions(+), 91 deletions(-) diff --git a/doc/index.html b/doc/index.html index c77b6248..3e163bc4 100644 --- a/doc/index.html +++ b/doc/index.html @@ -9815,7 +9815,7 @@

MachineAllocationNetwork

no_auto_acquire_ip bool - optional +

NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. By default one ip address is acquired per network for the machine

diff --git a/go/metalstack/api/v2/machine.pb.go b/go/metalstack/api/v2/machine.pb.go index dbb9a9fb..344e8354 100644 --- a/go/metalstack/api/v2/machine.pb.go +++ b/go/metalstack/api/v2/machine.pb.go @@ -1883,7 +1883,7 @@ type MachineAllocationNetwork struct { Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` // NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. // By default one ip address is acquired per network for the machine - NoAutoAcquireIp *bool `protobuf:"varint,2,opt,name=no_auto_acquire_ip,json=noAutoAcquireIp,proto3,oneof" json:"no_auto_acquire_ip,omitempty"` + NoAutoAcquireIp bool `protobuf:"varint,2,opt,name=no_auto_acquire_ip,json=noAutoAcquireIp,proto3" json:"no_auto_acquire_ip,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1926,8 +1926,8 @@ func (x *MachineAllocationNetwork) GetNetwork() string { } func (x *MachineAllocationNetwork) GetNoAutoAcquireIp() bool { - if x != nil && x.NoAutoAcquireIp != nil { - return *x.NoAutoAcquireIp + if x != nil { + return x.NoAutoAcquireIp } return false } @@ -4353,11 +4353,10 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + "\vntp_servers\x18\x10 \x03(\v2\x1c.metalstack.api.v2.NTPServerB\b\xbaH\x05\x92\x01\x02\x10\n" + "R\n" + "ntpServers\x12/\n" + - "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8a\x01\n" + + "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"n\n" + "\x18MachineAllocationNetwork\x12%\n" + - "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x120\n" + - "\x12no_auto_acquire_ip\x18\x02 \x01(\bH\x00R\x0fnoAutoAcquireIp\x88\x01\x01B\x15\n" + - "\x13_no_auto_acquire_ip\"i\n" + + "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12+\n" + + "\x12no_auto_acquire_ip\x18\x02 \x01(\bR\x0fnoAutoAcquireIp\"i\n" + "\x13MachineAllocationIp\x12\x17\n" + "\x02ip\x18\x01 \x01(\tB\a\xbaH\x04r\x02p\x01R\x02ip\x12+\n" + "\tnamespace\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01B\f\n" + @@ -4862,7 +4861,6 @@ 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[5].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[19].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[20].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[24].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[34].OneofWrappers = []any{} diff --git a/js/metalstack/api/v2/machine_pb.d.ts b/js/metalstack/api/v2/machine_pb.d.ts index 64d179ae..74bcc7d4 100644 --- a/js/metalstack/api/v2/machine_pb.d.ts +++ b/js/metalstack/api/v2/machine_pb.d.ts @@ -722,9 +722,9 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat * NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. * By default one ip address is acquired per network for the machine * - * @generated from field: optional bool no_auto_acquire_ip = 2; + * @generated from field: bool no_auto_acquire_ip = 2; */ - noAutoAcquireIp?: boolean; + noAutoAcquireIp: boolean; }; /** * Describes the message metalstack.api.v2.MachineAllocationNetwork. diff --git a/js/metalstack/api/v2/machine_pb.js b/js/metalstack/api/v2/machine_pb.js index 9b4fcfd6..647d338d 100644 --- a/js/metalstack/api/v2/machine_pb.js +++ b/js/metalstack/api/v2/machine_pb.js @@ -14,7 +14,7 @@ import { file_metalstack_api_v2_size } from "./size_pb"; /** * Describes the file metalstack/api/v2/machine.proto. */ -export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOInAKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIfChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAhIAIgBAUIVChNfbm9fYXV0b19hY3F1aXJlX2lwIloKE01hY2hpbmVBbGxvY2F0aW9uSXASEwoCaXAYASABKAlCB7pIBHICcAESIAoJbmFtZXNwYWNlGAIgASgJQgi6SAVyA7ABAUgAiAEBQgwKCl9uYW1lc3BhY2UifwoNRmlyZXdhbGxSdWxlcxI1CgZlZ3Jlc3MYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbEVncmVzc1J1bGUSNwoHaW5ncmVzcxgCIAMoCzImLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsSW5ncmVzc1J1bGUisgEKEkZpcmV3YWxsRWdyZXNzUnVsZRI5Cghwcm90b2NvbBgBIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLklQUHJvdG9jb2xCCLpIBYIBAhABEh0KBXBvcnRzGAIgAygNQg66SAuSAQgiBioEGPz/AxIYCgJ0bxgDIAMoCUIMukgJkgEGuKSzsQIBEigKB2NvbW1lbnQYBCABKAlCF7pIFNgBAXIPGGQyC15bYS16XyAtXSokIs8BChNGaXJld2FsbEluZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESGgoEZnJvbRgEIAMoCUIMukgJkgEGuKSzsQIBEigKB2NvbW1lbnQYBSABKAlCF7pIFNgBAXIPGGQyC15bYS16XyAtXSokIsYCCg5NYWNoaW5lTmV0d29yaxIPCgduZXR3b3JrGAEgASgJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARI+CgxuZXR3b3JrX3R5cGUYBSABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYBiABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARILCgN2cmYYByABKAQSCwoDYXNuGAggASgNEh4KB3Byb2plY3QYCSABKAlCCLpIBXIDsAEBSACIAQFCCgoIX3Byb2plY3Qi2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEiugcKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBARIUCgd3YWl0aW5nGA8gASgISA6IAQESGQoMcHJlYWxsb2NhdGVkGBAgASgISA+IAQESGgoNbm90X2FsbG9jYXRlZBgRIAEoCEgQiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgYKBF9ibWNCBgoEX2ZydUILCglfaGFyZHdhcmVCCAoGX3N0YXRlQgoKCF93YWl0aW5nQg8KDV9wcmVhbGxvY2F0ZWRCEAoOX25vdF9hbGxvY2F0ZWQiiQQKFk1hY2hpbmVBbGxvY2F0aW9uUXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEh4KB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBSAKIAQESHgoFaW1hZ2UYBCABKAlCCrpIB3IFEAIYgAFIA4gBARIqChFmaWxlc3lzdGVtX2xheW91dBgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEiEKCGhvc3RuYW1lGAYgASgJQgq6SAdyBRACGIABSAWIAQESUAoPYWxsb2NhdGlvbl90eXBlGAcgASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQAUgGiAEBEi4KBmxhYmVscxgIIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gHiAEBEi8KA3ZwbhgJIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE5ICIgBAUIHCgVfdXVpZEIHCgVfbmFtZUIKCghfcHJvamVjdEIICgZfaW1hZ2VCFAoSX2ZpbGVzeXN0ZW1fbGF5b3V0QgsKCV9ob3N0bmFtZUISChBfYWxsb2NhdGlvbl90eXBlQgkKB19sYWJlbHNCBgoEX3ZwbiKqAQoTTWFjaGluZU5ldHdvcmtRdWVyeRIQCghuZXR3b3JrcxgBIAMoCRIeCghwcmVmaXhlcxgCIAMoCUIMukgJkgEGuKSzsQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAMgAygJQgy6SAmSAQa4pLOxAgESGQoDaXBzGAQgAygJQgy6SAmSAQbApLOxAgESDAoEdnJmcxgFIAMoBBIMCgRhc25zGAYgAygNIq8BCg9NYWNoaW5lTmljUXVlcnkSIgoEbWFjcxgBIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESIAoFbmFtZXMYAiADKAlCEbpIDpIBCxBkGAEiBXIDGIABEisKDW5laWdoYm9yX21hY3MYAyADKAlCFLpIEZIBDhBkGAEiCHIGuLOusQIBEikKDm5laWdoYm9yX25hbWVzGAQgAygJQhG6SA6SAQsQZBgBIgVyAxiAASJLChBNYWNoaW5lRGlza1F1ZXJ5Eh4KBW5hbWVzGAEgAygJQg+6SAySAQkQZCIFcgMYgAESFwoFc2l6ZXMYAiADKARCCLpIBZIBAhBkIrkBCg9NYWNoaW5lQk1DUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbCr+BAoRTWFjaGluZUJNQ0NvbW1hbmQSIwofTUFDSElORV9CTUNfQ09NTUFORF9VTlNQRUNJRklFRBAAEiIKFk1BQ0hJTkVfQk1DX0NPTU1BTkRfT04QARoGgrIZAm9uEiQKF01BQ0hJTkVfQk1DX0NPTU1BTkRfT0ZGEAIaB4KyGQNvZmYSKAoZTUFDSElORV9CTUNfQ09NTUFORF9SRVNFVBADGgmCshkFcmVzZXQSKAoZTUFDSElORV9CTUNfQ09NTUFORF9DWUNMRRAEGgmCshkFY3ljbGUSNgogTUFDSElORV9CTUNfQ09NTUFORF9CT09UX1RPX0JJT1MQBRoQgrIZDGJvb3QtdG8tYmlvcxI6CiJNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfRlJPTV9ESVNLEAYaEoKyGQ5ib290LWZyb20tZGlzaxI4CiFNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfRlJPTV9QWEUQBxoRgrIZDWJvb3QtZnJvbS1weGUSPAojTUFDSElORV9CTUNfQ09NTUFORF9JREVOVElGWV9MRURfT04QCBoTgrIZD2lkZW50aWZ5LWxlZC1vbhI+CiRNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PRkYQCRoUgrIZEGlkZW50aWZ5LWxlZC1vZmYSPAojTUFDSElORV9CTUNfQ09NTUFORF9NQUNISU5FX0RFTEVURUQQChoTgrIZD21hY2hpbmUtZGVsZXRlZBI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfQ1JFQVRFRBALGhOCshkPbWFjaGluZS1jcmVhdGVkMrwGCg5NYWNoaW5lU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlIgbK8xgCAQIScQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZSIGyvMYAgECEnAKBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiBsrzGAIBAhJ9CgpCTUNDb21tYW5kEjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBozLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIgbK8xgCAQIScQoGR2V0Qk1DEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRCTUNSZXNwb25zZSIGyvMYAgECQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDE1hY2hpbmVQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); +export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOIlQKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIaChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAgiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQixgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0SHgoHcHJvamVjdBgJIAEoCUIIukgFcgOwAQFIAIgBAUIKCghfcHJvamVjdCLaAQoPTWFjaGluZUhhcmR3YXJlEg4KBm1lbW9yeRgBIAEoBBI0CgVkaXNrcxgDIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCbG9ja0RldmljZRIpCgRjcHVzGAQgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxDUFUSKQoEZ3B1cxgFIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsR1BVEisKBG5pY3MYBiADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljIl0KCE1ldGFsQ1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACEg0KBWNvcmVzGAMgASgNEg8KB3RocmVhZHMYBCABKA0iPQoITWV0YWxHUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAIi5QEKCk1hY2hpbmVOaWMSGAoDbWFjGAEgASgJQgu6SAhyBrizrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIcCgppZGVudGlmaWVyGAMgASgJQgi6SAVyAxiAARIYCgZ2ZW5kb3IYBCABKAlCCLpIBXIDGIABEhcKBW1vZGVsGAUgASgJQgi6SAVyAxiAARINCgVzcGVlZBgGIAEoBBIwCgluZWlnaGJvcnMYByADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljEhAKCGhvc3RuYW1lGAggASgJIj0KEk1hY2hpbmVCbG9ja0RldmljZRIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIMCgRzaXplGAIgASgEIlsKHk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIXCgV2YWx1ZRgBIAEoCUIIukgFcgMYgAESIAoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBIooDChBNYWNoaW5lQk1DUmVwb3J0EioKA2JtYxgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUMSLAoEYmlvcxgCIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEioKA2ZydRgDIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlUSOwoMcG93ZXJfbWV0cmljGAQgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyTWV0cmljEj0KDnBvd2VyX3N1cHBsaWVzGAUgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyU3VwcGx5EkQKCWxlZF9zdGF0ZRgGIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJjCgtNYWNoaW5lQmlvcxIcCgd2ZXJzaW9uGAEgASgJQgu6SAhyBsizrrECARIbCgZ2ZW5kb3IYAiABKAlCC7pICHIGyLOusQIBEhkKBGRhdGUYAyABKAlCC7pICHIGyLOusQIBItsBCgpNYWNoaW5lQk1DEhkKB2FkZHJlc3MYASABKAlCCLpIBXIDgAIBEhgKA21hYxgCIAEoCUILukgIcga4s66xAgESGQoEdXNlchgDIAEoCUILukgIcgbIs66xAgESHQoIcGFzc3dvcmQYBCABKAlCC7pICHIGyLOusQIBEh4KCWludGVyZmFjZRgFIAEoCUILukgIcgbIs66xAgESHAoHdmVyc2lvbhgHIAEoCUILukgIcgbIs66xAgESIAoLcG93ZXJfc3RhdGUYCCABKAlCC7pICHIGyLOusQIBIp4ECgpNYWNoaW5lRlJVEi0KE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCC7pICHIGyLOusQIBSACIAQESLQoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglib2FyZF9tZmcYAyABKAlCC7pICHIGyLOusQIBSAKIAQESKgoQYm9hcmRfbWZnX3NlcmlhbBgEIAEoCUILukgIcgbIs66xAgFIA4gBARIrChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUILukgIcgbIs66xAgFIBIgBARIuChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUILukgIcgbIs66xAgFIBYgBARItChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgu6SAhyBsizrrECAUgGiAEBEigKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgu6SAhyBsizrrECAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCEwoRX2JvYXJkX21mZ19zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwihQEKEk1hY2hpbmVQb3dlck1ldHJpYxIeChZhdmVyYWdlX2NvbnN1bWVkX3dhdHRzGAEgASgCEhcKD2ludGVydmFsX2luX21pbhgCIAEoAhIaChJtYXhfY29uc3VtZWRfd2F0dHMYAyABKAISGgoSbWluX2NvbnN1bWVkX3dhdHRzGAQgASgCIjMKEk1hY2hpbmVQb3dlclN1cHBseRIOCgZoZWFsdGgYASABKAkSDQoFc3RhdGUYAiABKAkipQIKH01hY2hpbmVSZWNlbnRQcm92aXNpb25pbmdFdmVudHMSOwoGZXZlbnRzGAEgAygLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EjMKD2xhc3RfZXZlbnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoQbGFzdF9lcnJvcl9ldmVudBgDIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBJJCgVzdGF0ZRgEIAEoDjIwLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlQgi6SAWCAQIQASKVAQoYTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj4KBWV2ZW50GAIgASgOMi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIPCgdtZXNzYWdlGAMgASgJImsKCk1hY2hpbmVWUE4SHQoVY29udHJvbF9wbGFuZV9hZGRyZXNzGAEgASgJEhAKCGF1dGhfa2V5GAIgASgJEhEKCWNvbm5lY3RlZBgDIAEoCBIZCgNpcHMYBSADKAlCDLpICZIBBsCks7ECASK6BwoMTWFjaGluZVF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIiCglwYXJ0aXRpb24YAyABKAlCCrpIB3IFEAIYgAFIAogBARIdCgRzaXplGAQgASgJQgq6SAdyBRACGIABSAOIAQESHQoEcmFjaxgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEi4KBmxhYmVscxgGIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEkIKCmFsbG9jYXRpb24YByABKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblF1ZXJ5SAaIAQESPAoHbmV0d29yaxgIIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOZXR3b3JrUXVlcnlIB4gBARI0CgNuaWMYCSABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljUXVlcnlICIgBARI2CgRkaXNrGAogASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZURpc2tRdWVyeUgJiAEBEjQKA2JtYxgLIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBEhQKB3dhaXRpbmcYDyABKAhIDogBARIZCgxwcmVhbGxvY2F0ZWQYECABKAhID4gBARIaCg1ub3RfYWxsb2NhdGVkGBEgASgISBCIAQFCBwoFX3V1aWRCBwoFX25hbWVCDAoKX3BhcnRpdGlvbkIHCgVfc2l6ZUIHCgVfcmFja0IJCgdfbGFiZWxzQg0KC19hbGxvY2F0aW9uQgoKCF9uZXR3b3JrQgYKBF9uaWNCBwoFX2Rpc2tCBgoEX2JtY0IGCgRfZnJ1QgsKCV9oYXJkd2FyZUIICgZfc3RhdGVCCgoIX3dhaXRpbmdCDwoNX3ByZWFsbG9jYXRlZEIQCg5fbm90X2FsbG9jYXRlZCKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * Describes the message metalstack.api.v2.MachineServiceGetRequest. * Use `create(MachineServiceGetRequestSchema)` to create a new message. diff --git a/js/metalstack/api/v2/machine_pb.ts b/js/metalstack/api/v2/machine_pb.ts index c14d233c..8b136d33 100644 --- a/js/metalstack/api/v2/machine_pb.ts +++ b/js/metalstack/api/v2/machine_pb.ts @@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/api/v2/machine.proto. */ export const file_metalstack_api_v2_machine: GenFile = /*@__PURE__*/ - fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOInAKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIfChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAhIAIgBAUIVChNfbm9fYXV0b19hY3F1aXJlX2lwIloKE01hY2hpbmVBbGxvY2F0aW9uSXASEwoCaXAYASABKAlCB7pIBHICcAESIAoJbmFtZXNwYWNlGAIgASgJQgi6SAVyA7ABAUgAiAEBQgwKCl9uYW1lc3BhY2UifwoNRmlyZXdhbGxSdWxlcxI1CgZlZ3Jlc3MYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbEVncmVzc1J1bGUSNwoHaW5ncmVzcxgCIAMoCzImLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsSW5ncmVzc1J1bGUisgEKEkZpcmV3YWxsRWdyZXNzUnVsZRI5Cghwcm90b2NvbBgBIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLklQUHJvdG9jb2xCCLpIBYIBAhABEh0KBXBvcnRzGAIgAygNQg66SAuSAQgiBioEGPz/AxIYCgJ0bxgDIAMoCUIMukgJkgEGuKSzsQIBEigKB2NvbW1lbnQYBCABKAlCF7pIFNgBAXIPGGQyC15bYS16XyAtXSokIs8BChNGaXJld2FsbEluZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESGgoEZnJvbRgEIAMoCUIMukgJkgEGuKSzsQIBEigKB2NvbW1lbnQYBSABKAlCF7pIFNgBAXIPGGQyC15bYS16XyAtXSokIsYCCg5NYWNoaW5lTmV0d29yaxIPCgduZXR3b3JrGAEgASgJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARI+CgxuZXR3b3JrX3R5cGUYBSABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYBiABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARILCgN2cmYYByABKAQSCwoDYXNuGAggASgNEh4KB3Byb2plY3QYCSABKAlCCLpIBXIDsAEBSACIAQFCCgoIX3Byb2plY3Qi2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEiugcKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBARIUCgd3YWl0aW5nGA8gASgISA6IAQESGQoMcHJlYWxsb2NhdGVkGBAgASgISA+IAQESGgoNbm90X2FsbG9jYXRlZBgRIAEoCEgQiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgYKBF9ibWNCBgoEX2ZydUILCglfaGFyZHdhcmVCCAoGX3N0YXRlQgoKCF93YWl0aW5nQg8KDV9wcmVhbGxvY2F0ZWRCEAoOX25vdF9hbGxvY2F0ZWQiiQQKFk1hY2hpbmVBbGxvY2F0aW9uUXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEh4KB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBSAKIAQESHgoFaW1hZ2UYBCABKAlCCrpIB3IFEAIYgAFIA4gBARIqChFmaWxlc3lzdGVtX2xheW91dBgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEiEKCGhvc3RuYW1lGAYgASgJQgq6SAdyBRACGIABSAWIAQESUAoPYWxsb2NhdGlvbl90eXBlGAcgASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQAUgGiAEBEi4KBmxhYmVscxgIIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gHiAEBEi8KA3ZwbhgJIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE5ICIgBAUIHCgVfdXVpZEIHCgVfbmFtZUIKCghfcHJvamVjdEIICgZfaW1hZ2VCFAoSX2ZpbGVzeXN0ZW1fbGF5b3V0QgsKCV9ob3N0bmFtZUISChBfYWxsb2NhdGlvbl90eXBlQgkKB19sYWJlbHNCBgoEX3ZwbiKqAQoTTWFjaGluZU5ldHdvcmtRdWVyeRIQCghuZXR3b3JrcxgBIAMoCRIeCghwcmVmaXhlcxgCIAMoCUIMukgJkgEGuKSzsQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAMgAygJQgy6SAmSAQa4pLOxAgESGQoDaXBzGAQgAygJQgy6SAmSAQbApLOxAgESDAoEdnJmcxgFIAMoBBIMCgRhc25zGAYgAygNIq8BCg9NYWNoaW5lTmljUXVlcnkSIgoEbWFjcxgBIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESIAoFbmFtZXMYAiADKAlCEbpIDpIBCxBkGAEiBXIDGIABEisKDW5laWdoYm9yX21hY3MYAyADKAlCFLpIEZIBDhBkGAEiCHIGuLOusQIBEikKDm5laWdoYm9yX25hbWVzGAQgAygJQhG6SA6SAQsQZBgBIgVyAxiAASJLChBNYWNoaW5lRGlza1F1ZXJ5Eh4KBW5hbWVzGAEgAygJQg+6SAySAQkQZCIFcgMYgAESFwoFc2l6ZXMYAiADKARCCLpIBZIBAhBkIrkBCg9NYWNoaW5lQk1DUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbCr+BAoRTWFjaGluZUJNQ0NvbW1hbmQSIwofTUFDSElORV9CTUNfQ09NTUFORF9VTlNQRUNJRklFRBAAEiIKFk1BQ0hJTkVfQk1DX0NPTU1BTkRfT04QARoGgrIZAm9uEiQKF01BQ0hJTkVfQk1DX0NPTU1BTkRfT0ZGEAIaB4KyGQNvZmYSKAoZTUFDSElORV9CTUNfQ09NTUFORF9SRVNFVBADGgmCshkFcmVzZXQSKAoZTUFDSElORV9CTUNfQ09NTUFORF9DWUNMRRAEGgmCshkFY3ljbGUSNgogTUFDSElORV9CTUNfQ09NTUFORF9CT09UX1RPX0JJT1MQBRoQgrIZDGJvb3QtdG8tYmlvcxI6CiJNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfRlJPTV9ESVNLEAYaEoKyGQ5ib290LWZyb20tZGlzaxI4CiFNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfRlJPTV9QWEUQBxoRgrIZDWJvb3QtZnJvbS1weGUSPAojTUFDSElORV9CTUNfQ09NTUFORF9JREVOVElGWV9MRURfT04QCBoTgrIZD2lkZW50aWZ5LWxlZC1vbhI+CiRNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PRkYQCRoUgrIZEGlkZW50aWZ5LWxlZC1vZmYSPAojTUFDSElORV9CTUNfQ09NTUFORF9NQUNISU5FX0RFTEVURUQQChoTgrIZD21hY2hpbmUtZGVsZXRlZBI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfQ1JFQVRFRBALGhOCshkPbWFjaGluZS1jcmVhdGVkMrwGCg5NYWNoaW5lU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlIgbK8xgCAQIScQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZSIGyvMYAgECEnAKBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiBsrzGAIBAhJ9CgpCTUNDb21tYW5kEjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBozLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIgbK8xgCAQIScQoGR2V0Qk1DEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRCTUNSZXNwb25zZSIGyvMYAgECQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDE1hY2hpbmVQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOIlQKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIaChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAgiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQixgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0SHgoHcHJvamVjdBgJIAEoCUIIukgFcgOwAQFIAIgBAUIKCghfcHJvamVjdCLaAQoPTWFjaGluZUhhcmR3YXJlEg4KBm1lbW9yeRgBIAEoBBI0CgVkaXNrcxgDIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCbG9ja0RldmljZRIpCgRjcHVzGAQgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxDUFUSKQoEZ3B1cxgFIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsR1BVEisKBG5pY3MYBiADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljIl0KCE1ldGFsQ1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACEg0KBWNvcmVzGAMgASgNEg8KB3RocmVhZHMYBCABKA0iPQoITWV0YWxHUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAIi5QEKCk1hY2hpbmVOaWMSGAoDbWFjGAEgASgJQgu6SAhyBrizrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIcCgppZGVudGlmaWVyGAMgASgJQgi6SAVyAxiAARIYCgZ2ZW5kb3IYBCABKAlCCLpIBXIDGIABEhcKBW1vZGVsGAUgASgJQgi6SAVyAxiAARINCgVzcGVlZBgGIAEoBBIwCgluZWlnaGJvcnMYByADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljEhAKCGhvc3RuYW1lGAggASgJIj0KEk1hY2hpbmVCbG9ja0RldmljZRIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIMCgRzaXplGAIgASgEIlsKHk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIXCgV2YWx1ZRgBIAEoCUIIukgFcgMYgAESIAoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBIooDChBNYWNoaW5lQk1DUmVwb3J0EioKA2JtYxgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUMSLAoEYmlvcxgCIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEioKA2ZydRgDIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlUSOwoMcG93ZXJfbWV0cmljGAQgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyTWV0cmljEj0KDnBvd2VyX3N1cHBsaWVzGAUgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyU3VwcGx5EkQKCWxlZF9zdGF0ZRgGIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJjCgtNYWNoaW5lQmlvcxIcCgd2ZXJzaW9uGAEgASgJQgu6SAhyBsizrrECARIbCgZ2ZW5kb3IYAiABKAlCC7pICHIGyLOusQIBEhkKBGRhdGUYAyABKAlCC7pICHIGyLOusQIBItsBCgpNYWNoaW5lQk1DEhkKB2FkZHJlc3MYASABKAlCCLpIBXIDgAIBEhgKA21hYxgCIAEoCUILukgIcga4s66xAgESGQoEdXNlchgDIAEoCUILukgIcgbIs66xAgESHQoIcGFzc3dvcmQYBCABKAlCC7pICHIGyLOusQIBEh4KCWludGVyZmFjZRgFIAEoCUILukgIcgbIs66xAgESHAoHdmVyc2lvbhgHIAEoCUILukgIcgbIs66xAgESIAoLcG93ZXJfc3RhdGUYCCABKAlCC7pICHIGyLOusQIBIp4ECgpNYWNoaW5lRlJVEi0KE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCC7pICHIGyLOusQIBSACIAQESLQoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglib2FyZF9tZmcYAyABKAlCC7pICHIGyLOusQIBSAKIAQESKgoQYm9hcmRfbWZnX3NlcmlhbBgEIAEoCUILukgIcgbIs66xAgFIA4gBARIrChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUILukgIcgbIs66xAgFIBIgBARIuChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUILukgIcgbIs66xAgFIBYgBARItChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgu6SAhyBsizrrECAUgGiAEBEigKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgu6SAhyBsizrrECAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCEwoRX2JvYXJkX21mZ19zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwihQEKEk1hY2hpbmVQb3dlck1ldHJpYxIeChZhdmVyYWdlX2NvbnN1bWVkX3dhdHRzGAEgASgCEhcKD2ludGVydmFsX2luX21pbhgCIAEoAhIaChJtYXhfY29uc3VtZWRfd2F0dHMYAyABKAISGgoSbWluX2NvbnN1bWVkX3dhdHRzGAQgASgCIjMKEk1hY2hpbmVQb3dlclN1cHBseRIOCgZoZWFsdGgYASABKAkSDQoFc3RhdGUYAiABKAkipQIKH01hY2hpbmVSZWNlbnRQcm92aXNpb25pbmdFdmVudHMSOwoGZXZlbnRzGAEgAygLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EjMKD2xhc3RfZXZlbnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoQbGFzdF9lcnJvcl9ldmVudBgDIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBJJCgVzdGF0ZRgEIAEoDjIwLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlQgi6SAWCAQIQASKVAQoYTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj4KBWV2ZW50GAIgASgOMi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIPCgdtZXNzYWdlGAMgASgJImsKCk1hY2hpbmVWUE4SHQoVY29udHJvbF9wbGFuZV9hZGRyZXNzGAEgASgJEhAKCGF1dGhfa2V5GAIgASgJEhEKCWNvbm5lY3RlZBgDIAEoCBIZCgNpcHMYBSADKAlCDLpICZIBBsCks7ECASK6BwoMTWFjaGluZVF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIiCglwYXJ0aXRpb24YAyABKAlCCrpIB3IFEAIYgAFIAogBARIdCgRzaXplGAQgASgJQgq6SAdyBRACGIABSAOIAQESHQoEcmFjaxgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEi4KBmxhYmVscxgGIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEkIKCmFsbG9jYXRpb24YByABKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblF1ZXJ5SAaIAQESPAoHbmV0d29yaxgIIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOZXR3b3JrUXVlcnlIB4gBARI0CgNuaWMYCSABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljUXVlcnlICIgBARI2CgRkaXNrGAogASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZURpc2tRdWVyeUgJiAEBEjQKA2JtYxgLIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBEhQKB3dhaXRpbmcYDyABKAhIDogBARIZCgxwcmVhbGxvY2F0ZWQYECABKAhID4gBARIaCg1ub3RfYWxsb2NhdGVkGBEgASgISBCIAQFCBwoFX3V1aWRCBwoFX25hbWVCDAoKX3BhcnRpdGlvbkIHCgVfc2l6ZUIHCgVfcmFja0IJCgdfbGFiZWxzQg0KC19hbGxvY2F0aW9uQgoKCF9uZXR3b3JrQgYKBF9uaWNCBwoFX2Rpc2tCBgoEX2JtY0IGCgRfZnJ1QgsKCV9oYXJkd2FyZUIICgZfc3RhdGVCCgoIX3dhaXRpbmdCDwoNX3ByZWFsbG9jYXRlZEIQCg5fbm90X2FsbG9jYXRlZCKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * MachineServiceGetRequest is the request payload for a machine get request @@ -857,9 +857,9 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat * NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. * By default one ip address is acquired per network for the machine * - * @generated from field: optional bool no_auto_acquire_ip = 2; + * @generated from field: bool no_auto_acquire_ip = 2; */ - noAutoAcquireIp?: boolean; + noAutoAcquireIp: boolean; }; /** diff --git a/proto/metalstack/api/v2/machine.proto b/proto/metalstack/api/v2/machine.proto index 5eaf63d7..a4812f02 100644 --- a/proto/metalstack/api/v2/machine.proto +++ b/proto/metalstack/api/v2/machine.proto @@ -345,7 +345,7 @@ message MachineAllocationNetwork { string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true]; // NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. // By default one ip address is acquired per network for the machine - optional bool no_auto_acquire_ip = 2; + bool no_auto_acquire_ip = 2; } // MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create diff --git a/python/metalstack/api/v2/machine_pb2.py b/python/metalstack/api/v2/machine_pb2.py index 20bd1040..cfe2c614 100644 --- a/python/metalstack/api/v2/machine_pb2.py +++ b/python/metalstack/api/v2/machine_pb2.py @@ -33,7 +33,7 @@ from metalstack.api.v2 import size_pb2 as metalstack_dot_api_dot_v2_dot_size__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\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\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12\x38\n\x03ips\x18\x0e \x03(\x0b\x32&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n\x0eplacement_tags\x18\x0f \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12G\n\x0b\x64ns_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xac\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12G\n\x0b\x64ns_servers\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8a\x01\n\x18MachineAllocationNetwork\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x30\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08H\x00R\x0fnoAutoAcquireIp\x88\x01\x01\x42\x15\n\x13_no_auto_acquire_ip\"i\n\x13MachineAllocationIp\x12\x17\n\x02ip\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x02ip\x12+\n\tnamespace\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01\x42\x0c\n\n_namespace\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\x9c\x03\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\x12\'\n\x07project\x18\t \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07project\x88\x01\x01\x42\n\n\x08_project\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xc5\x08\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x12\x1d\n\x07waiting\x18\x0f \x01(\x08H\x0eR\x07waiting\x88\x01\x01\x12\'\n\x0cpreallocated\x18\x10 \x01(\x08H\x0fR\x0cpreallocated\x88\x01\x01\x12(\n\rnot_allocated\x18\x11 \x01(\x08H\x10R\x0cnotAllocated\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_stateB\n\n\x08_waitingB\x0f\n\r_preallocatedB\x10\n\x0e_not_allocated\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\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\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12\x38\n\x03ips\x18\x0e \x03(\x0b\x32&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n\x0eplacement_tags\x18\x0f \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12G\n\x0b\x64ns_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xac\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12G\n\x0b\x64ns_servers\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"n\n\x18MachineAllocationNetwork\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12+\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08R\x0fnoAutoAcquireIp\"i\n\x13MachineAllocationIp\x12\x17\n\x02ip\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x02ip\x12+\n\tnamespace\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01\x42\x0c\n\n_namespace\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\x9c\x03\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\x12\'\n\x07project\x18\t \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07project\x88\x01\x01\x42\n\n\x08_project\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xc5\x08\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x12\x1d\n\x07waiting\x18\x0f \x01(\x08H\x0eR\x07waiting\x88\x01\x01\x12\'\n\x0cpreallocated\x18\x10 \x01(\x08H\x0fR\x0cpreallocated\x88\x01\x01\x12(\n\rnot_allocated\x18\x11 \x01(\x08H\x10R\x0cnotAllocated\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_stateB\n\n\x08_waitingB\x0f\n\r_preallocatedB\x10\n\x0e_not_allocated\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -391,20 +391,20 @@ _globals['_MACHINESERVICE'].methods_by_name['BMCCommand']._serialized_options = b'\312\363\030\002\001\002' _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._loaded_options = None _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._serialized_options = b'\312\363\030\002\001\002' - _globals['_IPPROTOCOL']._serialized_start=12952 - _globals['_IPPROTOCOL']._serialized_end=13053 - _globals['_MACHINESTATE']._serialized_start=13056 - _globals['_MACHINESTATE']._serialized_end=13231 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=13234 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13457 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13460 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=14259 - _globals['_MACHINELIVELINESS']._serialized_start=14262 - _globals['_MACHINELIVELINESS']._serialized_end=14448 - _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14451 - _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14623 - _globals['_MACHINEBMCCOMMAND']._serialized_start=14626 - _globals['_MACHINEBMCCOMMAND']._serialized_end=15264 + _globals['_IPPROTOCOL']._serialized_start=12923 + _globals['_IPPROTOCOL']._serialized_end=13024 + _globals['_MACHINESTATE']._serialized_start=13027 + _globals['_MACHINESTATE']._serialized_end=13202 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=13205 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13428 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13431 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=14230 + _globals['_MACHINELIVELINESS']._serialized_start=14233 + _globals['_MACHINELIVELINESS']._serialized_end=14419 + _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14422 + _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14594 + _globals['_MACHINEBMCCOMMAND']._serialized_start=14597 + _globals['_MACHINEBMCCOMMAND']._serialized_end=15235 _globals['_MACHINESERVICEGETREQUEST']._serialized_start=355 _globals['_MACHINESERVICEGETREQUEST']._serialized_end=447 _globals['_MACHINESERVICEGETRESPONSE']._serialized_start=449 @@ -443,64 +443,64 @@ _globals['_MACHINECONDITION']._serialized_end=4067 _globals['_MACHINEALLOCATION']._serialized_start=4070 _globals['_MACHINEALLOCATION']._serialized_end=5010 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=5013 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5151 - _globals['_MACHINEALLOCATIONIP']._serialized_start=5153 - _globals['_MACHINEALLOCATIONIP']._serialized_end=5258 - _globals['_FIREWALLRULES']._serialized_start=5261 - _globals['_FIREWALLRULES']._serialized_end=5405 - _globals['_FIREWALLEGRESSRULE']._serialized_start=5408 - _globals['_FIREWALLEGRESSRULE']._serialized_end=5616 - _globals['_FIREWALLINGRESSRULE']._serialized_start=5619 - _globals['_FIREWALLINGRESSRULE']._serialized_end=5862 - _globals['_MACHINENETWORK']._serialized_start=5865 - _globals['_MACHINENETWORK']._serialized_end=6277 - _globals['_MACHINEHARDWARE']._serialized_start=6280 - _globals['_MACHINEHARDWARE']._serialized_end=6531 - _globals['_METALCPU']._serialized_start=6533 - _globals['_METALCPU']._serialized_end=6657 - _globals['_METALGPU']._serialized_start=6659 - _globals['_METALGPU']._serialized_end=6735 - _globals['_MACHINENIC']._serialized_start=6738 - _globals['_MACHINENIC']._serialized_end=7033 - _globals['_MACHINEBLOCKDEVICE']._serialized_start=7035 - _globals['_MACHINEBLOCKDEVICE']._serialized_end=7108 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=7110 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7221 - _globals['_MACHINEBMCREPORT']._serialized_start=7224 - _globals['_MACHINEBMCREPORT']._serialized_end=7683 - _globals['_MACHINEBIOS']._serialized_start=7685 - _globals['_MACHINEBIOS']._serialized_end=7807 - _globals['_MACHINEBMC']._serialized_start=7810 - _globals['_MACHINEBMC']._serialized_end=8091 - _globals['_MACHINEFRU']._serialized_start=8094 - _globals['_MACHINEFRU']._serialized_end=8772 - _globals['_MACHINEPOWERMETRIC']._serialized_start=8775 - _globals['_MACHINEPOWERMETRIC']._serialized_end=8981 - _globals['_MACHINEPOWERSUPPLY']._serialized_start=8983 - _globals['_MACHINEPOWERSUPPLY']._serialized_end=9049 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=9052 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9391 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9394 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9565 - _globals['_MACHINEVPN']._serialized_start=9568 - _globals['_MACHINEVPN']._serialized_end=9721 - _globals['_MACHINEQUERY']._serialized_start=9724 - _globals['_MACHINEQUERY']._serialized_end=10817 - _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10820 - _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11426 - _globals['_MACHINENETWORKQUERY']._serialized_start=11429 - _globals['_MACHINENETWORKQUERY']._serialized_end=11657 - _globals['_MACHINENICQUERY']._serialized_start=11660 - _globals['_MACHINENICQUERY']._serialized_end=11877 - _globals['_MACHINEDISKQUERY']._serialized_start=11879 - _globals['_MACHINEDISKQUERY']._serialized_end=11968 - _globals['_MACHINEBMCQUERY']._serialized_start=11971 - _globals['_MACHINEBMCQUERY']._serialized_end=12187 - _globals['_MACHINEFRUQUERY']._serialized_start=12190 - _globals['_MACHINEFRUQUERY']._serialized_end=12838 - _globals['_MACHINEHARDWAREQUERY']._serialized_start=12840 - _globals['_MACHINEHARDWAREQUERY']._serialized_end=12950 - _globals['_MACHINESERVICE']._serialized_start=15267 - _globals['_MACHINESERVICE']._serialized_end=16095 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=5012 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5122 + _globals['_MACHINEALLOCATIONIP']._serialized_start=5124 + _globals['_MACHINEALLOCATIONIP']._serialized_end=5229 + _globals['_FIREWALLRULES']._serialized_start=5232 + _globals['_FIREWALLRULES']._serialized_end=5376 + _globals['_FIREWALLEGRESSRULE']._serialized_start=5379 + _globals['_FIREWALLEGRESSRULE']._serialized_end=5587 + _globals['_FIREWALLINGRESSRULE']._serialized_start=5590 + _globals['_FIREWALLINGRESSRULE']._serialized_end=5833 + _globals['_MACHINENETWORK']._serialized_start=5836 + _globals['_MACHINENETWORK']._serialized_end=6248 + _globals['_MACHINEHARDWARE']._serialized_start=6251 + _globals['_MACHINEHARDWARE']._serialized_end=6502 + _globals['_METALCPU']._serialized_start=6504 + _globals['_METALCPU']._serialized_end=6628 + _globals['_METALGPU']._serialized_start=6630 + _globals['_METALGPU']._serialized_end=6706 + _globals['_MACHINENIC']._serialized_start=6709 + _globals['_MACHINENIC']._serialized_end=7004 + _globals['_MACHINEBLOCKDEVICE']._serialized_start=7006 + _globals['_MACHINEBLOCKDEVICE']._serialized_end=7079 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=7081 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7192 + _globals['_MACHINEBMCREPORT']._serialized_start=7195 + _globals['_MACHINEBMCREPORT']._serialized_end=7654 + _globals['_MACHINEBIOS']._serialized_start=7656 + _globals['_MACHINEBIOS']._serialized_end=7778 + _globals['_MACHINEBMC']._serialized_start=7781 + _globals['_MACHINEBMC']._serialized_end=8062 + _globals['_MACHINEFRU']._serialized_start=8065 + _globals['_MACHINEFRU']._serialized_end=8743 + _globals['_MACHINEPOWERMETRIC']._serialized_start=8746 + _globals['_MACHINEPOWERMETRIC']._serialized_end=8952 + _globals['_MACHINEPOWERSUPPLY']._serialized_start=8954 + _globals['_MACHINEPOWERSUPPLY']._serialized_end=9020 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=9023 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9362 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9365 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9536 + _globals['_MACHINEVPN']._serialized_start=9539 + _globals['_MACHINEVPN']._serialized_end=9692 + _globals['_MACHINEQUERY']._serialized_start=9695 + _globals['_MACHINEQUERY']._serialized_end=10788 + _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10791 + _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11397 + _globals['_MACHINENETWORKQUERY']._serialized_start=11400 + _globals['_MACHINENETWORKQUERY']._serialized_end=11628 + _globals['_MACHINENICQUERY']._serialized_start=11631 + _globals['_MACHINENICQUERY']._serialized_end=11848 + _globals['_MACHINEDISKQUERY']._serialized_start=11850 + _globals['_MACHINEDISKQUERY']._serialized_end=11939 + _globals['_MACHINEBMCQUERY']._serialized_start=11942 + _globals['_MACHINEBMCQUERY']._serialized_end=12158 + _globals['_MACHINEFRUQUERY']._serialized_start=12161 + _globals['_MACHINEFRUQUERY']._serialized_end=12809 + _globals['_MACHINEHARDWAREQUERY']._serialized_start=12811 + _globals['_MACHINEHARDWAREQUERY']._serialized_end=12921 + _globals['_MACHINESERVICE']._serialized_start=15238 + _globals['_MACHINESERVICE']._serialized_end=16066 # @@protoc_insertion_point(module_scope) From 503e9c3278020c3117d555ff51d442588d1d2bb1 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 27 Mar 2026 12:42:40 +0100 Subject: [PATCH 2/2] Additional ips are part of the allocationnetwork --- doc/index.html | 49 +-- go/metalstack/api/v2/machine.pb.go | 521 ++++++++++------------- js/metalstack/api/v2/machine_pb.d.ts | 36 +- js/metalstack/api/v2/machine_pb.js | 61 ++- js/metalstack/api/v2/machine_pb.ts | 98 ++--- proto/metalstack/api/v2/machine.proto | 12 +- python/metalstack/api/v2/machine_pb2.py | 220 +++++----- python/metalstack/api/v2/machine_pb2.pyi | 20 +- 8 files changed, 421 insertions(+), 596 deletions(-) diff --git a/doc/index.html b/doc/index.html index 3e163bc4..b42c650a 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1153,10 +1153,6 @@

Table of Contents

MMachineAllocation -
  • - MMachineAllocationIp -
  • -
  • MMachineAllocationNetwork
  • @@ -9764,37 +9760,6 @@

    MachineAllocation

    -

    MachineAllocationIp

    -

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

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    ipstring

    IP to to attach to this machine additionally

    namespacestringoptional

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

    - - - - -

    MachineAllocationNetwork

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

    @@ -9820,6 +9785,13 @@

    MachineAllocationNetwork

    + + ips + string + repeated +

    IPs to to attach to this machine additionally

    + + @@ -11196,13 +11168,6 @@

    MachineServiceCreateReque

    Networks the networks that this machine will be placed in.

    - - ips - MachineAllocationIp - repeated -

    IPs to to attach to this machine additionally

    - - placement_tags string diff --git a/go/metalstack/api/v2/machine.pb.go b/go/metalstack/api/v2/machine.pb.go index 344e8354..6e6bb72e 100644 --- a/go/metalstack/api/v2/machine.pb.go +++ b/go/metalstack/api/v2/machine.pb.go @@ -608,8 +608,6 @@ type MachineServiceCreateRequest struct { Labels *Labels `protobuf:"bytes,12,opt,name=labels,proto3" json:"labels,omitempty"` // Networks the networks that this machine will be placed in. Networks []*MachineAllocationNetwork `protobuf:"bytes,13,rep,name=networks,proto3" json:"networks,omitempty"` - // IPs to to attach to this machine additionally - Ips []*MachineAllocationIp `protobuf:"bytes,14,rep,name=ips,proto3" json:"ips,omitempty"` // PlacementTags by default machines are spread across the racks inside a partition for every project. // if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags PlacementTags []string `protobuf:"bytes,15,rep,name=placement_tags,json=placementTags,proto3" json:"placement_tags,omitempty"` @@ -746,13 +744,6 @@ func (x *MachineServiceCreateRequest) GetNetworks() []*MachineAllocationNetwork return nil } -func (x *MachineServiceCreateRequest) GetIps() []*MachineAllocationIp { - if x != nil { - return x.Ips - } - return nil -} - func (x *MachineServiceCreateRequest) GetPlacementTags() []string { if x != nil { return x.PlacementTags @@ -1884,8 +1875,10 @@ type MachineAllocationNetwork struct { // NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. // By default one ip address is acquired per network for the machine NoAutoAcquireIp bool `protobuf:"varint,2,opt,name=no_auto_acquire_ip,json=noAutoAcquireIp,proto3" json:"no_auto_acquire_ip,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // IPs to to attach to this machine additionally + Ips []string `protobuf:"bytes,3,rep,name=ips,proto3" json:"ips,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MachineAllocationNetwork) Reset() { @@ -1932,59 +1925,11 @@ func (x *MachineAllocationNetwork) GetNoAutoAcquireIp() bool { return false } -// MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create -type MachineAllocationIp struct { - state protoimpl.MessageState `protogen:"open.v1"` - // IP to to attach to this machine additionally - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - // Namespace where this ip was created, usually the project of the namespaced tenant network. - Namespace *string `protobuf:"bytes,2,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MachineAllocationIp) Reset() { - *x = MachineAllocationIp{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MachineAllocationIp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MachineAllocationIp) ProtoMessage() {} - -func (x *MachineAllocationIp) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MachineAllocationIp.ProtoReflect.Descriptor instead. -func (*MachineAllocationIp) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{20} -} - -func (x *MachineAllocationIp) GetIp() string { +func (x *MachineAllocationNetwork) GetIps() []string { if x != nil { - return x.Ip - } - return "" -} - -func (x *MachineAllocationIp) GetNamespace() string { - if x != nil && x.Namespace != nil { - return *x.Namespace + return x.Ips } - return "" + return nil } // FirewallRules can be defined during firewall allocation @@ -2000,7 +1945,7 @@ type FirewallRules struct { func (x *FirewallRules) Reset() { *x = FirewallRules{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +1957,7 @@ func (x *FirewallRules) String() string { func (*FirewallRules) ProtoMessage() {} func (x *FirewallRules) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2025,7 +1970,7 @@ func (x *FirewallRules) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallRules.ProtoReflect.Descriptor instead. func (*FirewallRules) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{21} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{20} } func (x *FirewallRules) GetEgress() []*FirewallEgressRule { @@ -2059,7 +2004,7 @@ type FirewallEgressRule struct { func (x *FirewallEgressRule) Reset() { *x = FirewallEgressRule{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2071,7 +2016,7 @@ func (x *FirewallEgressRule) String() string { func (*FirewallEgressRule) ProtoMessage() {} func (x *FirewallEgressRule) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2084,7 +2029,7 @@ func (x *FirewallEgressRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallEgressRule.ProtoReflect.Descriptor instead. func (*FirewallEgressRule) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{22} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{21} } func (x *FirewallEgressRule) GetProtocol() IPProtocol { @@ -2134,7 +2079,7 @@ type FirewallIngressRule struct { func (x *FirewallIngressRule) Reset() { *x = FirewallIngressRule{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2146,7 +2091,7 @@ func (x *FirewallIngressRule) String() string { func (*FirewallIngressRule) ProtoMessage() {} func (x *FirewallIngressRule) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2159,7 +2104,7 @@ func (x *FirewallIngressRule) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallIngressRule.ProtoReflect.Descriptor instead. func (*FirewallIngressRule) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{23} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{22} } func (x *FirewallIngressRule) GetProtocol() IPProtocol { @@ -2224,7 +2169,7 @@ type MachineNetwork struct { func (x *MachineNetwork) Reset() { *x = MachineNetwork{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2236,7 +2181,7 @@ func (x *MachineNetwork) String() string { func (*MachineNetwork) ProtoMessage() {} func (x *MachineNetwork) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2249,7 +2194,7 @@ func (x *MachineNetwork) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNetwork.ProtoReflect.Descriptor instead. func (*MachineNetwork) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{24} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{23} } func (x *MachineNetwork) GetNetwork() string { @@ -2334,7 +2279,7 @@ type MachineHardware struct { func (x *MachineHardware) Reset() { *x = MachineHardware{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2346,7 +2291,7 @@ func (x *MachineHardware) String() string { func (*MachineHardware) ProtoMessage() {} func (x *MachineHardware) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2359,7 +2304,7 @@ func (x *MachineHardware) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineHardware.ProtoReflect.Descriptor instead. func (*MachineHardware) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{25} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{24} } func (x *MachineHardware) GetMemory() uint64 { @@ -2414,7 +2359,7 @@ type MetalCPU struct { func (x *MetalCPU) Reset() { *x = MetalCPU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2426,7 +2371,7 @@ func (x *MetalCPU) String() string { func (*MetalCPU) ProtoMessage() {} func (x *MetalCPU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2439,7 +2384,7 @@ func (x *MetalCPU) ProtoReflect() protoreflect.Message { // Deprecated: Use MetalCPU.ProtoReflect.Descriptor instead. func (*MetalCPU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{26} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{25} } func (x *MetalCPU) GetVendor() string { @@ -2483,7 +2428,7 @@ type MetalGPU struct { func (x *MetalGPU) Reset() { *x = MetalGPU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2495,7 +2440,7 @@ func (x *MetalGPU) String() string { func (*MetalGPU) ProtoMessage() {} func (x *MetalGPU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2508,7 +2453,7 @@ func (x *MetalGPU) ProtoReflect() protoreflect.Message { // Deprecated: Use MetalGPU.ProtoReflect.Descriptor instead. func (*MetalGPU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{27} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{26} } func (x *MetalGPU) GetVendor() string { @@ -2550,7 +2495,7 @@ type MachineNic struct { func (x *MachineNic) Reset() { *x = MachineNic{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2562,7 +2507,7 @@ func (x *MachineNic) String() string { func (*MachineNic) ProtoMessage() {} func (x *MachineNic) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2575,7 +2520,7 @@ func (x *MachineNic) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNic.ProtoReflect.Descriptor instead. func (*MachineNic) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{28} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{27} } func (x *MachineNic) GetMac() string { @@ -2647,7 +2592,7 @@ type MachineBlockDevice struct { func (x *MachineBlockDevice) Reset() { *x = MachineBlockDevice{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2659,7 +2604,7 @@ func (x *MachineBlockDevice) String() string { func (*MachineBlockDevice) ProtoMessage() {} func (x *MachineBlockDevice) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2672,7 +2617,7 @@ func (x *MachineBlockDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBlockDevice.ProtoReflect.Descriptor instead. func (*MachineBlockDevice) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{29} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{28} } func (x *MachineBlockDevice) GetName() string { @@ -2702,7 +2647,7 @@ type MachineChassisIdentifyLEDState struct { func (x *MachineChassisIdentifyLEDState) Reset() { *x = MachineChassisIdentifyLEDState{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2714,7 +2659,7 @@ func (x *MachineChassisIdentifyLEDState) String() string { func (*MachineChassisIdentifyLEDState) ProtoMessage() {} func (x *MachineChassisIdentifyLEDState) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2727,7 +2672,7 @@ func (x *MachineChassisIdentifyLEDState) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineChassisIdentifyLEDState.ProtoReflect.Descriptor instead. func (*MachineChassisIdentifyLEDState) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{30} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{29} } func (x *MachineChassisIdentifyLEDState) GetValue() string { @@ -2767,7 +2712,7 @@ type MachineBMCReport struct { func (x *MachineBMCReport) Reset() { *x = MachineBMCReport{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2779,7 +2724,7 @@ func (x *MachineBMCReport) String() string { func (*MachineBMCReport) ProtoMessage() {} func (x *MachineBMCReport) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2792,7 +2737,7 @@ func (x *MachineBMCReport) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMCReport.ProtoReflect.Descriptor instead. func (*MachineBMCReport) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{31} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{30} } func (x *MachineBMCReport) GetBmc() *MachineBMC { @@ -2859,7 +2804,7 @@ type MachineBios struct { func (x *MachineBios) Reset() { *x = MachineBios{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2871,7 +2816,7 @@ func (x *MachineBios) String() string { func (*MachineBios) ProtoMessage() {} func (x *MachineBios) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2884,7 +2829,7 @@ func (x *MachineBios) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBios.ProtoReflect.Descriptor instead. func (*MachineBios) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{32} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{31} } func (x *MachineBios) GetVersion() string { @@ -2931,7 +2876,7 @@ type MachineBMC struct { func (x *MachineBMC) Reset() { *x = MachineBMC{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2943,7 +2888,7 @@ func (x *MachineBMC) String() string { func (*MachineBMC) ProtoMessage() {} func (x *MachineBMC) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2956,7 +2901,7 @@ func (x *MachineBMC) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMC.ProtoReflect.Descriptor instead. func (*MachineBMC) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{33} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{32} } func (x *MachineBMC) GetAddress() string { @@ -3033,7 +2978,7 @@ type MachineFRU struct { func (x *MachineFRU) Reset() { *x = MachineFRU{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3045,7 +2990,7 @@ func (x *MachineFRU) String() string { func (*MachineFRU) ProtoMessage() {} func (x *MachineFRU) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3058,7 +3003,7 @@ func (x *MachineFRU) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineFRU.ProtoReflect.Descriptor instead. func (*MachineFRU) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{34} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{33} } func (x *MachineFRU) GetChassisPartNumber() string { @@ -3143,7 +3088,7 @@ type MachinePowerMetric struct { func (x *MachinePowerMetric) Reset() { *x = MachinePowerMetric{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3155,7 +3100,7 @@ func (x *MachinePowerMetric) String() string { func (*MachinePowerMetric) ProtoMessage() {} func (x *MachinePowerMetric) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3168,7 +3113,7 @@ func (x *MachinePowerMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use MachinePowerMetric.ProtoReflect.Descriptor instead. func (*MachinePowerMetric) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{35} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{34} } func (x *MachinePowerMetric) GetAverageConsumedWatts() float32 { @@ -3212,7 +3157,7 @@ type MachinePowerSupply struct { func (x *MachinePowerSupply) Reset() { *x = MachinePowerSupply{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3224,7 +3169,7 @@ func (x *MachinePowerSupply) String() string { func (*MachinePowerSupply) ProtoMessage() {} func (x *MachinePowerSupply) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3237,7 +3182,7 @@ func (x *MachinePowerSupply) ProtoReflect() protoreflect.Message { // Deprecated: Use MachinePowerSupply.ProtoReflect.Descriptor instead. func (*MachinePowerSupply) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{36} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{35} } func (x *MachinePowerSupply) GetHealth() string { @@ -3271,7 +3216,7 @@ type MachineRecentProvisioningEvents struct { func (x *MachineRecentProvisioningEvents) Reset() { *x = MachineRecentProvisioningEvents{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3283,7 +3228,7 @@ func (x *MachineRecentProvisioningEvents) String() string { func (*MachineRecentProvisioningEvents) ProtoMessage() {} func (x *MachineRecentProvisioningEvents) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3296,7 +3241,7 @@ func (x *MachineRecentProvisioningEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineRecentProvisioningEvents.ProtoReflect.Descriptor instead. func (*MachineRecentProvisioningEvents) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{37} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{36} } func (x *MachineRecentProvisioningEvents) GetEvents() []*MachineProvisioningEvent { @@ -3342,7 +3287,7 @@ type MachineProvisioningEvent struct { func (x *MachineProvisioningEvent) Reset() { *x = MachineProvisioningEvent{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3354,7 +3299,7 @@ func (x *MachineProvisioningEvent) String() string { func (*MachineProvisioningEvent) ProtoMessage() {} func (x *MachineProvisioningEvent) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3367,7 +3312,7 @@ func (x *MachineProvisioningEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineProvisioningEvent.ProtoReflect.Descriptor instead. func (*MachineProvisioningEvent) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{38} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{37} } func (x *MachineProvisioningEvent) GetTime() *timestamppb.Timestamp { @@ -3408,7 +3353,7 @@ type MachineVPN struct { func (x *MachineVPN) Reset() { *x = MachineVPN{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3420,7 +3365,7 @@ func (x *MachineVPN) String() string { func (*MachineVPN) ProtoMessage() {} func (x *MachineVPN) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3433,7 +3378,7 @@ func (x *MachineVPN) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineVPN.ProtoReflect.Descriptor instead. func (*MachineVPN) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{39} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{38} } func (x *MachineVPN) GetControlPlaneAddress() string { @@ -3510,7 +3455,7 @@ type MachineQuery struct { func (x *MachineQuery) Reset() { *x = MachineQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3522,7 +3467,7 @@ func (x *MachineQuery) String() string { func (*MachineQuery) ProtoMessage() {} func (x *MachineQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3535,7 +3480,7 @@ func (x *MachineQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineQuery.ProtoReflect.Descriptor instead. func (*MachineQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{40} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{39} } func (x *MachineQuery) GetUuid() string { @@ -3684,7 +3629,7 @@ type MachineAllocationQuery struct { func (x *MachineAllocationQuery) Reset() { *x = MachineAllocationQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3696,7 +3641,7 @@ func (x *MachineAllocationQuery) String() string { func (*MachineAllocationQuery) ProtoMessage() {} func (x *MachineAllocationQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,7 +3654,7 @@ func (x *MachineAllocationQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineAllocationQuery.ProtoReflect.Descriptor instead. func (*MachineAllocationQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{41} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{40} } func (x *MachineAllocationQuery) GetUuid() string { @@ -3796,7 +3741,7 @@ type MachineNetworkQuery struct { func (x *MachineNetworkQuery) Reset() { *x = MachineNetworkQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3808,7 +3753,7 @@ func (x *MachineNetworkQuery) String() string { func (*MachineNetworkQuery) ProtoMessage() {} func (x *MachineNetworkQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3821,7 +3766,7 @@ func (x *MachineNetworkQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNetworkQuery.ProtoReflect.Descriptor instead. func (*MachineNetworkQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{42} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{41} } func (x *MachineNetworkQuery) GetNetworks() []string { @@ -3883,7 +3828,7 @@ type MachineNicQuery struct { func (x *MachineNicQuery) Reset() { *x = MachineNicQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3895,7 +3840,7 @@ func (x *MachineNicQuery) String() string { func (*MachineNicQuery) ProtoMessage() {} func (x *MachineNicQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3908,7 +3853,7 @@ func (x *MachineNicQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineNicQuery.ProtoReflect.Descriptor instead. func (*MachineNicQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{43} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{42} } func (x *MachineNicQuery) GetMacs() []string { @@ -3952,7 +3897,7 @@ type MachineDiskQuery struct { func (x *MachineDiskQuery) Reset() { *x = MachineDiskQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3964,7 +3909,7 @@ func (x *MachineDiskQuery) String() string { func (*MachineDiskQuery) ProtoMessage() {} func (x *MachineDiskQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3977,7 +3922,7 @@ func (x *MachineDiskQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineDiskQuery.ProtoReflect.Descriptor instead. func (*MachineDiskQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{44} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{43} } func (x *MachineDiskQuery) GetNames() []string { @@ -4011,7 +3956,7 @@ type MachineBMCQuery struct { func (x *MachineBMCQuery) Reset() { *x = MachineBMCQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4023,7 +3968,7 @@ func (x *MachineBMCQuery) String() string { func (*MachineBMCQuery) ProtoMessage() {} func (x *MachineBMCQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4036,7 +3981,7 @@ func (x *MachineBMCQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineBMCQuery.ProtoReflect.Descriptor instead. func (*MachineBMCQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{45} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{44} } func (x *MachineBMCQuery) GetAddress() string { @@ -4092,7 +4037,7 @@ type MachineFRUQuery struct { func (x *MachineFRUQuery) Reset() { *x = MachineFRUQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4104,7 +4049,7 @@ func (x *MachineFRUQuery) String() string { func (*MachineFRUQuery) ProtoMessage() {} func (x *MachineFRUQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4117,7 +4062,7 @@ func (x *MachineFRUQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineFRUQuery.ProtoReflect.Descriptor instead. func (*MachineFRUQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{46} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{45} } func (x *MachineFRUQuery) GetChassisPartNumber() string { @@ -4189,7 +4134,7 @@ type MachineHardwareQuery struct { func (x *MachineHardwareQuery) Reset() { *x = MachineHardwareQuery{} - mi := &file_metalstack_api_v2_machine_proto_msgTypes[47] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4201,7 +4146,7 @@ func (x *MachineHardwareQuery) String() string { func (*MachineHardwareQuery) ProtoMessage() {} func (x *MachineHardwareQuery) ProtoReflect() protoreflect.Message { - mi := &file_metalstack_api_v2_machine_proto_msgTypes[47] + mi := &file_metalstack_api_v2_machine_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4214,7 +4159,7 @@ func (x *MachineHardwareQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineHardwareQuery.ProtoReflect.Descriptor instead. func (*MachineHardwareQuery) Descriptor() ([]byte, []int) { - return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{47} + return file_metalstack_api_v2_machine_proto_rawDescGZIP(), []int{46} } func (x *MachineHardwareQuery) GetMemory() uint64 { @@ -4240,7 +4185,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\"\xca\b\n" + + "\amachine\x18\x01 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\"\x90\b\n" + "\x1bMachineServiceCreateRequest\x12\"\n" + "\aproject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\aproject\x12!\n" + "\x04uuid\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x1f\n" + @@ -4255,8 +4200,7 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + " \x03(\tB\x11\xbaH\x0e\x92\x01\v\x102\"\ar\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n" + "\buserdata\x18\v \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\buserdata\x88\x01\x01\x121\n" + "\x06labels\x18\f \x01(\v2\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n" + - "\bnetworks\x18\r \x03(\v2+.metalstack.api.v2.MachineAllocationNetworkR\bnetworks\x128\n" + - "\x03ips\x18\x0e \x03(\v2&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n" + + "\bnetworks\x18\r \x03(\v2+.metalstack.api.v2.MachineAllocationNetworkR\bnetworks\x12/\n" + "\x0eplacement_tags\x18\x0f \x03(\tB\b\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12G\n" + "\vdns_servers\x18\x10 \x03(\v2\x1c.metalstack.api.v2.DNSServerB\b\xbaH\x05\x92\x01\x02\x10\x03R\n" + "dnsServers\x12G\n" + @@ -4353,15 +4297,11 @@ const file_metalstack_api_v2_machine_proto_rawDesc = "" + "\vntp_servers\x18\x10 \x03(\v2\x1c.metalstack.api.v2.NTPServerB\b\xbaH\x05\x92\x01\x02\x10\n" + "R\n" + "ntpServers\x12/\n" + - "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"n\n" + + "\x03vpn\x18\x11 \x01(\v2\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8e\x01\n" + "\x18MachineAllocationNetwork\x12%\n" + "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12+\n" + - "\x12no_auto_acquire_ip\x18\x02 \x01(\bR\x0fnoAutoAcquireIp\"i\n" + - "\x13MachineAllocationIp\x12\x17\n" + - "\x02ip\x18\x01 \x01(\tB\a\xbaH\x04r\x02p\x01R\x02ip\x12+\n" + - "\tnamespace\x18\x02 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01B\f\n" + - "\n" + - "_namespace\"\x90\x01\n" + + "\x12no_auto_acquire_ip\x18\x02 \x01(\bR\x0fnoAutoAcquireIp\x12\x1e\n" + + "\x03ips\x18\x03 \x03(\tB\f\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\x90\x01\n" + "\rFirewallRules\x12=\n" + "\x06egress\x18\x01 \x03(\v2%.metalstack.api.v2.FirewallEgressRuleR\x06egress\x12@\n" + "\aingress\x18\x02 \x03(\v2&.metalstack.api.v2.FirewallIngressRuleR\aingress\"\xd0\x01\n" + @@ -4680,7 +4620,7 @@ func file_metalstack_api_v2_machine_proto_rawDescGZIP() []byte { } var file_metalstack_api_v2_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_metalstack_api_v2_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 48) +var file_metalstack_api_v2_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_metalstack_api_v2_machine_proto_goTypes = []any{ (IPProtocol)(0), // 0: metalstack.api.v2.IPProtocol (MachineState)(0), // 1: metalstack.api.v2.MachineState @@ -4709,142 +4649,140 @@ var file_metalstack_api_v2_machine_proto_goTypes = []any{ (*MachineCondition)(nil), // 24: metalstack.api.v2.MachineCondition (*MachineAllocation)(nil), // 25: metalstack.api.v2.MachineAllocation (*MachineAllocationNetwork)(nil), // 26: metalstack.api.v2.MachineAllocationNetwork - (*MachineAllocationIp)(nil), // 27: metalstack.api.v2.MachineAllocationIp - (*FirewallRules)(nil), // 28: metalstack.api.v2.FirewallRules - (*FirewallEgressRule)(nil), // 29: metalstack.api.v2.FirewallEgressRule - (*FirewallIngressRule)(nil), // 30: metalstack.api.v2.FirewallIngressRule - (*MachineNetwork)(nil), // 31: metalstack.api.v2.MachineNetwork - (*MachineHardware)(nil), // 32: metalstack.api.v2.MachineHardware - (*MetalCPU)(nil), // 33: metalstack.api.v2.MetalCPU - (*MetalGPU)(nil), // 34: metalstack.api.v2.MetalGPU - (*MachineNic)(nil), // 35: metalstack.api.v2.MachineNic - (*MachineBlockDevice)(nil), // 36: metalstack.api.v2.MachineBlockDevice - (*MachineChassisIdentifyLEDState)(nil), // 37: metalstack.api.v2.MachineChassisIdentifyLEDState - (*MachineBMCReport)(nil), // 38: metalstack.api.v2.MachineBMCReport - (*MachineBios)(nil), // 39: metalstack.api.v2.MachineBios - (*MachineBMC)(nil), // 40: metalstack.api.v2.MachineBMC - (*MachineFRU)(nil), // 41: metalstack.api.v2.MachineFRU - (*MachinePowerMetric)(nil), // 42: metalstack.api.v2.MachinePowerMetric - (*MachinePowerSupply)(nil), // 43: metalstack.api.v2.MachinePowerSupply - (*MachineRecentProvisioningEvents)(nil), // 44: metalstack.api.v2.MachineRecentProvisioningEvents - (*MachineProvisioningEvent)(nil), // 45: metalstack.api.v2.MachineProvisioningEvent - (*MachineVPN)(nil), // 46: metalstack.api.v2.MachineVPN - (*MachineQuery)(nil), // 47: metalstack.api.v2.MachineQuery - (*MachineAllocationQuery)(nil), // 48: metalstack.api.v2.MachineAllocationQuery - (*MachineNetworkQuery)(nil), // 49: metalstack.api.v2.MachineNetworkQuery - (*MachineNicQuery)(nil), // 50: metalstack.api.v2.MachineNicQuery - (*MachineDiskQuery)(nil), // 51: metalstack.api.v2.MachineDiskQuery - (*MachineBMCQuery)(nil), // 52: metalstack.api.v2.MachineBMCQuery - (*MachineFRUQuery)(nil), // 53: metalstack.api.v2.MachineFRUQuery - (*MachineHardwareQuery)(nil), // 54: metalstack.api.v2.MachineHardwareQuery - (*Labels)(nil), // 55: metalstack.api.v2.Labels - (*DNSServer)(nil), // 56: metalstack.api.v2.DNSServer - (*NTPServer)(nil), // 57: metalstack.api.v2.NTPServer - (*UpdateMeta)(nil), // 58: metalstack.api.v2.UpdateMeta - (*UpdateLabels)(nil), // 59: metalstack.api.v2.UpdateLabels - (*Meta)(nil), // 60: metalstack.api.v2.Meta - (*Partition)(nil), // 61: metalstack.api.v2.Partition - (*Size)(nil), // 62: metalstack.api.v2.Size - (*Image)(nil), // 63: metalstack.api.v2.Image - (*FilesystemLayout)(nil), // 64: metalstack.api.v2.FilesystemLayout - (NetworkType)(0), // 65: metalstack.api.v2.NetworkType - (NATType)(0), // 66: metalstack.api.v2.NATType - (*timestamppb.Timestamp)(nil), // 67: google.protobuf.Timestamp + (*FirewallRules)(nil), // 27: metalstack.api.v2.FirewallRules + (*FirewallEgressRule)(nil), // 28: metalstack.api.v2.FirewallEgressRule + (*FirewallIngressRule)(nil), // 29: metalstack.api.v2.FirewallIngressRule + (*MachineNetwork)(nil), // 30: metalstack.api.v2.MachineNetwork + (*MachineHardware)(nil), // 31: metalstack.api.v2.MachineHardware + (*MetalCPU)(nil), // 32: metalstack.api.v2.MetalCPU + (*MetalGPU)(nil), // 33: metalstack.api.v2.MetalGPU + (*MachineNic)(nil), // 34: metalstack.api.v2.MachineNic + (*MachineBlockDevice)(nil), // 35: metalstack.api.v2.MachineBlockDevice + (*MachineChassisIdentifyLEDState)(nil), // 36: metalstack.api.v2.MachineChassisIdentifyLEDState + (*MachineBMCReport)(nil), // 37: metalstack.api.v2.MachineBMCReport + (*MachineBios)(nil), // 38: metalstack.api.v2.MachineBios + (*MachineBMC)(nil), // 39: metalstack.api.v2.MachineBMC + (*MachineFRU)(nil), // 40: metalstack.api.v2.MachineFRU + (*MachinePowerMetric)(nil), // 41: metalstack.api.v2.MachinePowerMetric + (*MachinePowerSupply)(nil), // 42: metalstack.api.v2.MachinePowerSupply + (*MachineRecentProvisioningEvents)(nil), // 43: metalstack.api.v2.MachineRecentProvisioningEvents + (*MachineProvisioningEvent)(nil), // 44: metalstack.api.v2.MachineProvisioningEvent + (*MachineVPN)(nil), // 45: metalstack.api.v2.MachineVPN + (*MachineQuery)(nil), // 46: metalstack.api.v2.MachineQuery + (*MachineAllocationQuery)(nil), // 47: metalstack.api.v2.MachineAllocationQuery + (*MachineNetworkQuery)(nil), // 48: metalstack.api.v2.MachineNetworkQuery + (*MachineNicQuery)(nil), // 49: metalstack.api.v2.MachineNicQuery + (*MachineDiskQuery)(nil), // 50: metalstack.api.v2.MachineDiskQuery + (*MachineBMCQuery)(nil), // 51: metalstack.api.v2.MachineBMCQuery + (*MachineFRUQuery)(nil), // 52: metalstack.api.v2.MachineFRUQuery + (*MachineHardwareQuery)(nil), // 53: metalstack.api.v2.MachineHardwareQuery + (*Labels)(nil), // 54: metalstack.api.v2.Labels + (*DNSServer)(nil), // 55: metalstack.api.v2.DNSServer + (*NTPServer)(nil), // 56: metalstack.api.v2.NTPServer + (*UpdateMeta)(nil), // 57: metalstack.api.v2.UpdateMeta + (*UpdateLabels)(nil), // 58: metalstack.api.v2.UpdateLabels + (*Meta)(nil), // 59: metalstack.api.v2.Meta + (*Partition)(nil), // 60: metalstack.api.v2.Partition + (*Size)(nil), // 61: metalstack.api.v2.Size + (*Image)(nil), // 62: metalstack.api.v2.Image + (*FilesystemLayout)(nil), // 63: metalstack.api.v2.FilesystemLayout + (NetworkType)(0), // 64: metalstack.api.v2.NetworkType + (NATType)(0), // 65: metalstack.api.v2.NATType + (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp } var file_metalstack_api_v2_machine_proto_depIdxs = []int32{ 22, // 0: metalstack.api.v2.MachineServiceGetResponse.machine:type_name -> metalstack.api.v2.Machine - 55, // 1: metalstack.api.v2.MachineServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels + 54, // 1: metalstack.api.v2.MachineServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels 26, // 2: metalstack.api.v2.MachineServiceCreateRequest.networks:type_name -> metalstack.api.v2.MachineAllocationNetwork - 27, // 3: metalstack.api.v2.MachineServiceCreateRequest.ips:type_name -> metalstack.api.v2.MachineAllocationIp - 56, // 4: metalstack.api.v2.MachineServiceCreateRequest.dns_servers:type_name -> metalstack.api.v2.DNSServer - 57, // 5: metalstack.api.v2.MachineServiceCreateRequest.ntp_servers:type_name -> metalstack.api.v2.NTPServer - 5, // 6: metalstack.api.v2.MachineServiceCreateRequest.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 10, // 7: metalstack.api.v2.MachineServiceCreateRequest.firewall_spec:type_name -> metalstack.api.v2.FirewallSpec - 28, // 8: metalstack.api.v2.FirewallSpec.firewall_rules:type_name -> metalstack.api.v2.FirewallRules - 22, // 9: metalstack.api.v2.MachineServiceCreateResponse.machine:type_name -> metalstack.api.v2.Machine - 58, // 10: metalstack.api.v2.MachineServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta - 59, // 11: metalstack.api.v2.MachineServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels - 22, // 12: metalstack.api.v2.MachineServiceUpdateResponse.machine:type_name -> metalstack.api.v2.Machine - 47, // 13: metalstack.api.v2.MachineServiceListRequest.query:type_name -> metalstack.api.v2.MachineQuery - 22, // 14: metalstack.api.v2.MachineServiceListResponse.machines:type_name -> metalstack.api.v2.Machine - 22, // 15: metalstack.api.v2.MachineServiceDeleteResponse.machine:type_name -> metalstack.api.v2.Machine - 6, // 16: metalstack.api.v2.MachineServiceBMCCommandRequest.command:type_name -> metalstack.api.v2.MachineBMCCommand - 38, // 17: metalstack.api.v2.MachineServiceGetBMCResponse.bmc:type_name -> metalstack.api.v2.MachineBMCReport - 60, // 18: metalstack.api.v2.Machine.meta:type_name -> metalstack.api.v2.Meta - 61, // 19: metalstack.api.v2.Machine.partition:type_name -> metalstack.api.v2.Partition - 62, // 20: metalstack.api.v2.Machine.size:type_name -> metalstack.api.v2.Size - 32, // 21: metalstack.api.v2.Machine.hardware:type_name -> metalstack.api.v2.MachineHardware - 25, // 22: metalstack.api.v2.Machine.allocation:type_name -> metalstack.api.v2.MachineAllocation - 23, // 23: metalstack.api.v2.Machine.status:type_name -> metalstack.api.v2.MachineStatus - 44, // 24: metalstack.api.v2.Machine.recent_provisioning_events:type_name -> metalstack.api.v2.MachineRecentProvisioningEvents - 24, // 25: metalstack.api.v2.MachineStatus.condition:type_name -> metalstack.api.v2.MachineCondition - 37, // 26: metalstack.api.v2.MachineStatus.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState - 4, // 27: metalstack.api.v2.MachineStatus.liveliness:type_name -> metalstack.api.v2.MachineLiveliness - 1, // 28: metalstack.api.v2.MachineCondition.state:type_name -> metalstack.api.v2.MachineState - 60, // 29: metalstack.api.v2.MachineAllocation.meta:type_name -> metalstack.api.v2.Meta - 63, // 30: metalstack.api.v2.MachineAllocation.image:type_name -> metalstack.api.v2.Image - 64, // 31: metalstack.api.v2.MachineAllocation.filesystem_layout:type_name -> metalstack.api.v2.FilesystemLayout - 31, // 32: metalstack.api.v2.MachineAllocation.networks:type_name -> metalstack.api.v2.MachineNetwork - 5, // 33: metalstack.api.v2.MachineAllocation.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 28, // 34: metalstack.api.v2.MachineAllocation.firewall_rules:type_name -> metalstack.api.v2.FirewallRules - 56, // 35: metalstack.api.v2.MachineAllocation.dns_servers:type_name -> metalstack.api.v2.DNSServer - 57, // 36: metalstack.api.v2.MachineAllocation.ntp_servers:type_name -> metalstack.api.v2.NTPServer - 46, // 37: metalstack.api.v2.MachineAllocation.vpn:type_name -> metalstack.api.v2.MachineVPN - 29, // 38: metalstack.api.v2.FirewallRules.egress:type_name -> metalstack.api.v2.FirewallEgressRule - 30, // 39: metalstack.api.v2.FirewallRules.ingress:type_name -> metalstack.api.v2.FirewallIngressRule - 0, // 40: metalstack.api.v2.FirewallEgressRule.protocol:type_name -> metalstack.api.v2.IPProtocol - 0, // 41: metalstack.api.v2.FirewallIngressRule.protocol:type_name -> metalstack.api.v2.IPProtocol - 65, // 42: metalstack.api.v2.MachineNetwork.network_type:type_name -> metalstack.api.v2.NetworkType - 66, // 43: metalstack.api.v2.MachineNetwork.nat_type:type_name -> metalstack.api.v2.NATType - 36, // 44: metalstack.api.v2.MachineHardware.disks:type_name -> metalstack.api.v2.MachineBlockDevice - 33, // 45: metalstack.api.v2.MachineHardware.cpus:type_name -> metalstack.api.v2.MetalCPU - 34, // 46: metalstack.api.v2.MachineHardware.gpus:type_name -> metalstack.api.v2.MetalGPU - 35, // 47: metalstack.api.v2.MachineHardware.nics:type_name -> metalstack.api.v2.MachineNic - 35, // 48: metalstack.api.v2.MachineNic.neighbors:type_name -> metalstack.api.v2.MachineNic - 40, // 49: metalstack.api.v2.MachineBMCReport.bmc:type_name -> metalstack.api.v2.MachineBMC - 39, // 50: metalstack.api.v2.MachineBMCReport.bios:type_name -> metalstack.api.v2.MachineBios - 41, // 51: metalstack.api.v2.MachineBMCReport.fru:type_name -> metalstack.api.v2.MachineFRU - 42, // 52: metalstack.api.v2.MachineBMCReport.power_metric:type_name -> metalstack.api.v2.MachinePowerMetric - 43, // 53: metalstack.api.v2.MachineBMCReport.power_supplies:type_name -> metalstack.api.v2.MachinePowerSupply - 37, // 54: metalstack.api.v2.MachineBMCReport.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState - 67, // 55: metalstack.api.v2.MachineBMCReport.updated_at:type_name -> google.protobuf.Timestamp - 45, // 56: metalstack.api.v2.MachineRecentProvisioningEvents.events:type_name -> metalstack.api.v2.MachineProvisioningEvent - 67, // 57: metalstack.api.v2.MachineRecentProvisioningEvents.last_event_time:type_name -> google.protobuf.Timestamp - 45, // 58: metalstack.api.v2.MachineRecentProvisioningEvents.last_error_event:type_name -> metalstack.api.v2.MachineProvisioningEvent - 2, // 59: metalstack.api.v2.MachineRecentProvisioningEvents.state:type_name -> metalstack.api.v2.MachineProvisioningEventState - 67, // 60: metalstack.api.v2.MachineProvisioningEvent.time:type_name -> google.protobuf.Timestamp - 3, // 61: metalstack.api.v2.MachineProvisioningEvent.event:type_name -> metalstack.api.v2.MachineProvisioningEventType - 55, // 62: metalstack.api.v2.MachineQuery.labels:type_name -> metalstack.api.v2.Labels - 48, // 63: metalstack.api.v2.MachineQuery.allocation:type_name -> metalstack.api.v2.MachineAllocationQuery - 49, // 64: metalstack.api.v2.MachineQuery.network:type_name -> metalstack.api.v2.MachineNetworkQuery - 50, // 65: metalstack.api.v2.MachineQuery.nic:type_name -> metalstack.api.v2.MachineNicQuery - 51, // 66: metalstack.api.v2.MachineQuery.disk:type_name -> metalstack.api.v2.MachineDiskQuery - 52, // 67: metalstack.api.v2.MachineQuery.bmc:type_name -> metalstack.api.v2.MachineBMCQuery - 53, // 68: metalstack.api.v2.MachineQuery.fru:type_name -> metalstack.api.v2.MachineFRUQuery - 54, // 69: metalstack.api.v2.MachineQuery.hardware:type_name -> metalstack.api.v2.MachineHardwareQuery - 1, // 70: metalstack.api.v2.MachineQuery.state:type_name -> metalstack.api.v2.MachineState - 5, // 71: metalstack.api.v2.MachineAllocationQuery.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType - 55, // 72: metalstack.api.v2.MachineAllocationQuery.labels:type_name -> metalstack.api.v2.Labels - 46, // 73: metalstack.api.v2.MachineAllocationQuery.vpn:type_name -> metalstack.api.v2.MachineVPN - 7, // 74: metalstack.api.v2.MachineService.Get:input_type -> metalstack.api.v2.MachineServiceGetRequest - 9, // 75: metalstack.api.v2.MachineService.Create:input_type -> metalstack.api.v2.MachineServiceCreateRequest - 12, // 76: metalstack.api.v2.MachineService.Update:input_type -> metalstack.api.v2.MachineServiceUpdateRequest - 14, // 77: metalstack.api.v2.MachineService.List:input_type -> metalstack.api.v2.MachineServiceListRequest - 16, // 78: metalstack.api.v2.MachineService.Delete:input_type -> metalstack.api.v2.MachineServiceDeleteRequest - 18, // 79: metalstack.api.v2.MachineService.BMCCommand:input_type -> metalstack.api.v2.MachineServiceBMCCommandRequest - 20, // 80: metalstack.api.v2.MachineService.GetBMC:input_type -> metalstack.api.v2.MachineServiceGetBMCRequest - 8, // 81: metalstack.api.v2.MachineService.Get:output_type -> metalstack.api.v2.MachineServiceGetResponse - 11, // 82: metalstack.api.v2.MachineService.Create:output_type -> metalstack.api.v2.MachineServiceCreateResponse - 13, // 83: metalstack.api.v2.MachineService.Update:output_type -> metalstack.api.v2.MachineServiceUpdateResponse - 15, // 84: metalstack.api.v2.MachineService.List:output_type -> metalstack.api.v2.MachineServiceListResponse - 17, // 85: metalstack.api.v2.MachineService.Delete:output_type -> metalstack.api.v2.MachineServiceDeleteResponse - 19, // 86: metalstack.api.v2.MachineService.BMCCommand:output_type -> metalstack.api.v2.MachineServiceBMCCommandResponse - 21, // 87: metalstack.api.v2.MachineService.GetBMC:output_type -> metalstack.api.v2.MachineServiceGetBMCResponse - 81, // [81:88] is the sub-list for method output_type - 74, // [74:81] is the sub-list for method input_type - 74, // [74:74] is the sub-list for extension type_name - 74, // [74:74] is the sub-list for extension extendee - 0, // [0:74] is the sub-list for field type_name + 55, // 3: metalstack.api.v2.MachineServiceCreateRequest.dns_servers:type_name -> metalstack.api.v2.DNSServer + 56, // 4: metalstack.api.v2.MachineServiceCreateRequest.ntp_servers:type_name -> metalstack.api.v2.NTPServer + 5, // 5: metalstack.api.v2.MachineServiceCreateRequest.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 10, // 6: metalstack.api.v2.MachineServiceCreateRequest.firewall_spec:type_name -> metalstack.api.v2.FirewallSpec + 27, // 7: metalstack.api.v2.FirewallSpec.firewall_rules:type_name -> metalstack.api.v2.FirewallRules + 22, // 8: metalstack.api.v2.MachineServiceCreateResponse.machine:type_name -> metalstack.api.v2.Machine + 57, // 9: metalstack.api.v2.MachineServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta + 58, // 10: metalstack.api.v2.MachineServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels + 22, // 11: metalstack.api.v2.MachineServiceUpdateResponse.machine:type_name -> metalstack.api.v2.Machine + 46, // 12: metalstack.api.v2.MachineServiceListRequest.query:type_name -> metalstack.api.v2.MachineQuery + 22, // 13: metalstack.api.v2.MachineServiceListResponse.machines:type_name -> metalstack.api.v2.Machine + 22, // 14: metalstack.api.v2.MachineServiceDeleteResponse.machine:type_name -> metalstack.api.v2.Machine + 6, // 15: metalstack.api.v2.MachineServiceBMCCommandRequest.command:type_name -> metalstack.api.v2.MachineBMCCommand + 37, // 16: metalstack.api.v2.MachineServiceGetBMCResponse.bmc:type_name -> metalstack.api.v2.MachineBMCReport + 59, // 17: metalstack.api.v2.Machine.meta:type_name -> metalstack.api.v2.Meta + 60, // 18: metalstack.api.v2.Machine.partition:type_name -> metalstack.api.v2.Partition + 61, // 19: metalstack.api.v2.Machine.size:type_name -> metalstack.api.v2.Size + 31, // 20: metalstack.api.v2.Machine.hardware:type_name -> metalstack.api.v2.MachineHardware + 25, // 21: metalstack.api.v2.Machine.allocation:type_name -> metalstack.api.v2.MachineAllocation + 23, // 22: metalstack.api.v2.Machine.status:type_name -> metalstack.api.v2.MachineStatus + 43, // 23: metalstack.api.v2.Machine.recent_provisioning_events:type_name -> metalstack.api.v2.MachineRecentProvisioningEvents + 24, // 24: metalstack.api.v2.MachineStatus.condition:type_name -> metalstack.api.v2.MachineCondition + 36, // 25: metalstack.api.v2.MachineStatus.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState + 4, // 26: metalstack.api.v2.MachineStatus.liveliness:type_name -> metalstack.api.v2.MachineLiveliness + 1, // 27: metalstack.api.v2.MachineCondition.state:type_name -> metalstack.api.v2.MachineState + 59, // 28: metalstack.api.v2.MachineAllocation.meta:type_name -> metalstack.api.v2.Meta + 62, // 29: metalstack.api.v2.MachineAllocation.image:type_name -> metalstack.api.v2.Image + 63, // 30: metalstack.api.v2.MachineAllocation.filesystem_layout:type_name -> metalstack.api.v2.FilesystemLayout + 30, // 31: metalstack.api.v2.MachineAllocation.networks:type_name -> metalstack.api.v2.MachineNetwork + 5, // 32: metalstack.api.v2.MachineAllocation.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 27, // 33: metalstack.api.v2.MachineAllocation.firewall_rules:type_name -> metalstack.api.v2.FirewallRules + 55, // 34: metalstack.api.v2.MachineAllocation.dns_servers:type_name -> metalstack.api.v2.DNSServer + 56, // 35: metalstack.api.v2.MachineAllocation.ntp_servers:type_name -> metalstack.api.v2.NTPServer + 45, // 36: metalstack.api.v2.MachineAllocation.vpn:type_name -> metalstack.api.v2.MachineVPN + 28, // 37: metalstack.api.v2.FirewallRules.egress:type_name -> metalstack.api.v2.FirewallEgressRule + 29, // 38: metalstack.api.v2.FirewallRules.ingress:type_name -> metalstack.api.v2.FirewallIngressRule + 0, // 39: metalstack.api.v2.FirewallEgressRule.protocol:type_name -> metalstack.api.v2.IPProtocol + 0, // 40: metalstack.api.v2.FirewallIngressRule.protocol:type_name -> metalstack.api.v2.IPProtocol + 64, // 41: metalstack.api.v2.MachineNetwork.network_type:type_name -> metalstack.api.v2.NetworkType + 65, // 42: metalstack.api.v2.MachineNetwork.nat_type:type_name -> metalstack.api.v2.NATType + 35, // 43: metalstack.api.v2.MachineHardware.disks:type_name -> metalstack.api.v2.MachineBlockDevice + 32, // 44: metalstack.api.v2.MachineHardware.cpus:type_name -> metalstack.api.v2.MetalCPU + 33, // 45: metalstack.api.v2.MachineHardware.gpus:type_name -> metalstack.api.v2.MetalGPU + 34, // 46: metalstack.api.v2.MachineHardware.nics:type_name -> metalstack.api.v2.MachineNic + 34, // 47: metalstack.api.v2.MachineNic.neighbors:type_name -> metalstack.api.v2.MachineNic + 39, // 48: metalstack.api.v2.MachineBMCReport.bmc:type_name -> metalstack.api.v2.MachineBMC + 38, // 49: metalstack.api.v2.MachineBMCReport.bios:type_name -> metalstack.api.v2.MachineBios + 40, // 50: metalstack.api.v2.MachineBMCReport.fru:type_name -> metalstack.api.v2.MachineFRU + 41, // 51: metalstack.api.v2.MachineBMCReport.power_metric:type_name -> metalstack.api.v2.MachinePowerMetric + 42, // 52: metalstack.api.v2.MachineBMCReport.power_supplies:type_name -> metalstack.api.v2.MachinePowerSupply + 36, // 53: metalstack.api.v2.MachineBMCReport.led_state:type_name -> metalstack.api.v2.MachineChassisIdentifyLEDState + 66, // 54: metalstack.api.v2.MachineBMCReport.updated_at:type_name -> google.protobuf.Timestamp + 44, // 55: metalstack.api.v2.MachineRecentProvisioningEvents.events:type_name -> metalstack.api.v2.MachineProvisioningEvent + 66, // 56: metalstack.api.v2.MachineRecentProvisioningEvents.last_event_time:type_name -> google.protobuf.Timestamp + 44, // 57: metalstack.api.v2.MachineRecentProvisioningEvents.last_error_event:type_name -> metalstack.api.v2.MachineProvisioningEvent + 2, // 58: metalstack.api.v2.MachineRecentProvisioningEvents.state:type_name -> metalstack.api.v2.MachineProvisioningEventState + 66, // 59: metalstack.api.v2.MachineProvisioningEvent.time:type_name -> google.protobuf.Timestamp + 3, // 60: metalstack.api.v2.MachineProvisioningEvent.event:type_name -> metalstack.api.v2.MachineProvisioningEventType + 54, // 61: metalstack.api.v2.MachineQuery.labels:type_name -> metalstack.api.v2.Labels + 47, // 62: metalstack.api.v2.MachineQuery.allocation:type_name -> metalstack.api.v2.MachineAllocationQuery + 48, // 63: metalstack.api.v2.MachineQuery.network:type_name -> metalstack.api.v2.MachineNetworkQuery + 49, // 64: metalstack.api.v2.MachineQuery.nic:type_name -> metalstack.api.v2.MachineNicQuery + 50, // 65: metalstack.api.v2.MachineQuery.disk:type_name -> metalstack.api.v2.MachineDiskQuery + 51, // 66: metalstack.api.v2.MachineQuery.bmc:type_name -> metalstack.api.v2.MachineBMCQuery + 52, // 67: metalstack.api.v2.MachineQuery.fru:type_name -> metalstack.api.v2.MachineFRUQuery + 53, // 68: metalstack.api.v2.MachineQuery.hardware:type_name -> metalstack.api.v2.MachineHardwareQuery + 1, // 69: metalstack.api.v2.MachineQuery.state:type_name -> metalstack.api.v2.MachineState + 5, // 70: metalstack.api.v2.MachineAllocationQuery.allocation_type:type_name -> metalstack.api.v2.MachineAllocationType + 54, // 71: metalstack.api.v2.MachineAllocationQuery.labels:type_name -> metalstack.api.v2.Labels + 45, // 72: metalstack.api.v2.MachineAllocationQuery.vpn:type_name -> metalstack.api.v2.MachineVPN + 7, // 73: metalstack.api.v2.MachineService.Get:input_type -> metalstack.api.v2.MachineServiceGetRequest + 9, // 74: metalstack.api.v2.MachineService.Create:input_type -> metalstack.api.v2.MachineServiceCreateRequest + 12, // 75: metalstack.api.v2.MachineService.Update:input_type -> metalstack.api.v2.MachineServiceUpdateRequest + 14, // 76: metalstack.api.v2.MachineService.List:input_type -> metalstack.api.v2.MachineServiceListRequest + 16, // 77: metalstack.api.v2.MachineService.Delete:input_type -> metalstack.api.v2.MachineServiceDeleteRequest + 18, // 78: metalstack.api.v2.MachineService.BMCCommand:input_type -> metalstack.api.v2.MachineServiceBMCCommandRequest + 20, // 79: metalstack.api.v2.MachineService.GetBMC:input_type -> metalstack.api.v2.MachineServiceGetBMCRequest + 8, // 80: metalstack.api.v2.MachineService.Get:output_type -> metalstack.api.v2.MachineServiceGetResponse + 11, // 81: metalstack.api.v2.MachineService.Create:output_type -> metalstack.api.v2.MachineServiceCreateResponse + 13, // 82: metalstack.api.v2.MachineService.Update:output_type -> metalstack.api.v2.MachineServiceUpdateResponse + 15, // 83: metalstack.api.v2.MachineService.List:output_type -> metalstack.api.v2.MachineServiceListResponse + 17, // 84: metalstack.api.v2.MachineService.Delete:output_type -> metalstack.api.v2.MachineServiceDeleteResponse + 19, // 85: metalstack.api.v2.MachineService.BMCCommand:output_type -> metalstack.api.v2.MachineServiceBMCCommandResponse + 21, // 86: metalstack.api.v2.MachineService.GetBMC:output_type -> metalstack.api.v2.MachineServiceGetBMCResponse + 80, // [80:87] is the sub-list for method output_type + 73, // [73:80] is the sub-list for method input_type + 73, // [73:73] is the sub-list for extension type_name + 73, // [73:73] is the sub-list for extension extendee + 0, // [0:73] is the sub-list for field type_name } func init() { file_metalstack_api_v2_machine_proto_init() } @@ -4861,21 +4799,20 @@ 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[5].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[20].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[24].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[34].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[23].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[33].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[39].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[40].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[41].OneofWrappers = []any{} + file_metalstack_api_v2_machine_proto_msgTypes[44].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[45].OneofWrappers = []any{} file_metalstack_api_v2_machine_proto_msgTypes[46].OneofWrappers = []any{} - file_metalstack_api_v2_machine_proto_msgTypes[47].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_machine_proto_rawDesc), len(file_metalstack_api_v2_machine_proto_rawDesc)), NumEnums: 7, - NumMessages: 48, + NumMessages: 47, NumExtensions: 0, NumServices: 1, }, diff --git a/js/metalstack/api/v2/machine_pb.d.ts b/js/metalstack/api/v2/machine_pb.d.ts index 74bcc7d4..d2140220 100644 --- a/js/metalstack/api/v2/machine_pb.d.ts +++ b/js/metalstack/api/v2/machine_pb.d.ts @@ -141,12 +141,6 @@ export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServ * @generated from field: repeated metalstack.api.v2.MachineAllocationNetwork networks = 13; */ networks: MachineAllocationNetwork[]; - /** - * IPs to to attach to this machine additionally - * - * @generated from field: repeated metalstack.api.v2.MachineAllocationIp ips = 14; - */ - ips: MachineAllocationIp[]; /** * PlacementTags by default machines are spread across the racks inside a partition for every project. * if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags @@ -725,36 +719,18 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat * @generated from field: bool no_auto_acquire_ip = 2; */ noAutoAcquireIp: boolean; -}; -/** - * Describes the message metalstack.api.v2.MachineAllocationNetwork. - * Use `create(MachineAllocationNetworkSchema)` to create a new message. - */ -export declare const MachineAllocationNetworkSchema: GenMessage; -/** - * MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create - * - * @generated from message metalstack.api.v2.MachineAllocationIp - */ -export type MachineAllocationIp = Message<"metalstack.api.v2.MachineAllocationIp"> & { - /** - * IP to to attach to this machine additionally - * - * @generated from field: string ip = 1; - */ - ip: string; /** - * Namespace where this ip was created, usually the project of the namespaced tenant network. + * IPs to to attach to this machine additionally * - * @generated from field: optional string namespace = 2; + * @generated from field: repeated string ips = 3; */ - namespace?: string; + ips: string[]; }; /** - * Describes the message metalstack.api.v2.MachineAllocationIp. - * Use `create(MachineAllocationIpSchema)` to create a new message. + * Describes the message metalstack.api.v2.MachineAllocationNetwork. + * Use `create(MachineAllocationNetworkSchema)` to create a new message. */ -export declare const MachineAllocationIpSchema: GenMessage; +export declare const MachineAllocationNetworkSchema: GenMessage; /** * FirewallRules can be defined during firewall allocation * diff --git a/js/metalstack/api/v2/machine_pb.js b/js/metalstack/api/v2/machine_pb.js index 647d338d..874f0317 100644 --- a/js/metalstack/api/v2/machine_pb.js +++ b/js/metalstack/api/v2/machine_pb.js @@ -14,7 +14,7 @@ import { file_metalstack_api_v2_size } from "./size_pb"; /** * Describes the file metalstack/api/v2/machine.proto. */ -export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOIlQKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIaChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAgiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQixgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0SHgoHcHJvamVjdBgJIAEoCUIIukgFcgOwAQFIAIgBAUIKCghfcHJvamVjdCLaAQoPTWFjaGluZUhhcmR3YXJlEg4KBm1lbW9yeRgBIAEoBBI0CgVkaXNrcxgDIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCbG9ja0RldmljZRIpCgRjcHVzGAQgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxDUFUSKQoEZ3B1cxgFIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsR1BVEisKBG5pY3MYBiADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljIl0KCE1ldGFsQ1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACEg0KBWNvcmVzGAMgASgNEg8KB3RocmVhZHMYBCABKA0iPQoITWV0YWxHUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAIi5QEKCk1hY2hpbmVOaWMSGAoDbWFjGAEgASgJQgu6SAhyBrizrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIcCgppZGVudGlmaWVyGAMgASgJQgi6SAVyAxiAARIYCgZ2ZW5kb3IYBCABKAlCCLpIBXIDGIABEhcKBW1vZGVsGAUgASgJQgi6SAVyAxiAARINCgVzcGVlZBgGIAEoBBIwCgluZWlnaGJvcnMYByADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljEhAKCGhvc3RuYW1lGAggASgJIj0KEk1hY2hpbmVCbG9ja0RldmljZRIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIMCgRzaXplGAIgASgEIlsKHk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIXCgV2YWx1ZRgBIAEoCUIIukgFcgMYgAESIAoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBIooDChBNYWNoaW5lQk1DUmVwb3J0EioKA2JtYxgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUMSLAoEYmlvcxgCIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEioKA2ZydRgDIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlUSOwoMcG93ZXJfbWV0cmljGAQgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyTWV0cmljEj0KDnBvd2VyX3N1cHBsaWVzGAUgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyU3VwcGx5EkQKCWxlZF9zdGF0ZRgGIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJjCgtNYWNoaW5lQmlvcxIcCgd2ZXJzaW9uGAEgASgJQgu6SAhyBsizrrECARIbCgZ2ZW5kb3IYAiABKAlCC7pICHIGyLOusQIBEhkKBGRhdGUYAyABKAlCC7pICHIGyLOusQIBItsBCgpNYWNoaW5lQk1DEhkKB2FkZHJlc3MYASABKAlCCLpIBXIDgAIBEhgKA21hYxgCIAEoCUILukgIcga4s66xAgESGQoEdXNlchgDIAEoCUILukgIcgbIs66xAgESHQoIcGFzc3dvcmQYBCABKAlCC7pICHIGyLOusQIBEh4KCWludGVyZmFjZRgFIAEoCUILukgIcgbIs66xAgESHAoHdmVyc2lvbhgHIAEoCUILukgIcgbIs66xAgESIAoLcG93ZXJfc3RhdGUYCCABKAlCC7pICHIGyLOusQIBIp4ECgpNYWNoaW5lRlJVEi0KE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCC7pICHIGyLOusQIBSACIAQESLQoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglib2FyZF9tZmcYAyABKAlCC7pICHIGyLOusQIBSAKIAQESKgoQYm9hcmRfbWZnX3NlcmlhbBgEIAEoCUILukgIcgbIs66xAgFIA4gBARIrChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUILukgIcgbIs66xAgFIBIgBARIuChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUILukgIcgbIs66xAgFIBYgBARItChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgu6SAhyBsizrrECAUgGiAEBEigKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgu6SAhyBsizrrECAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCEwoRX2JvYXJkX21mZ19zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwihQEKEk1hY2hpbmVQb3dlck1ldHJpYxIeChZhdmVyYWdlX2NvbnN1bWVkX3dhdHRzGAEgASgCEhcKD2ludGVydmFsX2luX21pbhgCIAEoAhIaChJtYXhfY29uc3VtZWRfd2F0dHMYAyABKAISGgoSbWluX2NvbnN1bWVkX3dhdHRzGAQgASgCIjMKEk1hY2hpbmVQb3dlclN1cHBseRIOCgZoZWFsdGgYASABKAkSDQoFc3RhdGUYAiABKAkipQIKH01hY2hpbmVSZWNlbnRQcm92aXNpb25pbmdFdmVudHMSOwoGZXZlbnRzGAEgAygLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EjMKD2xhc3RfZXZlbnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoQbGFzdF9lcnJvcl9ldmVudBgDIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBJJCgVzdGF0ZRgEIAEoDjIwLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlQgi6SAWCAQIQASKVAQoYTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj4KBWV2ZW50GAIgASgOMi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIPCgdtZXNzYWdlGAMgASgJImsKCk1hY2hpbmVWUE4SHQoVY29udHJvbF9wbGFuZV9hZGRyZXNzGAEgASgJEhAKCGF1dGhfa2V5GAIgASgJEhEKCWNvbm5lY3RlZBgDIAEoCBIZCgNpcHMYBSADKAlCDLpICZIBBsCks7ECASK6BwoMTWFjaGluZVF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIiCglwYXJ0aXRpb24YAyABKAlCCrpIB3IFEAIYgAFIAogBARIdCgRzaXplGAQgASgJQgq6SAdyBRACGIABSAOIAQESHQoEcmFjaxgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEi4KBmxhYmVscxgGIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEkIKCmFsbG9jYXRpb24YByABKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblF1ZXJ5SAaIAQESPAoHbmV0d29yaxgIIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOZXR3b3JrUXVlcnlIB4gBARI0CgNuaWMYCSABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljUXVlcnlICIgBARI2CgRkaXNrGAogASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZURpc2tRdWVyeUgJiAEBEjQKA2JtYxgLIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBEhQKB3dhaXRpbmcYDyABKAhIDogBARIZCgxwcmVhbGxvY2F0ZWQYECABKAhID4gBARIaCg1ub3RfYWxsb2NhdGVkGBEgASgISBCIAQFCBwoFX3V1aWRCBwoFX25hbWVCDAoKX3BhcnRpdGlvbkIHCgVfc2l6ZUIHCgVfcmFja0IJCgdfbGFiZWxzQg0KC19hbGxvY2F0aW9uQgoKCF9uZXR3b3JrQgYKBF9uaWNCBwoFX2Rpc2tCBgoEX2JtY0IGCgRfZnJ1QgsKCV9oYXJkd2FyZUIICgZfc3RhdGVCCgoIX3dhaXRpbmdCDwoNX3ByZWFsbG9jYXRlZEIQCg5fbm90X2FsbG9jYXRlZCKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); +export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLKBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIgCg5wbGFjZW1lbnRfdGFncxgPIAMoCUIIukgFkgECEEASOwoLZG5zX3NlcnZlcnMYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL3BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjsKC2Ruc19zZXJ2ZXJzGA8gAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI7CgtudHBfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLk5UUFNlcnZlckIIukgFkgECEAoSKgoDdnBuGBEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTiJvChhNYWNoaW5lQWxsb2NhdGlvbk5ldHdvcmsSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESGgoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgIEhkKA2lwcxgDIAMoCUIMukgJkgEGwKSzsQIBIn8KDUZpcmV3YWxsUnVsZXMSNQoGZWdyZXNzGAEgAygLMiUubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxFZ3Jlc3NSdWxlEjcKB2luZ3Jlc3MYAiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbEluZ3Jlc3NSdWxlIrIBChJGaXJld2FsbEVncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIoCgdjb21tZW50GAQgASgJQhe6SBTYAQFyDxhkMgteW2Etel8gLV0qJCLPAQoTRmlyZXdhbGxJbmdyZXNzUnVsZRI5Cghwcm90b2NvbBgBIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLklQUHJvdG9jb2xCCLpIBYIBAhABEh0KBXBvcnRzGAIgAygNQg66SAuSAQgiBioEGPz/AxIYCgJ0bxgDIAMoCUIMukgJkgEGuKSzsQIBEhoKBGZyb20YBCADKAlCDLpICZIBBriks7ECARIoCgdjb21tZW50GAUgASgJQhe6SBTYAQFyDxhkMgteW2Etel8gLV0qJCLGAgoOTWFjaGluZU5ldHdvcmsSDwoHbmV0d29yaxgBIAEoCRIeCghwcmVmaXhlcxgCIAMoCUIMukgJkgEGuKSzsQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAMgAygJQgy6SAmSAQa4pLOxAgESGQoDaXBzGAQgAygJQgy6SAmSAQbApLOxAgESPgoMbmV0d29ya190eXBlGAUgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEjYKCG5hdF90eXBlGAYgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAESCwoDdnJmGAcgASgEEgsKA2FzbhgIIAEoDRIeCgdwcm9qZWN0GAkgASgJQgi6SAVyA7ABAUgAiAEBQgoKCF9wcm9qZWN0ItoBCg9NYWNoaW5lSGFyZHdhcmUSDgoGbWVtb3J5GAEgASgEEjQKBWRpc2tzGAMgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJsb2NrRGV2aWNlEikKBGNwdXMYBCADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbENQVRIpCgRncHVzGAUgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxHUFUSKwoEbmljcxgGIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWMiXQoITWV0YWxDUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAISDQoFY29yZXMYAyABKA0SDwoHdGhyZWFkcxgEIAEoDSI9CghNZXRhbEdQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAiLlAQoKTWFjaGluZU5pYxIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEhwKCmlkZW50aWZpZXIYAyABKAlCCLpIBXIDGIABEhgKBnZlbmRvchgEIAEoCUIIukgFcgMYgAESFwoFbW9kZWwYBSABKAlCCLpIBXIDGIABEg0KBXNwZWVkGAYgASgEEjAKCW5laWdoYm9ycxgHIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWMSEAoIaG9zdG5hbWUYCCABKAkiPQoSTWFjaGluZUJsb2NrRGV2aWNlEhkKBG5hbWUYASABKAlCC7pICHIGwLOusQIBEgwKBHNpemUYAiABKAQiWwoeTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEhcKBXZhbHVlGAEgASgJQgi6SAVyAxiAARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgEiigMKEE1hY2hpbmVCTUNSZXBvcnQSKgoDYm1jGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIsCgRiaW9zGAIgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDZnJ1GAMgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVRI7Cgxwb3dlcl9tZXRyaWMYBCABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUG93ZXJNZXRyaWMSPQoOcG93ZXJfc3VwcGxpZXMYBSADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUG93ZXJTdXBwbHkSRAoJbGVkX3N0YXRlGAYgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImMKC01hY2hpbmVCaW9zEhwKB3ZlcnNpb24YASABKAlCC7pICHIGyLOusQIBEhsKBnZlbmRvchgCIAEoCUILukgIcgbIs66xAgESGQoEZGF0ZRgDIAEoCUILukgIcgbIs66xAgEi2wEKCk1hY2hpbmVCTUMSGQoHYWRkcmVzcxgBIAEoCUIIukgFcgOAAgESGAoDbWFjGAIgASgJQgu6SAhyBrizrrECARIZCgR1c2VyGAMgASgJQgu6SAhyBsizrrECARIdCghwYXNzd29yZBgEIAEoCUILukgIcgbIs66xAgESHgoJaW50ZXJmYWNlGAUgASgJQgu6SAhyBsizrrECARIcCgd2ZXJzaW9uGAcgASgJQgu6SAhyBsizrrECARIgCgtwb3dlcl9zdGF0ZRgIIAEoCUILukgIcgbIs66xAgEingQKCk1hY2hpbmVGUlUSLQoTY2hhc3Npc19wYXJ0X251bWJlchgBIAEoCUILukgIcgbIs66xAgFIAIgBARItChNjaGFzc2lzX3BhcnRfc2VyaWFsGAIgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCWJvYXJkX21mZxgDIAEoCUILukgIcgbIs66xAgFIAogBARIqChBib2FyZF9tZmdfc2VyaWFsGAQgASgJQgu6SAhyBsizrrECAUgDiAEBEisKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgu6SAhyBsizrrECAUgEiAEBEi4KFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgu6SAhyBsizrrECAUgFiAEBEi0KE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCC7pICHIGyLOusQIBSAaIAQESKAoOcHJvZHVjdF9zZXJpYWwYCCABKAlCC7pICHIGyLOusQIBSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0ITChFfYm9hcmRfbWZnX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCKFAQoSTWFjaGluZVBvd2VyTWV0cmljEh4KFmF2ZXJhZ2VfY29uc3VtZWRfd2F0dHMYASABKAISFwoPaW50ZXJ2YWxfaW5fbWluGAIgASgCEhoKEm1heF9jb25zdW1lZF93YXR0cxgDIAEoAhIaChJtaW5fY29uc3VtZWRfd2F0dHMYBCABKAIiMwoSTWFjaGluZVBvd2VyU3VwcGx5Eg4KBmhlYWx0aBgBIAEoCRINCgVzdGF0ZRgCIAEoCSKlAgofTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cxI7CgZldmVudHMYASADKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSMwoPbGFzdF9ldmVudF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFChBsYXN0X2Vycm9yX2V2ZW50GAMgASgLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EkkKBXN0YXRlGAQgASgOMjAubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGVCCLpIBYIBAhABIpUBChhNYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPgoFZXZlbnQYAiABKA4yLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRUeXBlEg8KB21lc3NhZ2UYAyABKAkiawoKTWFjaGluZVZQThIdChVjb250cm9sX3BsYW5lX2FkZHJlc3MYASABKAkSEAoIYXV0aF9rZXkYAiABKAkSEQoJY29ubmVjdGVkGAMgASgIEhkKA2lwcxgFIAMoCUIMukgJkgEGwKSzsQIBIroHCgxNYWNoaW5lUXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiIKCXBhcnRpdGlvbhgDIAEoCUIKukgHcgUQAhiAAUgCiAEBEh0KBHNpemUYBCABKAlCCrpIB3IFEAIYgAFIA4gBARIdCgRyYWNrGAUgASgJQgq6SAdyBRACGIABSASIAQESLgoGbGFiZWxzGAYgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAWIAQESQgoKYWxsb2NhdGlvbhgHIAEoCzIpLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uUXVlcnlIBogBARI8CgduZXR3b3JrGAggASgLMiYubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmtRdWVyeUgHiAEBEjQKA25pYxgJIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWNRdWVyeUgIiAEBEjYKBGRpc2sYCiABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRGlza1F1ZXJ5SAmIAQESNAoDYm1jGAsgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1F1ZXJ5SAqIAQESNAoDZnJ1GAwgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVVF1ZXJ5SAuIAQESPgoIaGFyZHdhcmUYDSABKAsyJy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmVRdWVyeUgMiAEBEjMKBXN0YXRlGA4gASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlSA2IAQESFAoHd2FpdGluZxgPIAEoCEgOiAEBEhkKDHByZWFsbG9jYXRlZBgQIAEoCEgPiAEBEhoKDW5vdF9hbGxvY2F0ZWQYESABKAhIEIgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZUIKCghfd2FpdGluZ0IPCg1fcHJlYWxsb2NhdGVkQhAKDl9ub3RfYWxsb2NhdGVkIokEChZNYWNoaW5lQWxsb2NhdGlvblF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIeCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABAUgCiAEBEh4KBWltYWdlGAQgASgJQgq6SAdyBRACGIABSAOIAQESKgoRZmlsZXN5c3RlbV9sYXlvdXQYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIhCghob3N0bmFtZRgGIAEoCUIKukgHcgUQAhiAAUgFiAEBElAKD2FsbG9jYXRpb25fdHlwZRgHIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAFIBogBARIuCgZsYWJlbHMYCCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIB4gBARIvCgN2cG4YCSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOSAiIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzQgYKBF92cG4iqgEKE01hY2hpbmVOZXR3b3JrUXVlcnkSEAoIbmV0d29ya3MYASADKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEgwKBHZyZnMYBSADKAQSDAoEYXNucxgGIAMoDSKvAQoPTWFjaGluZU5pY1F1ZXJ5EiIKBG1hY3MYASADKAlCFLpIEZIBDhBkGAEiCHIGuLOusQIBEiAKBW5hbWVzGAIgAygJQhG6SA6SAQsQZBgBIgVyAxiAARIrCg1uZWlnaGJvcl9tYWNzGAMgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIpCg5uZWlnaGJvcl9uYW1lcxgEIAMoCUIRukgOkgELEGQYASIFcgMYgAEiSwoQTWFjaGluZURpc2tRdWVyeRIeCgVuYW1lcxgBIAMoCUIPukgMkgEJEGQiBXIDGIABEhcKBXNpemVzGAIgAygEQgi6SAWSAQIQZCK5AQoPTWFjaGluZUJNQ1F1ZXJ5Eh0KB2FkZHJlc3MYASABKAlCB7pIBHICcAFIAIgBARIdCgNtYWMYAiABKAlCC7pICHIGuLOusQIBSAGIAQESGwoEdXNlchgDIAEoCUIIukgFcgMYgAFIAogBARIgCglpbnRlcmZhY2UYBCABKAlCCLpIBXIDGIABSAOIAQFCCgoIX2FkZHJlc3NCBgoEX21hY0IHCgVfdXNlckIMCgpfaW50ZXJmYWNlIoMECg9NYWNoaW5lRlJVUXVlcnkSKgoTY2hhc3Npc19wYXJ0X251bWJlchgBIAEoCUIIukgFcgMYgAFIAIgBARIqChNjaGFzc2lzX3BhcnRfc2VyaWFsGAIgASgJQgi6SAVyAxiAAUgBiAEBEiAKCWJvYXJkX21mZxgDIAEoCUIIukgFcgMYgAFIAogBARIjCgxib2FyZF9zZXJpYWwYBCABKAlCCLpIBXIDGIABSAOIAQESKAoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCCLpIBXIDGIABSASIAQESKwoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCCLpIBXIDGIABSAWIAQESKgoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUIIukgFcgMYgAFIBogBARIlCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUIIukgFcgMYgAFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQg8KDV9ib2FyZF9zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwiXAoUTWFjaGluZUhhcmR3YXJlUXVlcnkSEwoGbWVtb3J5GAEgASgESACIAQESFgoJY3B1X2NvcmVzGAIgASgNSAGIAQFCCQoHX21lbW9yeUIMCgpfY3B1X2NvcmVzKmUKCklQUHJvdG9jb2wSGwoXSVBfUFJPVE9DT0xfVU5TUEVDSUZJRUQQABIcCg9JUF9QUk9UT0NPTF9UQ1AQARoHgrIZA3RjcBIcCg9JUF9QUk9UT0NPTF9VRFAQAhoHgrIZA3VkcCqvAQoMTWFjaGluZVN0YXRlEiMKGU1BQ0hJTkVfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABIoChZNQUNISU5FX1NUQVRFX1JFU0VSVkVEEAEaDIKyGQhyZXNlcnZlZBIkChRNQUNISU5FX1NUQVRFX0xPQ0tFRBACGgqCshkGbG9ja2VkEioKF01BQ0hJTkVfU1RBVEVfQVZBSUxBQkxFEAMaDYKyGQlhdmFpbGFibGUq3wEKHU1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlEjYKLE1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASPQoqTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfQ1JBU0hMT09QEAEaDYKyGQljcmFzaGxvb3ASRwovTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfRkFJTEVEX1JFQ0xBSU0QAhoSgrIZDmZhaWxlZC1yZWNsYWltKp8GChxNYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRUeXBlEi8KK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfVU5TUEVDSUZJRUQQABI0CiVNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0FMSVZFEAEaCYKyGQVBbGl2ZRI4CidNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0NSQVNIRUQQAhoLgrIZB0NyYXNoZWQSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QWEVfQk9PVElORxADGg+CshkLUFhFIEJvb3RpbmcSRgouTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QTEFOTkVEX1JFQk9PVBAEGhKCshkOUGxhbm5lZCBSZWJvb3QSPAopTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QUkVQQVJJTkcQBRoNgrIZCVByZXBhcmluZxJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1JFR0lTVEVSSU5HEAYaD4KyGQtSZWdpc3RlcmluZxI4CidNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1dBSVRJTkcQBxoLgrIZB1dhaXRpbmcSPgoqTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9JTlNUQUxMSU5HEAgaDoKyGQpJbnN0YWxsaW5nEk4KMk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQk9PVElOR19ORVdfS0VSTkVMEAkaFoKyGRJCb290aW5nIE5ldyBLZXJuZWwSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QSE9ORURfSE9NRRAKGg+CshkLUGhvbmVkIEhvbWUSSAovTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9NQUNISU5FX1JFQ0xBSU0QCxoTgrIZD01hY2hpbmUgUmVjbGFpbSq6AQoRTWFjaGluZUxpdmVsaW5lc3MSKAoeTUFDSElORV9MSVZFTElORVNTX1VOU1BFQ0lGSUVEEAAaBIKyGQASJwoYTUFDSElORV9MSVZFTElORVNTX0FMSVZFEAEaCYKyGQVhbGl2ZRIlChdNQUNISU5FX0xJVkVMSU5FU1NfREVBRBACGgiCshkEZGVhZBIrChpNQUNISU5FX0xJVkVMSU5FU1NfVU5LTk9XThADGguCshkHdW5rbm93biqsAQoVTWFjaGluZUFsbG9jYXRpb25UeXBlEi0KI01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAAaBIKyGQASMAofTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfTUFDSElORRABGguCshkHbWFjaGluZRIyCiBNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9GSVJFV0FMTBACGgyCshkIZmlyZXdhbGwq/gQKEU1hY2hpbmVCTUNDb21tYW5kEiMKH01BQ0hJTkVfQk1DX0NPTU1BTkRfVU5TUEVDSUZJRUQQABIiChZNQUNISU5FX0JNQ19DT01NQU5EX09OEAEaBoKyGQJvbhIkChdNQUNISU5FX0JNQ19DT01NQU5EX09GRhACGgeCshkDb2ZmEigKGU1BQ0hJTkVfQk1DX0NPTU1BTkRfUkVTRVQQAxoJgrIZBXJlc2V0EigKGU1BQ0hJTkVfQk1DX0NPTU1BTkRfQ1lDTEUQBBoJgrIZBWN5Y2xlEjYKIE1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9UT19CSU9TEAUaEIKyGQxib290LXRvLWJpb3MSOgoiTUFDSElORV9CTUNfQ09NTUFORF9CT09UX0ZST01fRElTSxAGGhKCshkOYm9vdC1mcm9tLWRpc2sSOAohTUFDSElORV9CTUNfQ09NTUFORF9CT09UX0ZST01fUFhFEAcaEYKyGQ1ib290LWZyb20tcHhlEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09OEAgaE4KyGQ9pZGVudGlmeS1sZWQtb24SPgokTUFDSElORV9CTUNfQ09NTUFORF9JREVOVElGWV9MRURfT0ZGEAkaFIKyGRBpZGVudGlmeS1sZWQtb2ZmEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9ERUxFVEVEEAoaE4KyGQ9tYWNoaW5lLWRlbGV0ZWQSPAojTUFDSElORV9CTUNfQ09NTUFORF9NQUNISU5FX0NSRUFURUQQCxoTgrIZD21hY2hpbmUtY3JlYXRlZDK8BgoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQISfQoKQk1DQ29tbWFuZBIyLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXNwb25zZSIGyvMYAgECEnEKBkdldEJNQxIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2UiBsrzGAIBAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxNYWNoaW5lUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * Describes the message metalstack.api.v2.MachineServiceGetRequest. * Use `create(MachineServiceGetRequestSchema)` to create a new message. @@ -115,146 +115,141 @@ export const MachineAllocationSchema = /*@__PURE__*/ messageDesc(file_metalstack * Use `create(MachineAllocationNetworkSchema)` to create a new message. */ export const MachineAllocationNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 19); -/** - * Describes the message metalstack.api.v2.MachineAllocationIp. - * Use `create(MachineAllocationIpSchema)` to create a new message. - */ -export const MachineAllocationIpSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20); /** * Describes the message metalstack.api.v2.FirewallRules. * Use `create(FirewallRulesSchema)` to create a new message. */ -export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21); +export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20); /** * Describes the message metalstack.api.v2.FirewallEgressRule. * Use `create(FirewallEgressRuleSchema)` to create a new message. */ -export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22); +export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21); /** * Describes the message metalstack.api.v2.FirewallIngressRule. * Use `create(FirewallIngressRuleSchema)` to create a new message. */ -export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23); +export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22); /** * Describes the message metalstack.api.v2.MachineNetwork. * Use `create(MachineNetworkSchema)` to create a new message. */ -export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24); +export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23); /** * Describes the message metalstack.api.v2.MachineHardware. * Use `create(MachineHardwareSchema)` to create a new message. */ -export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25); +export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24); /** * Describes the message metalstack.api.v2.MetalCPU. * Use `create(MetalCPUSchema)` to create a new message. */ -export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26); +export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25); /** * Describes the message metalstack.api.v2.MetalGPU. * Use `create(MetalGPUSchema)` to create a new message. */ -export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27); +export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26); /** * Describes the message metalstack.api.v2.MachineNic. * Use `create(MachineNicSchema)` to create a new message. */ -export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28); +export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27); /** * Describes the message metalstack.api.v2.MachineBlockDevice. * Use `create(MachineBlockDeviceSchema)` to create a new message. */ -export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29); +export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28); /** * Describes the message metalstack.api.v2.MachineChassisIdentifyLEDState. * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. */ -export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30); +export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29); /** * Describes the message metalstack.api.v2.MachineBMCReport. * Use `create(MachineBMCReportSchema)` to create a new message. */ -export const MachineBMCReportSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31); +export const MachineBMCReportSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30); /** * Describes the message metalstack.api.v2.MachineBios. * Use `create(MachineBiosSchema)` to create a new message. */ -export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32); +export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31); /** * Describes the message metalstack.api.v2.MachineBMC. * Use `create(MachineBMCSchema)` to create a new message. */ -export const MachineBMCSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33); +export const MachineBMCSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32); /** * Describes the message metalstack.api.v2.MachineFRU. * Use `create(MachineFRUSchema)` to create a new message. */ -export const MachineFRUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34); +export const MachineFRUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33); /** * Describes the message metalstack.api.v2.MachinePowerMetric. * Use `create(MachinePowerMetricSchema)` to create a new message. */ -export const MachinePowerMetricSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35); +export const MachinePowerMetricSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34); /** * Describes the message metalstack.api.v2.MachinePowerSupply. * Use `create(MachinePowerSupplySchema)` to create a new message. */ -export const MachinePowerSupplySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36); +export const MachinePowerSupplySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35); /** * Describes the message metalstack.api.v2.MachineRecentProvisioningEvents. * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. */ -export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37); +export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36); /** * Describes the message metalstack.api.v2.MachineProvisioningEvent. * Use `create(MachineProvisioningEventSchema)` to create a new message. */ -export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 38); +export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37); /** * Describes the message metalstack.api.v2.MachineVPN. * Use `create(MachineVPNSchema)` to create a new message. */ -export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 39); +export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 38); /** * Describes the message metalstack.api.v2.MachineQuery. * Use `create(MachineQuerySchema)` to create a new message. */ -export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 40); +export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 39); /** * Describes the message metalstack.api.v2.MachineAllocationQuery. * Use `create(MachineAllocationQuerySchema)` to create a new message. */ -export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 41); +export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 40); /** * Describes the message metalstack.api.v2.MachineNetworkQuery. * Use `create(MachineNetworkQuerySchema)` to create a new message. */ -export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 42); +export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 41); /** * Describes the message metalstack.api.v2.MachineNicQuery. * Use `create(MachineNicQuerySchema)` to create a new message. */ -export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 43); +export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 42); /** * Describes the message metalstack.api.v2.MachineDiskQuery. * Use `create(MachineDiskQuerySchema)` to create a new message. */ -export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 44); +export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 43); /** * Describes the message metalstack.api.v2.MachineBMCQuery. * Use `create(MachineBMCQuerySchema)` to create a new message. */ -export const MachineBMCQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 45); +export const MachineBMCQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 44); /** * Describes the message metalstack.api.v2.MachineFRUQuery. * Use `create(MachineFRUQuerySchema)` to create a new message. */ -export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 46); +export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 45); /** * Describes the message metalstack.api.v2.MachineHardwareQuery. * Use `create(MachineHardwareQuerySchema)` to create a new message. */ -export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 47); +export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 46); /** * IPProtocol defines tcp|udp * diff --git a/js/metalstack/api/v2/machine_pb.ts b/js/metalstack/api/v2/machine_pb.ts index 8b136d33..0b0810e3 100644 --- a/js/metalstack/api/v2/machine_pb.ts +++ b/js/metalstack/api/v2/machine_pb.ts @@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/api/v2/machine.proto. */ export const file_metalstack_api_v2_machine: GenFile = /*@__PURE__*/ - fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSL/BgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIzCgNpcHMYDiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbklwEiAKDnBsYWNlbWVudF90YWdzGA8gAygJQgi6SAWSAQIQQBI7CgtkbnNfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkROU1NlcnZlckIIukgFkgECEAMSOwoLbnRwX3NlcnZlcnMYESADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEksKD2FsbG9jYXRpb25fdHlwZRgSIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESNgoNZmlyZXdhbGxfc3BlYxgTIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsU3BlY0IHCgVfdXVpZEIOCgxfZGVzY3JpcHRpb25CCwoJX2hvc3RuYW1lQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfdXNlcmRhdGEiSAoMRmlyZXdhbGxTcGVjEjgKDmZpcmV3YWxsX3J1bGVzGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxSdWxlcyJLChxNYWNoaW5lU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIrACChtNYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSACIAQESNAoGbGFiZWxzGAUgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQESKgoPc3NoX3B1YmxpY19rZXlzGAYgAygJQhG6SA6SAQsQMiIHcgUQARiAQEIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxNYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lImYKGU1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkiSgoaTWFjaGluZVNlcnZpY2VMaXN0UmVzcG9uc2USLAoIbWFjaGluZXMYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIlAKG01hY2hpbmVTZXJ2aWNlRGVsZXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJLChxNYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB21hY2hpbmUYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lIpUBCh9NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEj8KB2NvbW1hbmQYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DQ29tbWFuZEIIukgFggECEAEiIgogTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiUAobTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBImgKHE1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2USFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESMAoDYm1jGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydCKyAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSOAoKYWxsb2NhdGlvbhgIIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uEjAKBnN0YXR1cxgJIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0dXMSVgoacmVjZW50X3Byb3Zpc2lvbmluZ19ldmVudHMYCiABKAsyMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzIu8BCg1NYWNoaW5lU3RhdHVzEjYKCWNvbmRpdGlvbhgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25kaXRpb24SRAoJbGVkX3N0YXRlGAIgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEkIKCmxpdmVsaW5lc3MYAyABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTGl2ZWxpbmVzc0IIukgFggECEAESHAoUbWV0YWxfaGFtbWVyX3ZlcnNpb24YBCABKAkiiAEKEE1hY2hpbmVDb25kaXRpb24SOAoFc3RhdGUYASABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVCCLpIBYIBAhABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECARIYCgZpc3N1ZXIYAyABKAlCCLpIBXIDGIACIvcFChFNYWNoaW5lQWxsb2NhdGlvbhIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESHAoKY3JlYXRlZF9ieRgFIAEoCUIIukgFcgMYgAESGQoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQESJwoFaW1hZ2UYByABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRI+ChFmaWxlc3lzdGVtX2xheW91dBgIIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQSMwoIbmV0d29ya3MYCSADKAsyIS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29yaxIZCghob3N0bmFtZRgKIAEoCUIHukgEcgJoARIqCg9zc2hfcHVibGljX2tleXMYCyADKAlCEbpIDpIBCxAyIgdyBRABGIBAEhsKCHVzZXJkYXRhGAwgASgJQgm6SAZyBBiAgAISSwoPYWxsb2NhdGlvbl90eXBlGA0gASgOMigubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25UeXBlQgi6SAWCAQIQARI4Cg5maXJld2FsbF9ydWxlcxgOIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMSOwoLZG5zX3NlcnZlcnMYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIqCgN2cG4YESABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOIlQKGE1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIaChJub19hdXRvX2FjcXVpcmVfaXAYAiABKAgiWgoTTWFjaGluZUFsbG9jYXRpb25JcBITCgJpcBgBIAEoCUIHukgEcgJwARIgCgluYW1lc3BhY2UYAiABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQixgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0SHgoHcHJvamVjdBgJIAEoCUIIukgFcgOwAQFIAIgBAUIKCghfcHJvamVjdCLaAQoPTWFjaGluZUhhcmR3YXJlEg4KBm1lbW9yeRgBIAEoBBI0CgVkaXNrcxgDIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCbG9ja0RldmljZRIpCgRjcHVzGAQgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxDUFUSKQoEZ3B1cxgFIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsR1BVEisKBG5pY3MYBiADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljIl0KCE1ldGFsQ1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACEg0KBWNvcmVzGAMgASgNEg8KB3RocmVhZHMYBCABKA0iPQoITWV0YWxHUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAIi5QEKCk1hY2hpbmVOaWMSGAoDbWFjGAEgASgJQgu6SAhyBrizrrECARIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARIcCgppZGVudGlmaWVyGAMgASgJQgi6SAVyAxiAARIYCgZ2ZW5kb3IYBCABKAlCCLpIBXIDGIABEhcKBW1vZGVsGAUgASgJQgi6SAVyAxiAARINCgVzcGVlZBgGIAEoBBIwCgluZWlnaGJvcnMYByADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljEhAKCGhvc3RuYW1lGAggASgJIj0KEk1hY2hpbmVCbG9ja0RldmljZRIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIMCgRzaXplGAIgASgEIlsKHk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIXCgV2YWx1ZRgBIAEoCUIIukgFcgMYgAESIAoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBIooDChBNYWNoaW5lQk1DUmVwb3J0EioKA2JtYxgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUMSLAoEYmlvcxgCIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEioKA2ZydRgDIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlUSOwoMcG93ZXJfbWV0cmljGAQgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyTWV0cmljEj0KDnBvd2VyX3N1cHBsaWVzGAUgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBvd2VyU3VwcGx5EkQKCWxlZF9zdGF0ZRgGIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJjCgtNYWNoaW5lQmlvcxIcCgd2ZXJzaW9uGAEgASgJQgu6SAhyBsizrrECARIbCgZ2ZW5kb3IYAiABKAlCC7pICHIGyLOusQIBEhkKBGRhdGUYAyABKAlCC7pICHIGyLOusQIBItsBCgpNYWNoaW5lQk1DEhkKB2FkZHJlc3MYASABKAlCCLpIBXIDgAIBEhgKA21hYxgCIAEoCUILukgIcga4s66xAgESGQoEdXNlchgDIAEoCUILukgIcgbIs66xAgESHQoIcGFzc3dvcmQYBCABKAlCC7pICHIGyLOusQIBEh4KCWludGVyZmFjZRgFIAEoCUILukgIcgbIs66xAgESHAoHdmVyc2lvbhgHIAEoCUILukgIcgbIs66xAgESIAoLcG93ZXJfc3RhdGUYCCABKAlCC7pICHIGyLOusQIBIp4ECgpNYWNoaW5lRlJVEi0KE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCC7pICHIGyLOusQIBSACIAQESLQoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglib2FyZF9tZmcYAyABKAlCC7pICHIGyLOusQIBSAKIAQESKgoQYm9hcmRfbWZnX3NlcmlhbBgEIAEoCUILukgIcgbIs66xAgFIA4gBARIrChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUILukgIcgbIs66xAgFIBIgBARIuChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUILukgIcgbIs66xAgFIBYgBARItChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgu6SAhyBsizrrECAUgGiAEBEigKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgu6SAhyBsizrrECAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCEwoRX2JvYXJkX21mZ19zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwihQEKEk1hY2hpbmVQb3dlck1ldHJpYxIeChZhdmVyYWdlX2NvbnN1bWVkX3dhdHRzGAEgASgCEhcKD2ludGVydmFsX2luX21pbhgCIAEoAhIaChJtYXhfY29uc3VtZWRfd2F0dHMYAyABKAISGgoSbWluX2NvbnN1bWVkX3dhdHRzGAQgASgCIjMKEk1hY2hpbmVQb3dlclN1cHBseRIOCgZoZWFsdGgYASABKAkSDQoFc3RhdGUYAiABKAkipQIKH01hY2hpbmVSZWNlbnRQcm92aXNpb25pbmdFdmVudHMSOwoGZXZlbnRzGAEgAygLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EjMKD2xhc3RfZXZlbnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoQbGFzdF9lcnJvcl9ldmVudBgDIAEoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBJJCgVzdGF0ZRgEIAEoDjIwLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlQgi6SAWCAQIQASKVAQoYTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj4KBWV2ZW50GAIgASgOMi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIPCgdtZXNzYWdlGAMgASgJImsKCk1hY2hpbmVWUE4SHQoVY29udHJvbF9wbGFuZV9hZGRyZXNzGAEgASgJEhAKCGF1dGhfa2V5GAIgASgJEhEKCWNvbm5lY3RlZBgDIAEoCBIZCgNpcHMYBSADKAlCDLpICZIBBsCks7ECASK6BwoMTWFjaGluZVF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIiCglwYXJ0aXRpb24YAyABKAlCCrpIB3IFEAIYgAFIAogBARIdCgRzaXplGAQgASgJQgq6SAdyBRACGIABSAOIAQESHQoEcmFjaxgFIAEoCUIKukgHcgUQAhiAAUgEiAEBEi4KBmxhYmVscxgGIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEkIKCmFsbG9jYXRpb24YByABKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblF1ZXJ5SAaIAQESPAoHbmV0d29yaxgIIAEoCzImLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOZXR3b3JrUXVlcnlIB4gBARI0CgNuaWMYCSABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmljUXVlcnlICIgBARI2CgRkaXNrGAogASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZURpc2tRdWVyeUgJiAEBEjQKA2JtYxgLIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBEhQKB3dhaXRpbmcYDyABKAhIDogBARIZCgxwcmVhbGxvY2F0ZWQYECABKAhID4gBARIaCg1ub3RfYWxsb2NhdGVkGBEgASgISBCIAQFCBwoFX3V1aWRCBwoFX25hbWVCDAoKX3BhcnRpdGlvbkIHCgVfc2l6ZUIHCgVfcmFja0IJCgdfbGFiZWxzQg0KC19hbGxvY2F0aW9uQgoKCF9uZXR3b3JrQgYKBF9uaWNCBwoFX2Rpc2tCBgoEX2JtY0IGCgRfZnJ1QgsKCV9oYXJkd2FyZUIICgZfc3RhdGVCCgoIX3dhaXRpbmdCDwoNX3ByZWFsbG9jYXRlZEIQCg5fbm90X2FsbG9jYXRlZCKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLKBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIgCg5wbGFjZW1lbnRfdGFncxgPIAMoCUIIukgFkgECEEASOwoLZG5zX3NlcnZlcnMYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjsKC250cF9zZXJ2ZXJzGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL3BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjsKC2Ruc19zZXJ2ZXJzGA8gAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI7CgtudHBfc2VydmVycxgQIAMoCzIcLm1ldGFsc3RhY2suYXBpLnYyLk5UUFNlcnZlckIIukgFkgECEAoSKgoDdnBuGBEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTiJvChhNYWNoaW5lQWxsb2NhdGlvbk5ldHdvcmsSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESGgoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgIEhkKA2lwcxgDIAMoCUIMukgJkgEGwKSzsQIBIn8KDUZpcmV3YWxsUnVsZXMSNQoGZWdyZXNzGAEgAygLMiUubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxFZ3Jlc3NSdWxlEjcKB2luZ3Jlc3MYAiADKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbEluZ3Jlc3NSdWxlIrIBChJGaXJld2FsbEVncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIoCgdjb21tZW50GAQgASgJQhe6SBTYAQFyDxhkMgteW2Etel8gLV0qJCLPAQoTRmlyZXdhbGxJbmdyZXNzUnVsZRI5Cghwcm90b2NvbBgBIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLklQUHJvdG9jb2xCCLpIBYIBAhABEh0KBXBvcnRzGAIgAygNQg66SAuSAQgiBioEGPz/AxIYCgJ0bxgDIAMoCUIMukgJkgEGuKSzsQIBEhoKBGZyb20YBCADKAlCDLpICZIBBriks7ECARIoCgdjb21tZW50GAUgASgJQhe6SBTYAQFyDxhkMgteW2Etel8gLV0qJCLGAgoOTWFjaGluZU5ldHdvcmsSDwoHbmV0d29yaxgBIAEoCRIeCghwcmVmaXhlcxgCIAMoCUIMukgJkgEGuKSzsQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAMgAygJQgy6SAmSAQa4pLOxAgESGQoDaXBzGAQgAygJQgy6SAmSAQbApLOxAgESPgoMbmV0d29ya190eXBlGAUgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEjYKCG5hdF90eXBlGAYgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAESCwoDdnJmGAcgASgEEgsKA2FzbhgIIAEoDRIeCgdwcm9qZWN0GAkgASgJQgi6SAVyA7ABAUgAiAEBQgoKCF9wcm9qZWN0ItoBCg9NYWNoaW5lSGFyZHdhcmUSDgoGbWVtb3J5GAEgASgEEjQKBWRpc2tzGAMgAygLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJsb2NrRGV2aWNlEikKBGNwdXMYBCADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbENQVRIpCgRncHVzGAUgAygLMhsubWV0YWxzdGFjay5hcGkudjIuTWV0YWxHUFUSKwoEbmljcxgGIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWMiXQoITWV0YWxDUFUSGAoGdmVuZG9yGAEgASgJQgi6SAVyAxiAAhIXCgVtb2RlbBgCIAEoCUIIukgFcgMYgAISDQoFY29yZXMYAyABKA0SDwoHdGhyZWFkcxgEIAEoDSI9CghNZXRhbEdQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAiLlAQoKTWFjaGluZU5pYxIYCgNtYWMYASABKAlCC7pICHIGuLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEhwKCmlkZW50aWZpZXIYAyABKAlCCLpIBXIDGIABEhgKBnZlbmRvchgEIAEoCUIIukgFcgMYgAESFwoFbW9kZWwYBSABKAlCCLpIBXIDGIABEg0KBXNwZWVkGAYgASgEEjAKCW5laWdoYm9ycxgHIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWMSEAoIaG9zdG5hbWUYCCABKAkiPQoSTWFjaGluZUJsb2NrRGV2aWNlEhkKBG5hbWUYASABKAlCC7pICHIGwLOusQIBEgwKBHNpemUYAiABKAQiWwoeTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEhcKBXZhbHVlGAEgASgJQgi6SAVyAxiAARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgEiigMKEE1hY2hpbmVCTUNSZXBvcnQSKgoDYm1jGAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQxIsCgRiaW9zGAIgASgLMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJpb3MSKgoDZnJ1GAMgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVRI7Cgxwb3dlcl9tZXRyaWMYBCABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUG93ZXJNZXRyaWMSPQoOcG93ZXJfc3VwcGxpZXMYBSADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUG93ZXJTdXBwbHkSRAoJbGVkX3N0YXRlGAYgASgLMjEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNoYXNzaXNJZGVudGlmeUxFRFN0YXRlEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImMKC01hY2hpbmVCaW9zEhwKB3ZlcnNpb24YASABKAlCC7pICHIGyLOusQIBEhsKBnZlbmRvchgCIAEoCUILukgIcgbIs66xAgESGQoEZGF0ZRgDIAEoCUILukgIcgbIs66xAgEi2wEKCk1hY2hpbmVCTUMSGQoHYWRkcmVzcxgBIAEoCUIIukgFcgOAAgESGAoDbWFjGAIgASgJQgu6SAhyBrizrrECARIZCgR1c2VyGAMgASgJQgu6SAhyBsizrrECARIdCghwYXNzd29yZBgEIAEoCUILukgIcgbIs66xAgESHgoJaW50ZXJmYWNlGAUgASgJQgu6SAhyBsizrrECARIcCgd2ZXJzaW9uGAcgASgJQgu6SAhyBsizrrECARIgCgtwb3dlcl9zdGF0ZRgIIAEoCUILukgIcgbIs66xAgEingQKCk1hY2hpbmVGUlUSLQoTY2hhc3Npc19wYXJ0X251bWJlchgBIAEoCUILukgIcgbIs66xAgFIAIgBARItChNjaGFzc2lzX3BhcnRfc2VyaWFsGAIgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCWJvYXJkX21mZxgDIAEoCUILukgIcgbIs66xAgFIAogBARIqChBib2FyZF9tZmdfc2VyaWFsGAQgASgJQgu6SAhyBsizrrECAUgDiAEBEisKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgu6SAhyBsizrrECAUgEiAEBEi4KFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgu6SAhyBsizrrECAUgFiAEBEi0KE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCC7pICHIGyLOusQIBSAaIAQESKAoOcHJvZHVjdF9zZXJpYWwYCCABKAlCC7pICHIGyLOusQIBSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0ITChFfYm9hcmRfbWZnX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCKFAQoSTWFjaGluZVBvd2VyTWV0cmljEh4KFmF2ZXJhZ2VfY29uc3VtZWRfd2F0dHMYASABKAISFwoPaW50ZXJ2YWxfaW5fbWluGAIgASgCEhoKEm1heF9jb25zdW1lZF93YXR0cxgDIAEoAhIaChJtaW5fY29uc3VtZWRfd2F0dHMYBCABKAIiMwoSTWFjaGluZVBvd2VyU3VwcGx5Eg4KBmhlYWx0aBgBIAEoCRINCgVzdGF0ZRgCIAEoCSKlAgofTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cxI7CgZldmVudHMYASADKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSMwoPbGFzdF9ldmVudF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFChBsYXN0X2Vycm9yX2V2ZW50GAMgASgLMisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EkkKBXN0YXRlGAQgASgOMjAubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGVCCLpIBYIBAhABIpUBChhNYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPgoFZXZlbnQYAiABKA4yLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRUeXBlEg8KB21lc3NhZ2UYAyABKAkiawoKTWFjaGluZVZQThIdChVjb250cm9sX3BsYW5lX2FkZHJlc3MYASABKAkSEAoIYXV0aF9rZXkYAiABKAkSEQoJY29ubmVjdGVkGAMgASgIEhkKA2lwcxgFIAMoCUIMukgJkgEGwKSzsQIBIroHCgxNYWNoaW5lUXVlcnkSGwoEdXVpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiIKCXBhcnRpdGlvbhgDIAEoCUIKukgHcgUQAhiAAUgCiAEBEh0KBHNpemUYBCABKAlCCrpIB3IFEAIYgAFIA4gBARIdCgRyYWNrGAUgASgJQgq6SAdyBRACGIABSASIAQESLgoGbGFiZWxzGAYgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAWIAQESQgoKYWxsb2NhdGlvbhgHIAEoCzIpLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uUXVlcnlIBogBARI8CgduZXR3b3JrGAggASgLMiYubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmtRdWVyeUgHiAEBEjQKA25pYxgJIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVOaWNRdWVyeUgIiAEBEjYKBGRpc2sYCiABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRGlza1F1ZXJ5SAmIAQESNAoDYm1jGAsgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1F1ZXJ5SAqIAQESNAoDZnJ1GAwgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVVF1ZXJ5SAuIAQESPgoIaGFyZHdhcmUYDSABKAsyJy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmVRdWVyeUgMiAEBEjMKBXN0YXRlGA4gASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlSA2IAQESFAoHd2FpdGluZxgPIAEoCEgOiAEBEhkKDHByZWFsbG9jYXRlZBgQIAEoCEgPiAEBEhoKDW5vdF9hbGxvY2F0ZWQYESABKAhIEIgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZUIKCghfd2FpdGluZ0IPCg1fcHJlYWxsb2NhdGVkQhAKDl9ub3RfYWxsb2NhdGVkIokEChZNYWNoaW5lQWxsb2NhdGlvblF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIeCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABAUgCiAEBEh4KBWltYWdlGAQgASgJQgq6SAdyBRACGIABSAOIAQESKgoRZmlsZXN5c3RlbV9sYXlvdXQYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIhCghob3N0bmFtZRgGIAEoCUIKukgHcgUQAhiAAUgFiAEBElAKD2FsbG9jYXRpb25fdHlwZRgHIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAFIBogBARIuCgZsYWJlbHMYCCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIB4gBARIvCgN2cG4YCSABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lVlBOSAiIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzQgYKBF92cG4iqgEKE01hY2hpbmVOZXR3b3JrUXVlcnkSEAoIbmV0d29ya3MYASADKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEgwKBHZyZnMYBSADKAQSDAoEYXNucxgGIAMoDSKvAQoPTWFjaGluZU5pY1F1ZXJ5EiIKBG1hY3MYASADKAlCFLpIEZIBDhBkGAEiCHIGuLOusQIBEiAKBW5hbWVzGAIgAygJQhG6SA6SAQsQZBgBIgVyAxiAARIrCg1uZWlnaGJvcl9tYWNzGAMgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIpCg5uZWlnaGJvcl9uYW1lcxgEIAMoCUIRukgOkgELEGQYASIFcgMYgAEiSwoQTWFjaGluZURpc2tRdWVyeRIeCgVuYW1lcxgBIAMoCUIPukgMkgEJEGQiBXIDGIABEhcKBXNpemVzGAIgAygEQgi6SAWSAQIQZCK5AQoPTWFjaGluZUJNQ1F1ZXJ5Eh0KB2FkZHJlc3MYASABKAlCB7pIBHICcAFIAIgBARIdCgNtYWMYAiABKAlCC7pICHIGuLOusQIBSAGIAQESGwoEdXNlchgDIAEoCUIIukgFcgMYgAFIAogBARIgCglpbnRlcmZhY2UYBCABKAlCCLpIBXIDGIABSAOIAQFCCgoIX2FkZHJlc3NCBgoEX21hY0IHCgVfdXNlckIMCgpfaW50ZXJmYWNlIoMECg9NYWNoaW5lRlJVUXVlcnkSKgoTY2hhc3Npc19wYXJ0X251bWJlchgBIAEoCUIIukgFcgMYgAFIAIgBARIqChNjaGFzc2lzX3BhcnRfc2VyaWFsGAIgASgJQgi6SAVyAxiAAUgBiAEBEiAKCWJvYXJkX21mZxgDIAEoCUIIukgFcgMYgAFIAogBARIjCgxib2FyZF9zZXJpYWwYBCABKAlCCLpIBXIDGIABSAOIAQESKAoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCCLpIBXIDGIABSASIAQESKwoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCCLpIBXIDGIABSAWIAQESKgoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUIIukgFcgMYgAFIBogBARIlCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUIIukgFcgMYgAFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQg8KDV9ib2FyZF9zZXJpYWxCFAoSX2JvYXJkX3BhcnRfbnVtYmVyQhcKFV9wcm9kdWN0X21hbnVmYWN0dXJlckIWChRfcHJvZHVjdF9wYXJ0X251bWJlckIRCg9fcHJvZHVjdF9zZXJpYWwiXAoUTWFjaGluZUhhcmR3YXJlUXVlcnkSEwoGbWVtb3J5GAEgASgESACIAQESFgoJY3B1X2NvcmVzGAIgASgNSAGIAQFCCQoHX21lbW9yeUIMCgpfY3B1X2NvcmVzKmUKCklQUHJvdG9jb2wSGwoXSVBfUFJPVE9DT0xfVU5TUEVDSUZJRUQQABIcCg9JUF9QUk9UT0NPTF9UQ1AQARoHgrIZA3RjcBIcCg9JUF9QUk9UT0NPTF9VRFAQAhoHgrIZA3VkcCqvAQoMTWFjaGluZVN0YXRlEiMKGU1BQ0hJTkVfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABIoChZNQUNISU5FX1NUQVRFX1JFU0VSVkVEEAEaDIKyGQhyZXNlcnZlZBIkChRNQUNISU5FX1NUQVRFX0xPQ0tFRBACGgqCshkGbG9ja2VkEioKF01BQ0hJTkVfU1RBVEVfQVZBSUxBQkxFEAMaDYKyGQlhdmFpbGFibGUq3wEKHU1hY2hpbmVQcm92aXNpb25pbmdFdmVudFN0YXRlEjYKLE1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASPQoqTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfQ1JBU0hMT09QEAEaDYKyGQljcmFzaGxvb3ASRwovTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfRkFJTEVEX1JFQ0xBSU0QAhoSgrIZDmZhaWxlZC1yZWNsYWltKp8GChxNYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRUeXBlEi8KK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfVU5TUEVDSUZJRUQQABI0CiVNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0FMSVZFEAEaCYKyGQVBbGl2ZRI4CidNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0NSQVNIRUQQAhoLgrIZB0NyYXNoZWQSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QWEVfQk9PVElORxADGg+CshkLUFhFIEJvb3RpbmcSRgouTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QTEFOTkVEX1JFQk9PVBAEGhKCshkOUGxhbm5lZCBSZWJvb3QSPAopTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QUkVQQVJJTkcQBRoNgrIZCVByZXBhcmluZxJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1JFR0lTVEVSSU5HEAYaD4KyGQtSZWdpc3RlcmluZxI4CidNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1dBSVRJTkcQBxoLgrIZB1dhaXRpbmcSPgoqTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9JTlNUQUxMSU5HEAgaDoKyGQpJbnN0YWxsaW5nEk4KMk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQk9PVElOR19ORVdfS0VSTkVMEAkaFoKyGRJCb290aW5nIE5ldyBLZXJuZWwSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QSE9ORURfSE9NRRAKGg+CshkLUGhvbmVkIEhvbWUSSAovTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9NQUNISU5FX1JFQ0xBSU0QCxoTgrIZD01hY2hpbmUgUmVjbGFpbSq6AQoRTWFjaGluZUxpdmVsaW5lc3MSKAoeTUFDSElORV9MSVZFTElORVNTX1VOU1BFQ0lGSUVEEAAaBIKyGQASJwoYTUFDSElORV9MSVZFTElORVNTX0FMSVZFEAEaCYKyGQVhbGl2ZRIlChdNQUNISU5FX0xJVkVMSU5FU1NfREVBRBACGgiCshkEZGVhZBIrChpNQUNISU5FX0xJVkVMSU5FU1NfVU5LTk9XThADGguCshkHdW5rbm93biqsAQoVTWFjaGluZUFsbG9jYXRpb25UeXBlEi0KI01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAAaBIKyGQASMAofTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfTUFDSElORRABGguCshkHbWFjaGluZRIyCiBNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9GSVJFV0FMTBACGgyCshkIZmlyZXdhbGwq/gQKEU1hY2hpbmVCTUNDb21tYW5kEiMKH01BQ0hJTkVfQk1DX0NPTU1BTkRfVU5TUEVDSUZJRUQQABIiChZNQUNISU5FX0JNQ19DT01NQU5EX09OEAEaBoKyGQJvbhIkChdNQUNISU5FX0JNQ19DT01NQU5EX09GRhACGgeCshkDb2ZmEigKGU1BQ0hJTkVfQk1DX0NPTU1BTkRfUkVTRVQQAxoJgrIZBXJlc2V0EigKGU1BQ0hJTkVfQk1DX0NPTU1BTkRfQ1lDTEUQBBoJgrIZBWN5Y2xlEjYKIE1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9UT19CSU9TEAUaEIKyGQxib290LXRvLWJpb3MSOgoiTUFDSElORV9CTUNfQ09NTUFORF9CT09UX0ZST01fRElTSxAGGhKCshkOYm9vdC1mcm9tLWRpc2sSOAohTUFDSElORV9CTUNfQ09NTUFORF9CT09UX0ZST01fUFhFEAcaEYKyGQ1ib290LWZyb20tcHhlEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09OEAgaE4KyGQ9pZGVudGlmeS1sZWQtb24SPgokTUFDSElORV9CTUNfQ09NTUFORF9JREVOVElGWV9MRURfT0ZGEAkaFIKyGRBpZGVudGlmeS1sZWQtb2ZmEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9ERUxFVEVEEAoaE4KyGQ9tYWNoaW5lLWRlbGV0ZWQSPAojTUFDSElORV9CTUNfQ09NTUFORF9NQUNISU5FX0NSRUFURUQQCxoTgrIZD21hY2hpbmUtY3JlYXRlZDK8BgoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQISfQoKQk1DQ29tbWFuZBIyLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXNwb25zZSIGyvMYAgECEnEKBkdldEJNQxIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVzcG9uc2UiBsrzGAIBAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxNYWNoaW5lUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * MachineServiceGetRequest is the request payload for a machine get request @@ -178,13 +178,6 @@ export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServ */ networks: MachineAllocationNetwork[]; - /** - * IPs to to attach to this machine additionally - * - * @generated from field: repeated metalstack.api.v2.MachineAllocationIp ips = 14; - */ - ips: MachineAllocationIp[]; - /** * PlacementTags by default machines are spread across the racks inside a partition for every project. * if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags @@ -860,42 +853,21 @@ export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocat * @generated from field: bool no_auto_acquire_ip = 2; */ noAutoAcquireIp: boolean; -}; - -/** - * Describes the message metalstack.api.v2.MachineAllocationNetwork. - * Use `create(MachineAllocationNetworkSchema)` to create a new message. - */ -export const MachineAllocationNetworkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 19); - -/** - * MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create - * - * @generated from message metalstack.api.v2.MachineAllocationIp - */ -export type MachineAllocationIp = Message<"metalstack.api.v2.MachineAllocationIp"> & { - /** - * IP to to attach to this machine additionally - * - * @generated from field: string ip = 1; - */ - ip: string; /** - * Namespace where this ip was created, usually the project of the namespaced tenant network. + * IPs to to attach to this machine additionally * - * @generated from field: optional string namespace = 2; + * @generated from field: repeated string ips = 3; */ - namespace?: string; + ips: string[]; }; /** - * Describes the message metalstack.api.v2.MachineAllocationIp. - * Use `create(MachineAllocationIpSchema)` to create a new message. + * Describes the message metalstack.api.v2.MachineAllocationNetwork. + * Use `create(MachineAllocationNetworkSchema)` to create a new message. */ -export const MachineAllocationIpSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 20); +export const MachineAllocationNetworkSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 19); /** * FirewallRules can be defined during firewall allocation @@ -923,7 +895,7 @@ export type FirewallRules = Message<"metalstack.api.v2.FirewallRules"> & { * Use `create(FirewallRulesSchema)` to create a new message. */ export const FirewallRulesSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 21); + messageDesc(file_metalstack_api_v2_machine, 20); /** * FirewallEgressRule defines rules for outgoing traffic @@ -965,7 +937,7 @@ export type FirewallEgressRule = Message<"metalstack.api.v2.FirewallEgressRule"> * Use `create(FirewallEgressRuleSchema)` to create a new message. */ export const FirewallEgressRuleSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 22); + messageDesc(file_metalstack_api_v2_machine, 21); /** * FirewallIngressRule defines rules for incoming traffic @@ -1014,7 +986,7 @@ export type FirewallIngressRule = Message<"metalstack.api.v2.FirewallIngressRule * Use `create(FirewallIngressRuleSchema)` to create a new message. */ export const FirewallIngressRuleSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 23); + messageDesc(file_metalstack_api_v2_machine, 22); /** * MachineNetwork contains details which network should be created on a allocated machine @@ -1091,7 +1063,7 @@ export type MachineNetwork = Message<"metalstack.api.v2.MachineNetwork"> & { * Use `create(MachineNetworkSchema)` to create a new message. */ export const MachineNetworkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 24); + messageDesc(file_metalstack_api_v2_machine, 23); /** * MachineHardware contains hardware details @@ -1140,7 +1112,7 @@ export type MachineHardware = Message<"metalstack.api.v2.MachineHardware"> & { * Use `create(MachineHardwareSchema)` to create a new message. */ export const MachineHardwareSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 25); + messageDesc(file_metalstack_api_v2_machine, 24); /** * MetalCPU contains details of a cpu in this machine @@ -1182,7 +1154,7 @@ export type MetalCPU = Message<"metalstack.api.v2.MetalCPU"> & { * Use `create(MetalCPUSchema)` to create a new message. */ export const MetalCPUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 26); + messageDesc(file_metalstack_api_v2_machine, 25); /** * MetalGPU contains details of a gpu in this machine @@ -1210,7 +1182,7 @@ export type MetalGPU = Message<"metalstack.api.v2.MetalGPU"> & { * Use `create(MetalGPUSchema)` to create a new message. */ export const MetalGPUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 27); + messageDesc(file_metalstack_api_v2_machine, 26); /** * MachineNic contains details of a network interface of this machine @@ -1280,7 +1252,7 @@ export type MachineNic = Message<"metalstack.api.v2.MachineNic"> & { * Use `create(MachineNicSchema)` to create a new message. */ export const MachineNicSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 28); + messageDesc(file_metalstack_api_v2_machine, 27); /** * MachineBlockDevice contains details of a block device of this machine @@ -1308,7 +1280,7 @@ export type MachineBlockDevice = Message<"metalstack.api.v2.MachineBlockDevice"> * Use `create(MachineBlockDeviceSchema)` to create a new message. */ export const MachineBlockDeviceSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 29); + messageDesc(file_metalstack_api_v2_machine, 28); /** * MachineChassisIdentifyLEDState describes the identifier led state @@ -1336,7 +1308,7 @@ export type MachineChassisIdentifyLEDState = Message<"metalstack.api.v2.MachineC * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. */ export const MachineChassisIdentifyLEDStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 30); + messageDesc(file_metalstack_api_v2_machine, 29); /** * MachineBMCReport is sent from the metal-bmc to update bmc and power related details @@ -1399,7 +1371,7 @@ export type MachineBMCReport = Message<"metalstack.api.v2.MachineBMCReport"> & { * Use `create(MachineBMCReportSchema)` to create a new message. */ export const MachineBMCReportSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 31); + messageDesc(file_metalstack_api_v2_machine, 30); /** * MachineBios contains BIOS details of this machine @@ -1434,7 +1406,7 @@ export type MachineBios = Message<"metalstack.api.v2.MachineBios"> & { * Use `create(MachineBiosSchema)` to create a new message. */ export const MachineBiosSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 32); + messageDesc(file_metalstack_api_v2_machine, 31); /** * MachineBMC describe details of the ipmi or out of band device @@ -1497,7 +1469,7 @@ export type MachineBMC = Message<"metalstack.api.v2.MachineBMC"> & { * Use `create(MachineBMCSchema)` to create a new message. */ export const MachineBMCSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 33); + messageDesc(file_metalstack_api_v2_machine, 32); /** * MachineFRU describes details to the machine which are required in case of a necessary replacement @@ -1567,7 +1539,7 @@ export type MachineFRU = Message<"metalstack.api.v2.MachineFRU"> & { * Use `create(MachineFRUSchema)` to create a new message. */ export const MachineFRUSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 34); + messageDesc(file_metalstack_api_v2_machine, 33); /** * MachinePowerMetric contains metrics of the power consumption of a machine @@ -1618,7 +1590,7 @@ export type MachinePowerMetric = Message<"metalstack.api.v2.MachinePowerMetric"> * Use `create(MachinePowerMetricSchema)` to create a new message. */ export const MachinePowerMetricSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 35); + messageDesc(file_metalstack_api_v2_machine, 34); /** * MachinePowerSupply contains details of the power supply of a machine @@ -1646,7 +1618,7 @@ export type MachinePowerSupply = Message<"metalstack.api.v2.MachinePowerSupply"> * Use `create(MachinePowerSupplySchema)` to create a new message. */ export const MachinePowerSupplySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 36); + messageDesc(file_metalstack_api_v2_machine, 35); /** * MachineRecentProvisioningEvents the recent provisioning events for this machine @@ -1688,7 +1660,7 @@ export type MachineRecentProvisioningEvents = Message<"metalstack.api.v2.Machine * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. */ export const MachineRecentProvisioningEventsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 37); + messageDesc(file_metalstack_api_v2_machine, 36); /** * MachineProvisioningEvent is a event which has occurred during provisioning @@ -1723,7 +1695,7 @@ export type MachineProvisioningEvent = Message<"metalstack.api.v2.MachineProvisi * Use `create(MachineProvisioningEventSchema)` to create a new message. */ export const MachineProvisioningEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 38); + messageDesc(file_metalstack_api_v2_machine, 37); /** * MachineVPN contains configuration data for the VPN connection @@ -1765,7 +1737,7 @@ export type MachineVPN = Message<"metalstack.api.v2.MachineVPN"> & { * Use `create(MachineVPNSchema)` to create a new message. */ export const MachineVPNSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 39); + messageDesc(file_metalstack_api_v2_machine, 38); /** * MachineQuery contains fields which can be specified to list specific machines. @@ -1901,7 +1873,7 @@ export type MachineQuery = Message<"metalstack.api.v2.MachineQuery"> & { * Use `create(MachineQuerySchema)` to create a new message. */ export const MachineQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 40); + messageDesc(file_metalstack_api_v2_machine, 39); /** * MachineAllocationQuery allocation specific query parameters @@ -1978,7 +1950,7 @@ export type MachineAllocationQuery = Message<"metalstack.api.v2.MachineAllocatio * Use `create(MachineAllocationQuerySchema)` to create a new message. */ export const MachineAllocationQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 41); + messageDesc(file_metalstack_api_v2_machine, 40); /** * MachineNetworkQuery network specific machine queries @@ -2034,7 +2006,7 @@ export type MachineNetworkQuery = Message<"metalstack.api.v2.MachineNetworkQuery * Use `create(MachineNetworkQuerySchema)` to create a new message. */ export const MachineNetworkQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 42); + messageDesc(file_metalstack_api_v2_machine, 41); /** * MachineNicQuery nic specific machine queries @@ -2076,7 +2048,7 @@ export type MachineNicQuery = Message<"metalstack.api.v2.MachineNicQuery"> & { * Use `create(MachineNicQuerySchema)` to create a new message. */ export const MachineNicQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 43); + messageDesc(file_metalstack_api_v2_machine, 42); /** * MachineDiskQuery disk specific machine queries @@ -2104,7 +2076,7 @@ export type MachineDiskQuery = Message<"metalstack.api.v2.MachineDiskQuery"> & { * Use `create(MachineDiskQuerySchema)` to create a new message. */ export const MachineDiskQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 44); + messageDesc(file_metalstack_api_v2_machine, 43); /** * MachineBMCQuery machine ipmi or bmc specific machine queries @@ -2146,7 +2118,7 @@ export type MachineBMCQuery = Message<"metalstack.api.v2.MachineBMCQuery"> & { * Use `create(MachineBMCQuerySchema)` to create a new message. */ export const MachineBMCQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 45); + messageDesc(file_metalstack_api_v2_machine, 44); /** * MachineFRUQuery machine fru specific machine queries @@ -2216,7 +2188,7 @@ export type MachineFRUQuery = Message<"metalstack.api.v2.MachineFRUQuery"> & { * Use `create(MachineFRUQuerySchema)` to create a new message. */ export const MachineFRUQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 46); + messageDesc(file_metalstack_api_v2_machine, 45); /** * MachineHardwareQuery machine hardware specific machine queries @@ -2244,7 +2216,7 @@ export type MachineHardwareQuery = Message<"metalstack.api.v2.MachineHardwareQue * Use `create(MachineHardwareQuerySchema)` to create a new message. */ export const MachineHardwareQuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_metalstack_api_v2_machine, 47); + messageDesc(file_metalstack_api_v2_machine, 46); /** * IPProtocol defines tcp|udp diff --git a/proto/metalstack/api/v2/machine.proto b/proto/metalstack/api/v2/machine.proto index a4812f02..1006a2fa 100644 --- a/proto/metalstack/api/v2/machine.proto +++ b/proto/metalstack/api/v2/machine.proto @@ -118,8 +118,6 @@ message MachineServiceCreateRequest { Labels labels = 12; // Networks the networks that this machine will be placed in. repeated MachineAllocationNetwork networks = 13; - // IPs to to attach to this machine additionally - repeated MachineAllocationIp ips = 14; // PlacementTags by default machines are spread across the racks inside a partition for every project. // if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags repeated string placement_tags = 15 [(buf.validate.field).repeated.max_items = 64]; @@ -346,14 +344,8 @@ message MachineAllocationNetwork { // NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. // By default one ip address is acquired per network for the machine bool no_auto_acquire_ip = 2; -} - -// MachineAllocationIp defines a ip and a optional namespace which should be attached to this machine during create -message MachineAllocationIp { - // IP to to attach to this machine additionally - string ip = 1 [(buf.validate.field).string.ip = true]; - // Namespace where this ip was created, usually the project of the namespaced tenant network. - optional string namespace = 2 [(buf.validate.field).string.uuid = true]; + // IPs to to attach to this machine additionally + repeated string ips = 3 [(buf.validate.field).repeated.(metalstack.api.v2.ips) = true]; } // FirewallRules can be defined during firewall allocation diff --git a/python/metalstack/api/v2/machine_pb2.py b/python/metalstack/api/v2/machine_pb2.py index cfe2c614..4c0f794f 100644 --- a/python/metalstack/api/v2/machine_pb2.py +++ b/python/metalstack/api/v2/machine_pb2.py @@ -33,7 +33,7 @@ from metalstack.api.v2 import size_pb2 as metalstack_dot_api_dot_v2_dot_size__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\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\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12\x38\n\x03ips\x18\x0e \x03(\x0b\x32&.metalstack.api.v2.MachineAllocationIpR\x03ips\x12/\n\x0eplacement_tags\x18\x0f \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12G\n\x0b\x64ns_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xac\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12G\n\x0b\x64ns_servers\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"n\n\x18MachineAllocationNetwork\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12+\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08R\x0fnoAutoAcquireIp\"i\n\x13MachineAllocationIp\x12\x17\n\x02ip\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x02ip\x12+\n\tnamespace\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\tnamespace\x88\x01\x01\x42\x0c\n\n_namespace\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\x9c\x03\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\x12\'\n\x07project\x18\t \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07project\x88\x01\x01\x42\n\n\x08_project\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xc5\x08\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x12\x1d\n\x07waiting\x18\x0f \x01(\x08H\x0eR\x07waiting\x88\x01\x01\x12\'\n\x0cpreallocated\x18\x10 \x01(\x08H\x0fR\x0cpreallocated\x88\x01\x01\x12(\n\rnot_allocated\x18\x11 \x01(\x08H\x10R\x0cnotAllocated\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_stateB\n\n\x08_waitingB\x0f\n\r_preallocatedB\x10\n\x0e_not_allocated\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/machine.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\"metalstack/api/v2/filesystem.proto\x1a\x1dmetalstack/api/v2/image.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1cmetalstack/api/v2/size.proto\"\\\n\x18MachineServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"Q\n\x19MachineServiceGetResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\x90\x08\n\x1bMachineServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12!\n\x04uuid\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12(\n\x08hostname\x18\x05 \x01(\tB\x07\xbaH\x04r\x02h\x01H\x02R\x08hostname\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12\x1c\n\x04size\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04size\x12\x1e\n\x05image\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05image\x12\x30\n\x11\x66ilesystem_layout\x18\t \x01(\tH\x03R\x10\x66ilesystemLayout\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\n \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12*\n\x08userdata\x18\x0b \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02H\x04R\x08userdata\x88\x01\x01\x12\x31\n\x06labels\x18\x0c \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12G\n\x08networks\x18\r \x03(\x0b\x32+.metalstack.api.v2.MachineAllocationNetworkR\x08networks\x12/\n\x0eplacement_tags\x18\x0f \x03(\tB\x08\xbaH\x05\x92\x01\x02\x10@R\rplacementTags\x12G\n\x0b\x64ns_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x11 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12[\n\x0f\x61llocation_type\x18\x12 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12\x44\n\rfirewall_spec\x18\x13 \x01(\x0b\x32\x1f.metalstack.api.v2.FirewallSpecR\x0c\x66irewallSpecB\x07\n\x05_uuidB\x0e\n\x0c_descriptionB\x0b\n\t_hostnameB\x14\n\x12_filesystem_layoutB\x0b\n\t_userdata\"W\n\x0c\x46irewallSpec\x12G\n\x0e\x66irewall_rules\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\"T\n\x1cMachineServiceCreateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xef\x02\n\x1bMachineServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x12\x39\n\x0fssh_public_keys\x18\x06 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeysB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cMachineServiceUpdateResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"v\n\x19MachineServiceListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x05query\"T\n\x1aMachineServiceListResponse\x12\x36\n\x08machines\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.MachineR\x08machines\"_\n\x1bMachineServiceDeleteRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cMachineServiceDeleteResponse\x12\x34\n\x07machine\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\"\xad\x01\n\x1fMachineServiceBMCCommandRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12H\n\x07\x63ommand\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineBMCCommandB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07\x63ommand\"\"\n MachineServiceBMCCommandResponse\"_\n\x1bMachineServiceGetBMCRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"s\n\x1cMachineServiceGetBMCResponse\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x35\n\x03\x62mc\x18\x02 \x01(\x0b\x32#.metalstack.api.v2.MachineBMCReportR\x03\x62mc\"\x8d\x04\n\x07Machine\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12:\n\tpartition\x18\x03 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\x12\x1c\n\x04rack\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x04rack\x12+\n\x04size\x18\x05 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\x12>\n\x08hardware\x18\x06 \x01(\x0b\x32\".metalstack.api.v2.MachineHardwareR\x08hardware\x12\x44\n\nallocation\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.MachineAllocationR\nallocation\x12\x38\n\x06status\x18\t \x01(\x0b\x32 .metalstack.api.v2.MachineStatusR\x06status\x12p\n\x1arecent_provisioning_events\x18\n \x01(\x0b\x32\x32.metalstack.api.v2.MachineRecentProvisioningEventsR\x18recentProvisioningEvents\"\xa4\x02\n\rMachineStatus\x12\x41\n\tcondition\x18\x01 \x01(\x0b\x32#.metalstack.api.v2.MachineConditionR\tcondition\x12N\n\tled_state\x18\x02 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12N\n\nliveliness\x18\x03 \x01(\x0e\x32$.metalstack.api.v2.MachineLivelinessB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nliveliness\x12\x30\n\x14metal_hammer_version\x18\x04 \x01(\tR\x12metalHammerVersion\"\xa4\x01\n\x10MachineCondition\x12?\n\x05state\x18\x01 \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12 \n\x06issuer\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06issuer\"\xac\x07\n\x11MachineAllocation\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\'\n\ncreated_by\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\tcreatedBy\x12\"\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12.\n\x05image\x18\x07 \x01(\x0b\x32\x18.metalstack.api.v2.ImageR\x05image\x12P\n\x11\x66ilesystem_layout\x18\x08 \x01(\x0b\x32#.metalstack.api.v2.FilesystemLayoutR\x10\x66ilesystemLayout\x12=\n\x08networks\x18\t \x03(\x0b\x32!.metalstack.api.v2.MachineNetworkR\x08networks\x12#\n\x08hostname\x18\n \x01(\tB\x07\xbaH\x04r\x02h\x01R\x08hostname\x12\x39\n\x0fssh_public_keys\x18\x0b \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x32\"\x07r\x05\x10\x01\x18\x80@R\rsshPublicKeys\x12%\n\x08userdata\x18\x0c \x01(\tB\t\xbaH\x06r\x04\x18\x80\x80\x02R\x08userdata\x12[\n\x0f\x61llocation_type\x18\r \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0e\x61llocationType\x12G\n\x0e\x66irewall_rules\x18\x0e \x01(\x0b\x32 .metalstack.api.v2.FirewallRulesR\rfirewallRules\x12G\n\x0b\x64ns_servers\x18\x0f \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\ndnsServers\x12G\n\x0bntp_servers\x18\x10 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\nntpServers\x12/\n\x03vpn\x18\x11 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNR\x03vpn\"\x8e\x01\n\x18MachineAllocationNetwork\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12+\n\x12no_auto_acquire_ip\x18\x02 \x01(\x08R\x0fnoAutoAcquireIp\x12\x1e\n\x03ips\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\x90\x01\n\rFirewallRules\x12=\n\x06\x65gress\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.FirewallEgressRuleR\x06\x65gress\x12@\n\x07ingress\x18\x02 \x03(\x0b\x32&.metalstack.api.v2.FirewallIngressRuleR\x07ingress\"\xd0\x01\n\x12\x46irewallEgressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12\x31\n\x07\x63omment\x18\x04 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\xf3\x01\n\x13\x46irewallIngressRule\x12\x43\n\x08protocol\x18\x01 \x01(\x0e\x32\x1d.metalstack.api.v2.IPProtocolB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08protocol\x12$\n\x05ports\x18\x02 \x03(\rB\x0e\xbaH\x0b\x92\x01\x08\"\x06*\x04\x18\xfc\xff\x03R\x05ports\x12\x1c\n\x02to\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x02to\x12 \n\x04\x66rom\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x04\x66rom\x12\x31\n\x07\x63omment\x18\x05 \x01(\tB\x17\xbaH\x14r\x0f\x18\x64\x32\x0b^[a-z_ -]*$\xd8\x01\x01R\x07\x63omment\"\x9c\x03\n\x0eMachineNetwork\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12K\n\x0cnetwork_type\x18\x05 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0bnetworkType\x12?\n\x08nat_type\x18\x06 \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x10\n\x03vrf\x18\x07 \x01(\x04R\x03vrf\x12\x10\n\x03\x61sn\x18\x08 \x01(\rR\x03\x61sn\x12\'\n\x07project\x18\t \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07project\x88\x01\x01\x42\n\n\x08_project\"\xfb\x01\n\x0fMachineHardware\x12\x16\n\x06memory\x18\x01 \x01(\x04R\x06memory\x12;\n\x05\x64isks\x18\x03 \x03(\x0b\x32%.metalstack.api.v2.MachineBlockDeviceR\x05\x64isks\x12/\n\x04\x63pus\x18\x04 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalCPUR\x04\x63pus\x12/\n\x04gpus\x18\x05 \x03(\x0b\x32\x1b.metalstack.api.v2.MetalGPUR\x04gpus\x12\x31\n\x04nics\x18\x06 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\x04nics\"|\n\x08MetalCPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\x12\x14\n\x05\x63ores\x18\x03 \x01(\rR\x05\x63ores\x12\x18\n\x07threads\x18\x04 \x01(\rR\x07threads\"L\n\x08MetalGPU\x12 \n\x06vendor\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x06vendor\x12\x1e\n\x05model\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x05model\"\xa7\x02\n\nMachineNic\x12\x1d\n\x03mac\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12(\n\nidentifier\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\nidentifier\x12 \n\x06vendor\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x06vendor\x12\x1e\n\x05model\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05model\x12\x14\n\x05speed\x18\x06 \x01(\x04R\x05speed\x12;\n\tneighbors\x18\x07 \x03(\x0b\x32\x1d.metalstack.api.v2.MachineNicR\tneighbors\x12\x1a\n\x08hostname\x18\x08 \x01(\tR\x08hostname\"I\n\x12MachineBlockDevice\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x12\n\x04size\x18\x02 \x01(\x04R\x04size\"o\n\x1eMachineChassisIdentifyLEDState\x12\x1e\n\x05value\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01R\x05value\x12-\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\"\xcb\x03\n\x10MachineBMCReport\x12/\n\x03\x62mc\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineBMCR\x03\x62mc\x12\x32\n\x04\x62ios\x18\x02 \x01(\x0b\x32\x1e.metalstack.api.v2.MachineBiosR\x04\x62ios\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\x12H\n\x0cpower_metric\x18\x04 \x01(\x0b\x32%.metalstack.api.v2.MachinePowerMetricR\x0bpowerMetric\x12L\n\x0epower_supplies\x18\x05 \x03(\x0b\x32%.metalstack.api.v2.MachinePowerSupplyR\rpowerSupplies\x12N\n\tled_state\x18\x06 \x01(\x0b\x32\x31.metalstack.api.v2.MachineChassisIdentifyLEDStateR\x08ledState\x12\x39\n\nupdated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"z\n\x0bMachineBios\x12%\n\x07version\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12#\n\x06vendor\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x06vendor\x12\x1f\n\x04\x64\x61te\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04\x64\x61te\"\x99\x02\n\nMachineBMC\x12\"\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x80\x02\x01R\x07\x61\x64\x64ress\x12\x1d\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x03mac\x12\x1f\n\x04user\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x04user\x12\'\n\x08password\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x08password\x12)\n\tinterface\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\tinterface\x12%\n\x07version\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x07version\x12,\n\x0bpower_state\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\npowerState\"\xa6\x05\n\nMachineFRU\x12@\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12@\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12-\n\tboard_mfg\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12:\n\x10\x62oard_mfg_serial\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x03R\x0e\x62oardMfgSerial\x88\x01\x01\x12<\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12\x43\n\x14product_manufacturer\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x05R\x13productManufacturer\x88\x01\x01\x12@\n\x13product_part_number\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x37\n\x0eproduct_serial\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x13\n\x11_board_mfg_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"\xce\x01\n\x12MachinePowerMetric\x12\x34\n\x16\x61verage_consumed_watts\x18\x01 \x01(\x02R\x14\x61verageConsumedWatts\x12&\n\x0finterval_in_min\x18\x02 \x01(\x02R\rintervalInMin\x12,\n\x12max_consumed_watts\x18\x03 \x01(\x02R\x10maxConsumedWatts\x12,\n\x12min_consumed_watts\x18\x04 \x01(\x02R\x10minConsumedWatts\"B\n\x12MachinePowerSupply\x12\x16\n\x06health\x18\x01 \x01(\tR\x06health\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\"\xd3\x02\n\x1fMachineRecentProvisioningEvents\x12\x43\n\x06\x65vents\x18\x01 \x03(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x06\x65vents\x12\x42\n\x0flast_event_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastEventTime\x12U\n\x10last_error_event\x18\x03 \x01(\x0b\x32+.metalstack.api.v2.MachineProvisioningEventR\x0elastErrorEvent\x12P\n\x05state\x18\x04 \x01(\x0e\x32\x30.metalstack.api.v2.MachineProvisioningEventStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05state\"\xab\x01\n\x18MachineProvisioningEvent\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x45\n\x05\x65vent\x18\x02 \x01(\x0e\x32/.metalstack.api.v2.MachineProvisioningEventTypeR\x05\x65vent\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"\x99\x01\n\nMachineVPN\x12\x32\n\x15\x63ontrol_plane_address\x18\x01 \x01(\tR\x13\x63ontrolPlaneAddress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\x12\x1c\n\tconnected\x18\x03 \x01(\x08R\tconnected\x12\x1e\n\x03ips\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\"\xc5\x08\n\x0cMachineQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12-\n\tpartition\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\tpartition\x88\x01\x01\x12#\n\x04size\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x04size\x88\x01\x01\x12#\n\x04rack\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x04rack\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12N\n\nallocation\x18\x07 \x01(\x0b\x32).metalstack.api.v2.MachineAllocationQueryH\x06R\nallocation\x88\x01\x01\x12\x45\n\x07network\x18\x08 \x01(\x0b\x32&.metalstack.api.v2.MachineNetworkQueryH\x07R\x07network\x88\x01\x01\x12\x39\n\x03nic\x18\t \x01(\x0b\x32\".metalstack.api.v2.MachineNicQueryH\x08R\x03nic\x88\x01\x01\x12<\n\x04\x64isk\x18\n \x01(\x0b\x32#.metalstack.api.v2.MachineDiskQueryH\tR\x04\x64isk\x88\x01\x01\x12\x39\n\x03\x62mc\x18\x0b \x01(\x0b\x32\".metalstack.api.v2.MachineBMCQueryH\nR\x03\x62mc\x88\x01\x01\x12\x39\n\x03\x66ru\x18\x0c \x01(\x0b\x32\".metalstack.api.v2.MachineFRUQueryH\x0bR\x03\x66ru\x88\x01\x01\x12H\n\x08hardware\x18\r \x01(\x0b\x32\'.metalstack.api.v2.MachineHardwareQueryH\x0cR\x08hardware\x88\x01\x01\x12:\n\x05state\x18\x0e \x01(\x0e\x32\x1f.metalstack.api.v2.MachineStateH\rR\x05state\x88\x01\x01\x12\x1d\n\x07waiting\x18\x0f \x01(\x08H\x0eR\x07waiting\x88\x01\x01\x12\'\n\x0cpreallocated\x18\x10 \x01(\x08H\x0fR\x0cpreallocated\x88\x01\x01\x12(\n\rnot_allocated\x18\x11 \x01(\x08H\x10R\x0cnotAllocated\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\x0c\n\n_partitionB\x07\n\x05_sizeB\x07\n\x05_rackB\t\n\x07_labelsB\r\n\x0b_allocationB\n\n\x08_networkB\x06\n\x04_nicB\x07\n\x05_diskB\x06\n\x04_bmcB\x06\n\x04_fruB\x0b\n\t_hardwareB\x08\n\x06_stateB\n\n\x08_waitingB\x0f\n\r_preallocatedB\x10\n\x0e_not_allocated\"\xde\x04\n\x16MachineAllocationQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x12%\n\x05image\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x05image\x88\x01\x01\x12<\n\x11\x66ilesystem_layout\x18\x05 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x04R\x10\x66ilesystemLayout\x88\x01\x01\x12+\n\x08hostname\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x05R\x08hostname\x88\x01\x01\x12`\n\x0f\x61llocation_type\x18\x07 \x01(\x0e\x32(.metalstack.api.v2.MachineAllocationTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x0e\x61llocationType\x88\x01\x01\x12\x36\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x07R\x06labels\x88\x01\x01\x12\x34\n\x03vpn\x18\t \x01(\x0b\x32\x1d.metalstack.api.v2.MachineVPNH\x08R\x03vpn\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_nameB\n\n\x08_projectB\x08\n\x06_imageB\x14\n\x12_filesystem_layoutB\x0b\n\t_hostnameB\x12\n\x10_allocation_typeB\t\n\x07_labelsB\x06\n\x04_vpn\"\xe4\x01\n\x13MachineNetworkQuery\x12\x1a\n\x08networks\x18\x01 \x03(\tR\x08networks\x12(\n\x08prefixes\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x1e\n\x03ips\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xc0\xa4\xb3\xb1\x02\x01R\x03ips\x12\x12\n\x04vrfs\x18\x05 \x03(\x04R\x04vrfs\x12\x12\n\x04\x61sns\x18\x06 \x03(\rR\x04\x61sns\"\xd9\x01\n\x0fMachineNicQuery\x12(\n\x04macs\x18\x01 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x04macs\x12\'\n\x05names\x18\x02 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\x05names\x12\x39\n\rneighbor_macs\x18\x03 \x03(\tB\x14\xbaH\x11\x92\x01\x0e\x10\x64\x18\x01\"\x08r\x06\xb8\xb3\xae\xb1\x02\x01R\x0cneighborMacs\x12\x38\n\x0eneighbor_names\x18\x04 \x03(\tB\x11\xbaH\x0e\x92\x01\x0b\x10\x64\x18\x01\"\x05r\x03\x18\x80\x01R\rneighborNames\"Y\n\x10MachineDiskQuery\x12%\n\x05names\x18\x01 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x64\"\x05r\x03\x18\x80\x01R\x05names\x12\x1e\n\x05sizes\x18\x02 \x03(\x04\x42\x08\xbaH\x05\x92\x01\x02\x10\x64R\x05sizes\"\xd8\x01\n\x0fMachineBMCQuery\x12&\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x00R\x07\x61\x64\x64ress\x88\x01\x01\x12\"\n\x03mac\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xb8\xb3\xae\xb1\x02\x01H\x01R\x03mac\x88\x01\x01\x12!\n\x04user\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x04user\x88\x01\x01\x12+\n\tinterface\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\tinterface\x88\x01\x01\x42\n\n\x08_addressB\x06\n\x04_macB\x07\n\x05_userB\x0c\n\n_interface\"\x88\x05\n\x0fMachineFRUQuery\x12=\n\x13\x63hassis_part_number\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x00R\x11\x63hassisPartNumber\x88\x01\x01\x12=\n\x13\x63hassis_part_serial\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x01R\x11\x63hassisPartSerial\x88\x01\x01\x12*\n\tboard_mfg\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x02R\x08\x62oardMfg\x88\x01\x01\x12\x30\n\x0c\x62oard_serial\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x03R\x0b\x62oardSerial\x88\x01\x01\x12\x39\n\x11\x62oard_part_number\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x04R\x0f\x62oardPartNumber\x88\x01\x01\x12@\n\x14product_manufacturer\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x13productManufacturer\x88\x01\x01\x12=\n\x13product_part_number\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x06R\x11productPartNumber\x88\x01\x01\x12\x34\n\x0eproduct_serial\x18\x08 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x07R\rproductSerial\x88\x01\x01\x42\x16\n\x14_chassis_part_numberB\x16\n\x14_chassis_part_serialB\x0c\n\n_board_mfgB\x0f\n\r_board_serialB\x14\n\x12_board_part_numberB\x17\n\x15_product_manufacturerB\x16\n\x14_product_part_numberB\x11\n\x0f_product_serial\"n\n\x14MachineHardwareQuery\x12\x1b\n\x06memory\x18\x01 \x01(\x04H\x00R\x06memory\x88\x01\x01\x12 \n\tcpu_cores\x18\x02 \x01(\rH\x01R\x08\x63puCores\x88\x01\x01\x42\t\n\x07_memoryB\x0c\n\n_cpu_cores*e\n\nIPProtocol\x12\x1b\n\x17IP_PROTOCOL_UNSPECIFIED\x10\x00\x12\x1c\n\x0fIP_PROTOCOL_TCP\x10\x01\x1a\x07\x82\xb2\x19\x03tcp\x12\x1c\n\x0fIP_PROTOCOL_UDP\x10\x02\x1a\x07\x82\xb2\x19\x03udp*\xaf\x01\n\x0cMachineState\x12#\n\x19MACHINE_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12(\n\x16MACHINE_STATE_RESERVED\x10\x01\x1a\x0c\x82\xb2\x19\x08reserved\x12$\n\x14MACHINE_STATE_LOCKED\x10\x02\x1a\n\x82\xb2\x19\x06locked\x12*\n\x17MACHINE_STATE_AVAILABLE\x10\x03\x1a\r\x82\xb2\x19\tavailable*\xdf\x01\n\x1dMachineProvisioningEventState\x12\x36\n,MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12=\n*MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP\x10\x01\x1a\r\x82\xb2\x19\tcrashloop\x12G\n/MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM\x10\x02\x1a\x12\x82\xb2\x19\x0e\x66\x61iled-reclaim*\x9f\x06\n\x1cMachineProvisioningEventType\x12/\n+MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x34\n%MACHINE_PROVISIONING_EVENT_TYPE_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x41live\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_CRASHED\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43rashed\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING\x10\x03\x1a\x0f\x82\xb2\x19\x0bPXE Booting\x12\x46\n.MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT\x10\x04\x1a\x12\x82\xb2\x19\x0ePlanned Reboot\x12<\n)MACHINE_PROVISIONING_EVENT_TYPE_PREPARING\x10\x05\x1a\r\x82\xb2\x19\tPreparing\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING\x10\x06\x1a\x0f\x82\xb2\x19\x0bRegistering\x12\x38\n\'MACHINE_PROVISIONING_EVENT_TYPE_WAITING\x10\x07\x1a\x0b\x82\xb2\x19\x07Waiting\x12>\n*MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING\x10\x08\x1a\x0e\x82\xb2\x19\nInstalling\x12N\n2MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL\x10\t\x1a\x16\x82\xb2\x19\x12\x42ooting New Kernel\x12@\n+MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME\x10\n\x1a\x0f\x82\xb2\x19\x0bPhoned Home\x12H\n/MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM\x10\x0b\x1a\x13\x82\xb2\x19\x0fMachine Reclaim*\xba\x01\n\x11MachineLiveliness\x12(\n\x1eMACHINE_LIVELINESS_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\'\n\x18MACHINE_LIVELINESS_ALIVE\x10\x01\x1a\t\x82\xb2\x19\x05\x61live\x12%\n\x17MACHINE_LIVELINESS_DEAD\x10\x02\x1a\x08\x82\xb2\x19\x04\x64\x65\x61\x64\x12+\n\x1aMACHINE_LIVELINESS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xac\x01\n\x15MachineAllocationType\x12-\n#MACHINE_ALLOCATION_TYPE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12\x30\n\x1fMACHINE_ALLOCATION_TYPE_MACHINE\x10\x01\x1a\x0b\x82\xb2\x19\x07machine\x12\x32\n MACHINE_ALLOCATION_TYPE_FIREWALL\x10\x02\x1a\x0c\x82\xb2\x19\x08\x66irewall*\xfe\x04\n\x11MachineBMCCommand\x12#\n\x1fMACHINE_BMC_COMMAND_UNSPECIFIED\x10\x00\x12\"\n\x16MACHINE_BMC_COMMAND_ON\x10\x01\x1a\x06\x82\xb2\x19\x02on\x12$\n\x17MACHINE_BMC_COMMAND_OFF\x10\x02\x1a\x07\x82\xb2\x19\x03off\x12(\n\x19MACHINE_BMC_COMMAND_RESET\x10\x03\x1a\t\x82\xb2\x19\x05reset\x12(\n\x19MACHINE_BMC_COMMAND_CYCLE\x10\x04\x1a\t\x82\xb2\x19\x05\x63ycle\x12\x36\n MACHINE_BMC_COMMAND_BOOT_TO_BIOS\x10\x05\x1a\x10\x82\xb2\x19\x0c\x62oot-to-bios\x12:\n\"MACHINE_BMC_COMMAND_BOOT_FROM_DISK\x10\x06\x1a\x12\x82\xb2\x19\x0e\x62oot-from-disk\x12\x38\n!MACHINE_BMC_COMMAND_BOOT_FROM_PXE\x10\x07\x1a\x11\x82\xb2\x19\rboot-from-pxe\x12<\n#MACHINE_BMC_COMMAND_IDENTIFY_LED_ON\x10\x08\x1a\x13\x82\xb2\x19\x0fidentify-led-on\x12>\n$MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF\x10\t\x1a\x14\x82\xb2\x19\x10identify-led-off\x12<\n#MACHINE_BMC_COMMAND_MACHINE_DELETED\x10\n\x1a\x13\x82\xb2\x19\x0fmachine-deleted\x12<\n#MACHINE_BMC_COMMAND_MACHINE_CREATED\x10\x0b\x1a\x13\x82\xb2\x19\x0fmachine-created2\xbc\x06\n\x0eMachineService\x12m\n\x03Get\x12+.metalstack.api.v2.MachineServiceGetRequest\x1a,.metalstack.api.v2.MachineServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x43reate\x12..metalstack.api.v2.MachineServiceCreateRequest\x1a/.metalstack.api.v2.MachineServiceCreateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06Update\x12..metalstack.api.v2.MachineServiceUpdateRequest\x1a/.metalstack.api.v2.MachineServiceUpdateResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12p\n\x04List\x12,.metalstack.api.v2.MachineServiceListRequest\x1a-.metalstack.api.v2.MachineServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12q\n\x06\x44\x65lete\x12..metalstack.api.v2.MachineServiceDeleteRequest\x1a/.metalstack.api.v2.MachineServiceDeleteResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12}\n\nBMCCommand\x12\x32.metalstack.api.v2.MachineServiceBMCCommandRequest\x1a\x33.metalstack.api.v2.MachineServiceBMCCommandResponse\"\x06\xca\xf3\x18\x02\x01\x02\x12q\n\x06GetBMC\x12..metalstack.api.v2.MachineServiceGetBMCRequest\x1a/.metalstack.api.v2.MachineServiceGetBMCResponse\"\x06\xca\xf3\x18\x02\x01\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cMachineProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -213,10 +213,8 @@ _globals['_MACHINEALLOCATION'].fields_by_name['ntp_servers']._serialized_options = b'\272H\005\222\001\002\020\n' _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['network']._loaded_options = None _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' - _globals['_MACHINEALLOCATIONIP'].fields_by_name['ip']._loaded_options = None - _globals['_MACHINEALLOCATIONIP'].fields_by_name['ip']._serialized_options = b'\272H\004r\002p\001' - _globals['_MACHINEALLOCATIONIP'].fields_by_name['namespace']._loaded_options = None - _globals['_MACHINEALLOCATIONIP'].fields_by_name['namespace']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['ips']._loaded_options = None + _globals['_MACHINEALLOCATIONNETWORK'].fields_by_name['ips']._serialized_options = b'\272H\t\222\001\006\300\244\263\261\002\001' _globals['_FIREWALLEGRESSRULE'].fields_by_name['protocol']._loaded_options = None _globals['_FIREWALLEGRESSRULE'].fields_by_name['protocol']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_FIREWALLEGRESSRULE'].fields_by_name['ports']._loaded_options = None @@ -391,116 +389,114 @@ _globals['_MACHINESERVICE'].methods_by_name['BMCCommand']._serialized_options = b'\312\363\030\002\001\002' _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._loaded_options = None _globals['_MACHINESERVICE'].methods_by_name['GetBMC']._serialized_options = b'\312\363\030\002\001\002' - _globals['_IPPROTOCOL']._serialized_start=12923 - _globals['_IPPROTOCOL']._serialized_end=13024 - _globals['_MACHINESTATE']._serialized_start=13027 - _globals['_MACHINESTATE']._serialized_end=13202 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=13205 - _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13428 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13431 - _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=14230 - _globals['_MACHINELIVELINESS']._serialized_start=14233 - _globals['_MACHINELIVELINESS']._serialized_end=14419 - _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14422 - _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14594 - _globals['_MACHINEBMCCOMMAND']._serialized_start=14597 - _globals['_MACHINEBMCCOMMAND']._serialized_end=15235 + _globals['_IPPROTOCOL']._serialized_start=12791 + _globals['_IPPROTOCOL']._serialized_end=12892 + _globals['_MACHINESTATE']._serialized_start=12895 + _globals['_MACHINESTATE']._serialized_end=13070 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_start=13073 + _globals['_MACHINEPROVISIONINGEVENTSTATE']._serialized_end=13296 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_start=13299 + _globals['_MACHINEPROVISIONINGEVENTTYPE']._serialized_end=14098 + _globals['_MACHINELIVELINESS']._serialized_start=14101 + _globals['_MACHINELIVELINESS']._serialized_end=14287 + _globals['_MACHINEALLOCATIONTYPE']._serialized_start=14290 + _globals['_MACHINEALLOCATIONTYPE']._serialized_end=14462 + _globals['_MACHINEBMCCOMMAND']._serialized_start=14465 + _globals['_MACHINEBMCCOMMAND']._serialized_end=15103 _globals['_MACHINESERVICEGETREQUEST']._serialized_start=355 _globals['_MACHINESERVICEGETREQUEST']._serialized_end=447 _globals['_MACHINESERVICEGETRESPONSE']._serialized_start=449 _globals['_MACHINESERVICEGETRESPONSE']._serialized_end=530 _globals['_MACHINESERVICECREATEREQUEST']._serialized_start=533 - _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1631 - _globals['_FIREWALLSPEC']._serialized_start=1633 - _globals['_FIREWALLSPEC']._serialized_end=1720 - _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1722 - _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1806 - _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1809 - _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=2176 - _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=2178 - _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2262 - _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2264 - _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2382 - _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2384 - _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2468 - _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2470 - _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2565 - _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2567 - _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2651 - _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_start=2654 - _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_end=2827 - _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_start=2829 - _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_end=2863 - _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_start=2865 - _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_end=2960 - _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_start=2962 - _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_end=3077 - _globals['_MACHINE']._serialized_start=3080 - _globals['_MACHINE']._serialized_end=3605 - _globals['_MACHINESTATUS']._serialized_start=3608 - _globals['_MACHINESTATUS']._serialized_end=3900 - _globals['_MACHINECONDITION']._serialized_start=3903 - _globals['_MACHINECONDITION']._serialized_end=4067 - _globals['_MACHINEALLOCATION']._serialized_start=4070 - _globals['_MACHINEALLOCATION']._serialized_end=5010 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=5012 - _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5122 - _globals['_MACHINEALLOCATIONIP']._serialized_start=5124 - _globals['_MACHINEALLOCATIONIP']._serialized_end=5229 - _globals['_FIREWALLRULES']._serialized_start=5232 - _globals['_FIREWALLRULES']._serialized_end=5376 - _globals['_FIREWALLEGRESSRULE']._serialized_start=5379 - _globals['_FIREWALLEGRESSRULE']._serialized_end=5587 - _globals['_FIREWALLINGRESSRULE']._serialized_start=5590 - _globals['_FIREWALLINGRESSRULE']._serialized_end=5833 - _globals['_MACHINENETWORK']._serialized_start=5836 - _globals['_MACHINENETWORK']._serialized_end=6248 - _globals['_MACHINEHARDWARE']._serialized_start=6251 - _globals['_MACHINEHARDWARE']._serialized_end=6502 - _globals['_METALCPU']._serialized_start=6504 - _globals['_METALCPU']._serialized_end=6628 - _globals['_METALGPU']._serialized_start=6630 - _globals['_METALGPU']._serialized_end=6706 - _globals['_MACHINENIC']._serialized_start=6709 - _globals['_MACHINENIC']._serialized_end=7004 - _globals['_MACHINEBLOCKDEVICE']._serialized_start=7006 - _globals['_MACHINEBLOCKDEVICE']._serialized_end=7079 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=7081 - _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7192 - _globals['_MACHINEBMCREPORT']._serialized_start=7195 - _globals['_MACHINEBMCREPORT']._serialized_end=7654 - _globals['_MACHINEBIOS']._serialized_start=7656 - _globals['_MACHINEBIOS']._serialized_end=7778 - _globals['_MACHINEBMC']._serialized_start=7781 - _globals['_MACHINEBMC']._serialized_end=8062 - _globals['_MACHINEFRU']._serialized_start=8065 - _globals['_MACHINEFRU']._serialized_end=8743 - _globals['_MACHINEPOWERMETRIC']._serialized_start=8746 - _globals['_MACHINEPOWERMETRIC']._serialized_end=8952 - _globals['_MACHINEPOWERSUPPLY']._serialized_start=8954 - _globals['_MACHINEPOWERSUPPLY']._serialized_end=9020 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=9023 - _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9362 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9365 - _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9536 - _globals['_MACHINEVPN']._serialized_start=9539 - _globals['_MACHINEVPN']._serialized_end=9692 - _globals['_MACHINEQUERY']._serialized_start=9695 - _globals['_MACHINEQUERY']._serialized_end=10788 - _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10791 - _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11397 - _globals['_MACHINENETWORKQUERY']._serialized_start=11400 - _globals['_MACHINENETWORKQUERY']._serialized_end=11628 - _globals['_MACHINENICQUERY']._serialized_start=11631 - _globals['_MACHINENICQUERY']._serialized_end=11848 - _globals['_MACHINEDISKQUERY']._serialized_start=11850 - _globals['_MACHINEDISKQUERY']._serialized_end=11939 - _globals['_MACHINEBMCQUERY']._serialized_start=11942 - _globals['_MACHINEBMCQUERY']._serialized_end=12158 - _globals['_MACHINEFRUQUERY']._serialized_start=12161 - _globals['_MACHINEFRUQUERY']._serialized_end=12809 - _globals['_MACHINEHARDWAREQUERY']._serialized_start=12811 - _globals['_MACHINEHARDWAREQUERY']._serialized_end=12921 - _globals['_MACHINESERVICE']._serialized_start=15238 - _globals['_MACHINESERVICE']._serialized_end=16066 + _globals['_MACHINESERVICECREATEREQUEST']._serialized_end=1573 + _globals['_FIREWALLSPEC']._serialized_start=1575 + _globals['_FIREWALLSPEC']._serialized_end=1662 + _globals['_MACHINESERVICECREATERESPONSE']._serialized_start=1664 + _globals['_MACHINESERVICECREATERESPONSE']._serialized_end=1748 + _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_start=1751 + _globals['_MACHINESERVICEUPDATEREQUEST']._serialized_end=2118 + _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_start=2120 + _globals['_MACHINESERVICEUPDATERESPONSE']._serialized_end=2204 + _globals['_MACHINESERVICELISTREQUEST']._serialized_start=2206 + _globals['_MACHINESERVICELISTREQUEST']._serialized_end=2324 + _globals['_MACHINESERVICELISTRESPONSE']._serialized_start=2326 + _globals['_MACHINESERVICELISTRESPONSE']._serialized_end=2410 + _globals['_MACHINESERVICEDELETEREQUEST']._serialized_start=2412 + _globals['_MACHINESERVICEDELETEREQUEST']._serialized_end=2507 + _globals['_MACHINESERVICEDELETERESPONSE']._serialized_start=2509 + _globals['_MACHINESERVICEDELETERESPONSE']._serialized_end=2593 + _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_start=2596 + _globals['_MACHINESERVICEBMCCOMMANDREQUEST']._serialized_end=2769 + _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_start=2771 + _globals['_MACHINESERVICEBMCCOMMANDRESPONSE']._serialized_end=2805 + _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_start=2807 + _globals['_MACHINESERVICEGETBMCREQUEST']._serialized_end=2902 + _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_start=2904 + _globals['_MACHINESERVICEGETBMCRESPONSE']._serialized_end=3019 + _globals['_MACHINE']._serialized_start=3022 + _globals['_MACHINE']._serialized_end=3547 + _globals['_MACHINESTATUS']._serialized_start=3550 + _globals['_MACHINESTATUS']._serialized_end=3842 + _globals['_MACHINECONDITION']._serialized_start=3845 + _globals['_MACHINECONDITION']._serialized_end=4009 + _globals['_MACHINEALLOCATION']._serialized_start=4012 + _globals['_MACHINEALLOCATION']._serialized_end=4952 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_start=4955 + _globals['_MACHINEALLOCATIONNETWORK']._serialized_end=5097 + _globals['_FIREWALLRULES']._serialized_start=5100 + _globals['_FIREWALLRULES']._serialized_end=5244 + _globals['_FIREWALLEGRESSRULE']._serialized_start=5247 + _globals['_FIREWALLEGRESSRULE']._serialized_end=5455 + _globals['_FIREWALLINGRESSRULE']._serialized_start=5458 + _globals['_FIREWALLINGRESSRULE']._serialized_end=5701 + _globals['_MACHINENETWORK']._serialized_start=5704 + _globals['_MACHINENETWORK']._serialized_end=6116 + _globals['_MACHINEHARDWARE']._serialized_start=6119 + _globals['_MACHINEHARDWARE']._serialized_end=6370 + _globals['_METALCPU']._serialized_start=6372 + _globals['_METALCPU']._serialized_end=6496 + _globals['_METALGPU']._serialized_start=6498 + _globals['_METALGPU']._serialized_end=6574 + _globals['_MACHINENIC']._serialized_start=6577 + _globals['_MACHINENIC']._serialized_end=6872 + _globals['_MACHINEBLOCKDEVICE']._serialized_start=6874 + _globals['_MACHINEBLOCKDEVICE']._serialized_end=6947 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_start=6949 + _globals['_MACHINECHASSISIDENTIFYLEDSTATE']._serialized_end=7060 + _globals['_MACHINEBMCREPORT']._serialized_start=7063 + _globals['_MACHINEBMCREPORT']._serialized_end=7522 + _globals['_MACHINEBIOS']._serialized_start=7524 + _globals['_MACHINEBIOS']._serialized_end=7646 + _globals['_MACHINEBMC']._serialized_start=7649 + _globals['_MACHINEBMC']._serialized_end=7930 + _globals['_MACHINEFRU']._serialized_start=7933 + _globals['_MACHINEFRU']._serialized_end=8611 + _globals['_MACHINEPOWERMETRIC']._serialized_start=8614 + _globals['_MACHINEPOWERMETRIC']._serialized_end=8820 + _globals['_MACHINEPOWERSUPPLY']._serialized_start=8822 + _globals['_MACHINEPOWERSUPPLY']._serialized_end=8888 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_start=8891 + _globals['_MACHINERECENTPROVISIONINGEVENTS']._serialized_end=9230 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_start=9233 + _globals['_MACHINEPROVISIONINGEVENT']._serialized_end=9404 + _globals['_MACHINEVPN']._serialized_start=9407 + _globals['_MACHINEVPN']._serialized_end=9560 + _globals['_MACHINEQUERY']._serialized_start=9563 + _globals['_MACHINEQUERY']._serialized_end=10656 + _globals['_MACHINEALLOCATIONQUERY']._serialized_start=10659 + _globals['_MACHINEALLOCATIONQUERY']._serialized_end=11265 + _globals['_MACHINENETWORKQUERY']._serialized_start=11268 + _globals['_MACHINENETWORKQUERY']._serialized_end=11496 + _globals['_MACHINENICQUERY']._serialized_start=11499 + _globals['_MACHINENICQUERY']._serialized_end=11716 + _globals['_MACHINEDISKQUERY']._serialized_start=11718 + _globals['_MACHINEDISKQUERY']._serialized_end=11807 + _globals['_MACHINEBMCQUERY']._serialized_start=11810 + _globals['_MACHINEBMCQUERY']._serialized_end=12026 + _globals['_MACHINEFRUQUERY']._serialized_start=12029 + _globals['_MACHINEFRUQUERY']._serialized_end=12677 + _globals['_MACHINEHARDWAREQUERY']._serialized_start=12679 + _globals['_MACHINEHARDWAREQUERY']._serialized_end=12789 + _globals['_MACHINESERVICE']._serialized_start=15106 + _globals['_MACHINESERVICE']._serialized_end=15934 # @@protoc_insertion_point(module_scope) diff --git a/python/metalstack/api/v2/machine_pb2.pyi b/python/metalstack/api/v2/machine_pb2.pyi index fa415c44..659b5133 100644 --- a/python/metalstack/api/v2/machine_pb2.pyi +++ b/python/metalstack/api/v2/machine_pb2.pyi @@ -136,7 +136,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_servers", "ntp_servers", "allocation_type", "firewall_spec") + __slots__ = ("project", "uuid", "name", "description", "hostname", "partition", "size", "image", "filesystem_layout", "ssh_public_keys", "userdata", "labels", "networks", "placement_tags", "dns_servers", "ntp_servers", "allocation_type", "firewall_spec") PROJECT_FIELD_NUMBER: _ClassVar[int] UUID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -150,7 +150,6 @@ class MachineServiceCreateRequest(_message.Message): USERDATA_FIELD_NUMBER: _ClassVar[int] LABELS_FIELD_NUMBER: _ClassVar[int] NETWORKS_FIELD_NUMBER: _ClassVar[int] - IPS_FIELD_NUMBER: _ClassVar[int] PLACEMENT_TAGS_FIELD_NUMBER: _ClassVar[int] DNS_SERVERS_FIELD_NUMBER: _ClassVar[int] NTP_SERVERS_FIELD_NUMBER: _ClassVar[int] @@ -169,13 +168,12 @@ class MachineServiceCreateRequest(_message.Message): userdata: str labels: _common_pb2.Labels networks: _containers.RepeatedCompositeFieldContainer[MachineAllocationNetwork] - ips: _containers.RepeatedCompositeFieldContainer[MachineAllocationIp] placement_tags: _containers.RepeatedScalarFieldContainer[str] dns_servers: _containers.RepeatedCompositeFieldContainer[_partition_pb2.DNSServer] ntp_servers: _containers.RepeatedCompositeFieldContainer[_partition_pb2.NTPServer] allocation_type: MachineAllocationType firewall_spec: FirewallSpec - def __init__(self, project: _Optional[str] = ..., uuid: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., hostname: _Optional[str] = ..., partition: _Optional[str] = ..., size: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineAllocationNetwork, _Mapping]]] = ..., ips: _Optional[_Iterable[_Union[MachineAllocationIp, _Mapping]]] = ..., placement_tags: _Optional[_Iterable[str]] = ..., dns_servers: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_servers: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ..., firewall_spec: _Optional[_Union[FirewallSpec, _Mapping]] = ...) -> None: ... + def __init__(self, project: _Optional[str] = ..., uuid: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., hostname: _Optional[str] = ..., partition: _Optional[str] = ..., size: _Optional[str] = ..., image: _Optional[str] = ..., filesystem_layout: _Optional[str] = ..., ssh_public_keys: _Optional[_Iterable[str]] = ..., userdata: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ..., networks: _Optional[_Iterable[_Union[MachineAllocationNetwork, _Mapping]]] = ..., placement_tags: _Optional[_Iterable[str]] = ..., dns_servers: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_servers: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., allocation_type: _Optional[_Union[MachineAllocationType, str]] = ..., firewall_spec: _Optional[_Union[FirewallSpec, _Mapping]] = ...) -> None: ... class FirewallSpec(_message.Message): __slots__ = ("firewall_rules",) @@ -352,20 +350,14 @@ class MachineAllocation(_message.Message): 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_servers: _Optional[_Iterable[_Union[_partition_pb2.DNSServer, _Mapping]]] = ..., ntp_servers: _Optional[_Iterable[_Union[_partition_pb2.NTPServer, _Mapping]]] = ..., vpn: _Optional[_Union[MachineVPN, _Mapping]] = ...) -> None: ... class MachineAllocationNetwork(_message.Message): - __slots__ = ("network", "no_auto_acquire_ip") + __slots__ = ("network", "no_auto_acquire_ip", "ips") NETWORK_FIELD_NUMBER: _ClassVar[int] NO_AUTO_ACQUIRE_IP_FIELD_NUMBER: _ClassVar[int] + IPS_FIELD_NUMBER: _ClassVar[int] network: str no_auto_acquire_ip: bool - def __init__(self, network: _Optional[str] = ..., no_auto_acquire_ip: _Optional[bool] = ...) -> None: ... - -class MachineAllocationIp(_message.Message): - __slots__ = ("ip", "namespace") - IP_FIELD_NUMBER: _ClassVar[int] - NAMESPACE_FIELD_NUMBER: _ClassVar[int] - ip: str - namespace: str - def __init__(self, ip: _Optional[str] = ..., namespace: _Optional[str] = ...) -> None: ... + ips: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, network: _Optional[str] = ..., no_auto_acquire_ip: _Optional[bool] = ..., ips: _Optional[_Iterable[str]] = ...) -> None: ... class FirewallRules(_message.Message): __slots__ = ("egress", "ingress")