From 75bf078e9e8acc9cfc99867c009fa9ef2f6fafba Mon Sep 17 00:00:00 2001 From: Luke Tucker Date: Mon, 17 Mar 2025 16:15:32 -0400 Subject: [PATCH 01/24] first pass update datamodel --- netboxlabs/diode/sdk/diode/v1/ingester_pb2.py | 864 ++- .../diode/sdk/diode/v1/ingester_pb2.pyi | 3783 +++++++++++- .../diode/sdk/diode/v1/ingester_pb2_grpc.py | 3 + netboxlabs/diode/sdk/ingester.py | 5260 +++++++++++++++-- tests/test_ingester.py | 159 +- 5 files changed, 9085 insertions(+), 984 deletions(-) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py index 4897938..4ea8138 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py @@ -16,7 +16,7 @@ from netboxlabs.diode.sdk.validate import validate_pb2 as validate_dot_validate__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xe4\x05\n\x06\x44\x65vice\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x18@R\x04name\x12\x30\n\x0b\x64\x65vice_fqdn\x18\x02 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01H\x00R\ndeviceFqdn\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12\"\n\x04role\x18\x04 \x01(\x0b\x32\x0e.diode.v1.RoleR\x04role\x12.\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformR\x08platform\x12$\n\x06serial\x18\x06 \x01(\tB\x07\xfa\x42\x04r\x02\x18\x32H\x01R\x06serial\x88\x01\x01\x12\"\n\x04site\x18\x07 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12*\n\tasset_tag\x18\x08 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x02R\x08\x61ssetTag\x88\x01\x01\x12\x63\n\x06status\x18\t \x01(\tBK\xfa\x42HrFR\x07offlineR\x06\x61\x63tiveR\x07plannedR\x06stagedR\x06\x66\x61iledR\tinventoryR\x0f\x64\x65\x63ommissioningR\x06status\x12/\n\x0b\x64\x65scription\x18\n \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x34\n\x0bprimary_ip4\x18\r \x01(\x0b\x32\x13.diode.v1.IPAddressR\nprimaryIp4\x12\x34\n\x0bprimary_ip6\x18\x0e \x01(\x0b\x32\x13.diode.v1.IPAddressR\nprimaryIp6B\x0e\n\x0c_device_fqdnB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xef\x11\n\tInterface\x12\x32\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceB\x08\xfa\x42\x05\xa2\x01\x02\x08\x01R\x06\x64\x65vice\x12\x1d\n\x04name\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18@R\x04name\x12$\n\x05label\x18\x03 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18@H\x00R\x05label\x88\x01\x01\x12\xfa\x0c\n\x04type\x18\x04 \x01(\tB\xe5\x0c\xfa\x42\xe1\x0cr\xde\x0cR\x07virtualR\x06\x62ridgeR\x03lagR\n100base-fxR\x0b\x31\x30\x30\x62\x61se-lfxR\n100base-txR\n100base-t1R\n1000base-tR\x0f\x31\x30\x30\x30\x62\x61se-x-gbicR\x0e\x31\x30\x30\x30\x62\x61se-x-sfpR\n2.5gbase-tR\x08\x35gbase-tR\t10gbase-tR\x0b\x31\x30gbase-cx4R\x0e\x31\x30gbase-x-sfppR\r10gbase-x-xfpR\x10\x31\x30gbase-x-xenpakR\x0c\x31\x30gbase-x-x2R\x0f\x32\x35gbase-x-sfp28R\x0f\x35\x30gbase-x-sfp56R\x0f\x34\x30gbase-x-qsfppR\x0f\x35\x30gbase-x-sfp28R\x0e\x31\x30\x30gbase-x-cfpR\x0f\x31\x30\x30gbase-x-cfp2R\x0f\x31\x30\x30gbase-x-cfp4R\x0e\x31\x30\x30gbase-x-cxpR\x0f\x31\x30\x30gbase-x-cpakR\x0f\x31\x30\x30gbase-x-dsfpR\x10\x31\x30\x30gbase-x-sfpddR\x11\x31\x30\x30gbase-x-qsfp28R\x11\x31\x30\x30gbase-x-qsfpddR\x0f\x32\x30\x30gbase-x-cfp2R\x11\x32\x30\x30gbase-x-qsfp56R\x11\x32\x30\x30gbase-x-qsfpddR\x0f\x34\x30\x30gbase-x-cfp2R\x12\x34\x30\x30gbase-x-qsfp112R\x11\x34\x30\x30gbase-x-qsfpddR\x0f\x34\x30\x30gbase-x-osfpR\x13\x34\x30\x30gbase-x-osfp-rhsR\x0f\x34\x30\x30gbase-x-cdfpR\x0f\x34\x30\x30gbase-x-cfp8R\x11\x38\x30\x30gbase-x-qsfpddR\x0f\x38\x30\x30gbase-x-osfpR\x0b\x31\x30\x30\x30\x62\x61se-kxR\n10gbase-krR\x0b\x31\x30gbase-kx4R\n25gbase-krR\x0b\x34\x30gbase-kr4R\n50gbase-krR\x0c\x31\x30\x30gbase-kp4R\x0c\x31\x30\x30gbase-kr2R\x0c\x31\x30\x30gbase-kr4R\x0bieee802.11aR\x0bieee802.11gR\x0bieee802.11nR\x0cieee802.11acR\x0cieee802.11adR\x0cieee802.11axR\x0cieee802.11ayR\x0cieee802.15.1R\x0eother-wirelessR\x03gsmR\x04\x63\x64maR\x03lteR\tsonet-oc3R\nsonet-oc12R\nsonet-oc48R\x0bsonet-oc192R\x0bsonet-oc768R\x0csonet-oc1920R\x0csonet-oc3840R\x08\x31gfc-sfpR\x08\x32gfc-sfpR\x08\x34gfc-sfpR\t8gfc-sfppR\n16gfc-sfppR\x0b\x33\x32gfc-sfp28R\x0b\x36\x34gfc-qsfppR\r128gfc-qsfp28R\x0einfiniband-sdrR\x0einfiniband-ddrR\x0einfiniband-qdrR\x10infiniband-fdr10R\x0einfiniband-fdrR\x0einfiniband-edrR\x0einfiniband-hdrR\x0einfiniband-ndrR\x0einfiniband-xdrR\x02t1R\x02\x65\x31R\x02t3R\x02\x65\x33R\x04xdslR\x06\x64ocsisR\x04gponR\x06xg-ponR\x07xgs-ponR\x07ng-pon2R\x04\x65ponR\x08\x31\x30g-eponR\x0f\x63isco-stackwiseR\x14\x63isco-stackwise-plusR\x0f\x63isco-flexstackR\x14\x63isco-flexstack-plusR\x12\x63isco-stackwise-80R\x13\x63isco-stackwise-160R\x13\x63isco-stackwise-320R\x13\x63isco-stackwise-480R\x12\x63isco-stackwise-1tR\x0bjuniper-vcpR\x13\x65xtreme-summitstackR\x17\x65xtreme-summitstack-128R\x17\x65xtreme-summitstack-256R\x17\x65xtreme-summitstack-512R\x05otherR\x04type\x12\x1d\n\x07\x65nabled\x18\x05 \x01(\x08H\x01R\x07\x65nabled\x88\x01\x01\x12\"\n\x03mtu\x18\x06 \x01(\x05\x42\x0b\xfa\x42\x08\x1a\x06\x18\x80\x80\x04(\x01H\x02R\x03mtu\x88\x01\x01\x12$\n\x0bmac_address\x18\x07 \x01(\tH\x03R\nmacAddress\x88\x01\x01\x12\"\n\x05speed\x18\x08 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00H\x04R\x05speed\x88\x01\x01\x12\x15\n\x03wwn\x18\t \x01(\tH\x05R\x03wwn\x88\x01\x01\x12 \n\tmgmt_only\x18\n \x01(\x08H\x06R\x08mgmtOnly\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x0b \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x07R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x0c \x01(\x08H\x08R\rmarkConnected\x88\x01\x01\x12\x35\n\x04mode\x18\r \x01(\tB!\xfa\x42\x1er\x1cR\x06\x61\x63\x63\x65ssR\x06taggedR\ntagged-allR\x04mode\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06_labelB\n\n\x08_enabledB\x06\n\x04_mtuB\x0e\n\x0c_mac_addressB\x08\n\x06_speedB\x06\n\x04_wwnB\x0c\n\n_mgmt_onlyB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xe3\x02\n\x07\x43luster\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12,\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupR\x05group\x12\"\n\x04site\x18\x04 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12X\n\x06status\x18\x05 \x01(\tB@\xfa\x42=r;R\x07offlineR\x06\x61\x63tiveR\x07plannedR\x06stagedR\x06\x66\x61iledR\x0f\x64\x65\x63ommissioningR\x06status\x12/\n\x0b\x64\x65scription\x18\x06 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\xc1\x01\n\x0b\x43lusterType\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\xc2\x01\n\x0c\x43lusterGroup\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\xde\x05\n\x0eVirtualMachine\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x18@R\x04name\x12X\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x07offlineR\x06\x61\x63tiveR\x07plannedR\x06stagedR\x06\x66\x61iledR\x0f\x64\x65\x63ommissioningR\x06status\x12\"\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12+\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterR\x07\x63luster\x12\"\n\x04role\x18\x05 \x01(\x0b\x32\x0e.diode.v1.RoleR\x04role\x12(\n\x06\x64\x65vice\x18\x06 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12.\n\x08platform\x18\x07 \x01(\x0b\x32\x12.diode.v1.PlatformR\x08platform\x12\x34\n\x0bprimary_ip4\x18\x08 \x01(\x0b\x32\x13.diode.v1.IPAddressR\nprimaryIp4\x12\x34\n\x0bprimary_ip6\x18\t \x01(\x0b\x32\x13.diode.v1.IPAddressR\nprimaryIp6\x12\"\n\x05vcpus\x18\n \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00H\x00R\x05vcpus\x88\x01\x01\x12$\n\x06memory\x18\x0b \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00H\x01R\x06memory\x88\x01\x01\x12 \n\x04\x64isk\x18\x0c \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00H\x02R\x04\x64isk\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\r \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xea\x02\n\x0bVMInterface\x12K\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x08\xfa\x42\x05\xa2\x01\x02\x08\x01R\x0evirtualMachine\x12\x1d\n\x04name\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18@R\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\"\n\x03mtu\x18\x04 \x01(\x05\x42\x0b\xfa\x42\x08\x1a\x06\x18\x80\x80\x04(\x01H\x01R\x03mtu\x88\x01\x01\x12$\n\x0bmac_address\x18\x05 \x01(\tH\x02R\nmacAddress\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x06 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x03R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\n\n\x08_enabledB\x06\n\x04_mtuB\x0e\n\x0c_mac_addressB\x0e\n\x0c_description\"\xfa\x01\n\x0bVirtualDisk\x12K\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineB\x08\xfa\x42\x05\xa2\x01\x02\x08\x01R\x0evirtualMachine\x12\x1d\n\x04name\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12\x1b\n\x04size\x18\x03 \x01(\x05\x42\x07\xfa\x42\x04\x1a\x02(\x00R\x04size\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\x8c\x04\n\tIPAddress\x12!\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02p\x01R\x07\x61\x64\x64ress\x12\x33\n\tinterface\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12H\n\x06status\x18\x03 \x01(\tB0\xfa\x42-r+R\x06\x61\x63tiveR\x08reservedR\ndeprecatedR\x04\x64hcpR\x05slaacR\x06status\x12T\n\x04role\x18\x04 \x01(\tB@\xfa\x42=r;R\x08loopbackR\tsecondaryR\x07\x61nycastR\x03vipR\x04vrrpR\x04hsrpR\x04glbpR\x04\x63\x61rpR\x04role\x12U\n\x08\x64ns_name\x18\x05 \x01(\tB5\xfa\x42\x32r0\x18\xff\x01\x32+^([0-9A-Za-z_-]+|\\*)(\\.[0-9A-Za-z_-]+)*\\.?$H\x01R\x07\x64nsName\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x06 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x11\n\x0f\x61ssigned_objectB\x0b\n\t_dns_nameB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xeb\x02\n\nDeviceType\x12\x1f\n\x05model\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x05model\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12:\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x01R\x08\x63omments\x88\x01\x01\x12-\n\x0bpart_number\x18\x06 \x01(\tB\x07\xfa\x42\x04r\x02\x18\x32H\x02R\npartNumber\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_descriptionB\x0b\n\t_commentsB\x0e\n\x0c_part_number\"\xc2\x01\n\x0cManufacturer\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\xfa\x01\n\x08Platform\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12:\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\x8d\x03\n\x06Prefix\x12\x1f\n\x06prefix\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02p\x01R\x06prefix\x12\"\n\x04site\x18\x02 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x46\n\x06status\x18\x03 \x01(\tB.\xfa\x42+r)R\x06\x61\x63tiveR\tcontainerR\x08reservedR\ndeprecatedR\x06status\x12\x1c\n\x07is_pool\x18\x04 \x01(\x08H\x00R\x06isPool\x88\x01\x01\x12(\n\rmark_utilized\x18\x05 \x01(\x08H\x01R\x0cmarkUtilized\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x06 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\n\n\x08_is_poolB\x10\n\x0e_mark_utilizedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xea\x01\n\x04Role\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12.\n\x05\x63olor\x18\x03 \x01(\tB\x18\xfa\x42\x15r\x13\x10\x06\x18\x06\x32\r^[0-9a-f]{6}$R\x05\x63olor\x12/\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0e\n\x0c_description\"\xa2\x03\n\x04Site\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12Q\n\x06status\x18\x03 \x01(\tB9\xfa\x42\x36r4R\x07plannedR\x07stagingR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07retiredR\x06status\x12(\n\x08\x66\x61\x63ility\x18\x04 \x01(\tB\x07\xfa\x42\x04r\x02\x18\x32H\x00R\x08\x66\x61\x63ility\x88\x01\x01\x12 \n\ttime_zone\x18\x05 \x01(\tH\x01R\x08timeZone\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x06 \x01(\tB\x08\xfa\x42\x05r\x03\x18\xc8\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x0b\n\t_facilityB\x0c\n\n_time_zoneB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x85\x01\n\x03Tag\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x64R\x04name\x12/\n\x04slug\x18\x02 \x01(\tB\x1b\xfa\x42\x18r\x16\x10\x01\x18\x64\x32\x10^[-a-zA-Z0-9_]+$R\x04slug\x12.\n\x05\x63olor\x18\x03 \x01(\tB\x18\xfa\x42\x15r\x13\x10\x06\x18\x06\x32\r^[0-9a-f]{6}$R\x05\x63olor\"\x83\x07\n\x06\x45ntity\x12$\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12\x30\n\x08platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12<\n\x0cmanufacturer\x18\x03 \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12*\n\x06\x64\x65vice\x18\x04 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x31\n\x0b\x64\x65vice_role\x18\x05 \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\ndeviceRole\x12\x37\n\x0b\x64\x65vice_type\x18\x06 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12\x33\n\tinterface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12\x34\n\nip_address\x18\t \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12*\n\x06prefix\x18\n \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12=\n\rcluster_group\x18\x0b \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12:\n\x0c\x63luster_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12\x43\n\x0fvirtual_machine\x18\x0e \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12\x39\n\x0bvminterface\x18\x0f \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvminterface\x12:\n\x0cvirtual_disk\x18\x10 \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12\x44\n\ttimestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestampB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors2P\n\x0fIngesterService\x12=\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponse\"\x00\x42\x35Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xd3)\n\x06\x45ntity\x12\x44\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestamp\x12\x31\n\tasn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x08 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\x0b \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x15 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x16 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x19 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1d \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1e \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1f \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18 \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18! \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\" \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18# \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18$ \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18% \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18& \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18\' \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18( \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18) \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18* \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18+ \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18, \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18- \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18. \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18\x30 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x31 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x32 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x33 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x34 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x35 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x36 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x37 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x38 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x39 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18: \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18; \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18< \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18= \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18> \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18? \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x41 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x42 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x43 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x44 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x45 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x46 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18G \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18H \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18I \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18J \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18K \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18L \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18M \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18N \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18O \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18P \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18Q \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18R \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18S \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18T \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18U \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18V \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18W \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18X \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18Y \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xaa\x03\n\x03\x41SN\x12\x10\n\x03\x61sn\x18\x01 \x01(\x03R\x03\x61sn\x12$\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x07 \x03(\x0b\x32\x1f.diode.v1.ASN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x06\n\x04_rirB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb7\x03\n\x08\x41SNRange\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1f\n\x03rir\x18\x03 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\t \x03(\x0b\x32$.diode.v1.ASNRange.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\x0e\n\x0c_description\"\xfe\x03\n\tAggregate\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1f\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12>\n\ndate_added\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tdateAdded\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.Aggregate.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\r\n\x0b_date_addedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf1\x07\n\x05\x43\x61\x62le\x12\xdd\x01\n\x04type\x18\x01 \x01(\tB\xc3\x01\xfa\x42\xbf\x01r\xbc\x01R\x03\x61ocR\x04\x63\x61t3R\x04\x63\x61t5R\x05\x63\x61t5eR\x04\x63\x61t6R\x05\x63\x61t6aR\x04\x63\x61t7R\x05\x63\x61t7aR\x04\x63\x61t8R\x07\x63oaxialR\ndac-activeR\x0b\x64\x61\x63-passiveR\x03mmfR\x07mmf-om1R\x07mmf-om2R\x07mmf-om3R\x07mmf-om4R\x07mmf-om5R\x0bmrj21-trunkR\x05powerR\x03smfR\x07smf-os1R\x07smf-os2R\x03usbH\x00R\x04type\x88\x01\x01\x12>\n\x0e\x61_terminations\x18\x02 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\raTerminations\x12>\n\x0e\x62_terminations\x18\x03 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\rbTerminations\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x19\n\x05label\x18\x06 \x01(\tH\x03R\x05label\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x07 \x01(\tH\x04R\x05\x63olor\x88\x01\x01\x12\x1b\n\x06length\x18\x08 \x01(\x01H\x05R\x06length\x88\x01\x01\x12\x42\n\x0blength_unit\x18\t \x01(\tB\x1c\xfa\x42\x19r\x17R\x02\x63mR\x02\x66tR\x02inR\x02kmR\x01mR\x02miH\x06R\nlengthUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x07R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x46\n\rcustom_fields\x18\r \x03(\x0b\x32!.diode.v1.Cable.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_typeB\t\n\x07_statusB\t\n\x07_tenantB\x08\n\x06_labelB\x08\n\x06_colorB\t\n\x07_lengthB\x0e\n\x0c_length_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9e\x01\n\tCablePath\x12 \n\tis_active\x18\x01 \x01(\x08H\x00R\x08isActive\x88\x01\x01\x12$\n\x0bis_complete\x18\x02 \x01(\x08H\x01R\nisComplete\x88\x01\x01\x12\x1e\n\x08is_split\x18\x03 \x01(\x08H\x02R\x07isSplit\x88\x01\x01\x42\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\xe3\x06\n\x10\x43\x61\x62leTermination\x12%\n\x05\x63\x61\x62le\x18\x01 \x01(\x0b\x32\x0f.diode.v1.CableR\x05\x63\x61\x62le\x12(\n\tcable_end\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01\x42R\x08\x63\x61\x62leEnd\x12\x66\n\x1ftermination_circuit_termination\x18\x03 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_console_port\x18\x04 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x05 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12K\n\x16termination_front_port\x18\x06 \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12J\n\x15termination_interface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12K\n\x16termination_power_feed\x18\x08 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\t \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12K\n\x16termination_power_port\x18\n \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12H\n\x15termination_rear_port\x18\x0b \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPortB\r\n\x0btermination\"\xe6\x08\n\x07\x43ircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12.\n\x08provider\x18\x02 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12)\n\x04type\x18\x04 \x01(\x0b\x32\x15.diode.v1.CircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x42\n\x0cinstall_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x0binstallDate\x88\x01\x01\x12J\n\x10termination_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04R\x0fterminationDate\x88\x01\x01\x12$\n\x0b\x63ommit_rate\x18\t \x01(\x03H\x05R\ncommitRate\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\x0b \x01(\x01H\x07R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x08R\x0c\x64istanceUnit\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\r \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x42\n\x0b\x61ssignments\x18\x0f \x03(\x0b\x32 .diode.v1.CircuitGroupAssignmentR\x0b\x61ssignments\x12H\n\rcustom_fields\x18\x10 \x03(\x0b\x32#.diode.v1.Circuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0f\n\r_install_dateB\x13\n\x11_termination_dateB\x0e\n\x0c_commit_rateB\x0e\n\x0c_descriptionB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0b\n\t_comments\"\xf6\x02\n\x0c\x43ircuitGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.CircuitGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_tenant\"\xde\x02\n\x16\x43ircuitGroupAssignment\x12,\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.CircuitGroupR\x05group\x12:\n\x0emember_circuit\x18\x02 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\rmemberCircuit\x12P\n\x16member_virtual_circuit\x18\x03 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14memberVirtualCircuit\x12N\n\x08priority\x18\x04 \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x01R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06memberB\x0b\n\t_priority\"\x8c\x08\n\x12\x43ircuitTermination\x12+\n\x07\x63ircuit\x18\x01 \x01(\x0b\x32\x11.diode.v1.CircuitR\x07\x63ircuit\x12(\n\tterm_side\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01ZR\x08termSide\x12G\n\x14termination_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12]\n\x1ctermination_provider_network\x18\x04 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x41\n\x12termination_region\x18\x05 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_site\x18\x06 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x07 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\"\n\nport_speed\x18\x08 \x01(\x03H\x01R\tportSpeed\x88\x01\x01\x12*\n\x0eupstream_speed\x18\t \x01(\x03H\x02R\rupstreamSpeed\x88\x01\x01\x12$\n\x0bxconnect_id\x18\n \x01(\tH\x03R\nxconnectId\x88\x01\x01\x12\x1c\n\x07pp_info\x18\x0b \x01(\tH\x04R\x06ppInfo\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\r \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x0f \x03(\x0b\x32..diode.v1.CircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_port_speedB\x11\n\x0f_upstream_speedB\x0e\n\x0c_xconnect_idB\n\n\x08_pp_infoB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xdf\x02\n\x0b\x43ircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.CircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xc0\x06\n\x07\x43luster\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12\x31\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x01R\x05group\x88\x01\x01\x12V\n\x06status\x18\x04 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07offlineR\x07plannedR\x07stagingH\x02R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\r \x03(\x0b\x32#.diode.v1.Cluster.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x08\n\x06_groupB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0c\x43lusterGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x05 \x03(\x0b\x32(.diode.v1.ClusterGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xba\x02\n\x0b\x43lusterType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ClusterType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xed\x05\n\x0b\x43onsolePort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\n \x03(\x0b\x32\'.diode.v1.ConsolePort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xf9\x05\n\x11\x43onsoleServerPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\n \x03(\x0b\x32-.diode.v1.ConsoleServerPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc5\x04\n\x07\x43ontact\x12\x31\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x05group\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05title\x18\x03 \x01(\tH\x01R\x05title\x88\x01\x01\x12\x19\n\x05phone\x18\x04 \x01(\tH\x02R\x05phone\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x03R\x05\x65mail\x88\x01\x01\x12\x1d\n\x07\x61\x64\x64ress\x18\x06 \x01(\tH\x04R\x07\x61\x64\x64ress\x88\x01\x01\x12\x17\n\x04link\x18\x07 \x01(\tH\x05R\x04link\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x07R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\x0b \x03(\x0b\x32#.diode.v1.Contact.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_groupB\x08\n\x06_titleB\x08\n\x06_phoneB\x08\n\x06_emailB\n\n\x08_addressB\x07\n\x05_linkB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe5\x34\n\x11\x43ontactAssignment\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLink\x12+\n\x07\x63ontact\x18Y \x01(\x0b\x32\x11.diode.v1.ContactR\x07\x63ontact\x12.\n\x04role\x18Z \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x01R\x04role\x88\x01\x01\x12N\n\x08priority\x18[ \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x02R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.ContactAssignment.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06objectB\x07\n\x05_roleB\x0b\n\t_priority\"\xfc\x02\n\x0c\x43ontactGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x33\n\x06parent\x18\x03 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.ContactGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xba\x02\n\x0b\x43ontactRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ContactRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xa1)\n\x1a\x43ustomFieldObjectReference\x12\x31\n\tasn_range\x18\x01 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x04 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x07 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\x08 \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\n \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\x0c \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x12 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x13 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x14 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x15 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x18 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1c \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1e \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18\x1f \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18 \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18! \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18\" \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18# \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18$ \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18% \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18& \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18( \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18/ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x31 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x32 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x33 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x34 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x35 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x36 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x37 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x38 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18\x39 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18: \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18; \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18< \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18= \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18> \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18? \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x41 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x42 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x43 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x45 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18\x46 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18K \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18L \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18M \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18N \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18O \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18P \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18Q \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Y \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06object\"\xed\x02\n\x10\x43ustomFieldValue\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x1a\n\x07integer\x18\x02 \x01(\x03H\x00R\x07integer\x12\x1a\n\x07\x64\x65\x63imal\x18\x03 \x01(\x01H\x00R\x07\x64\x65\x63imal\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12:\n\ttimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x12>\n\x06object\x18\x06 \x01(\x0b\x32$.diode.v1.CustomFieldObjectReferenceH\x00R\x06object\x12!\n\x0cstring_array\x18\x07 \x03(\tR\x0bstringArray\x12G\n\x0cobject_array\x18\x08 \x03(\x0b\x32$.diode.v1.CustomFieldObjectReferenceR\x0bobjectArrayB\x07\n\x05value\"\xf1\r\n\x06\x44\x65vice\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12(\n\x04role\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceRoleR\x04role\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x08platform\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x03R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x07 \x01(\tH\x04R\x08\x61ssetTag\x88\x01\x01\x12\"\n\x04site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\t \x01(\x0b\x32\x12.diode.v1.LocationH\x05R\x08location\x88\x01\x01\x12\'\n\x04rack\x18\n \x01(\x0b\x32\x0e.diode.v1.RackH\x06R\x04rack\x88\x01\x01\x12\x1f\n\x08position\x18\x0b \x01(\x01H\x07R\x08position\x88\x01\x01\x12+\n\x04\x66\x61\x63\x65\x18\x0c \x01(\tB\x12\xfa\x42\x0fr\rR\x05\x66rontR\x04rearH\x08R\x04\x66\x61\x63\x65\x88\x01\x01\x12\x1f\n\x08latitude\x18\r \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\x0e \x01(\x01H\nR\tlongitude\x88\x01\x01\x12h\n\x06status\x18\x0f \x01(\tBK\xfa\x42HrFR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\tinventoryR\x07offlineR\x07plannedR\x06stagedH\x0bR\x06status\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\x10 \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x0cR\x07\x61irflow\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x11 \x01(\x0b\x32\x13.diode.v1.IPAddressH\rR\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x12 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0eR\nprimaryIp6\x88\x01\x01\x12/\n\x06oob_ip\x18\x13 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0fR\x05oobIp\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x14 \x01(\x0b\x32\x11.diode.v1.ClusterH\x10R\x07\x63luster\x88\x01\x01\x12\x46\n\x0fvirtual_chassis\x18\x15 \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x11R\x0evirtualChassis\x88\x01\x01\x12$\n\x0bvc_position\x18\x16 \x01(\x03H\x12R\nvcPosition\x88\x01\x01\x12$\n\x0bvc_priority\x18\x17 \x01(\x03H\x13R\nvcPriority\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x14R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x15R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x1b \x03(\x0b\x32\".diode.v1.Device.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\t\n\x07_tenantB\x0b\n\t_platformB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0b\n\t_locationB\x07\n\x05_rackB\x0b\n\t_positionB\x07\n\x05_faceB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\t\n\x07_statusB\n\n\x08_airflowB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\t\n\x07_oob_ipB\n\n\x08_clusterB\x12\n\x10_virtual_chassisB\x0e\n\x0c_vc_positionB\x0e\n\x0c_vc_priorityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc8\x03\n\tDeviceBay\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05label\x18\x03 \x01(\tH\x00R\x05label\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12@\n\x10installed_device\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x02R\x0finstalledDevice\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x07 \x03(\x0b\x32%.diode.v1.DeviceBay.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_labelB\x0e\n\x0c_descriptionB\x13\n\x11_installed_device\"\x87\x03\n\nDeviceRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12\x1c\n\x07vm_role\x18\x04 \x01(\x08H\x01R\x06vmRole\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x07 \x03(\x0b\x32&.diode.v1.DeviceRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\n\n\x08_vm_roleB\x0e\n\x0c_description\"\xfc\x08\n\nDeviceType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x42\n\x10\x64\x65\x66\x61ult_platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0f\x64\x65\x66\x61ultPlatform\x88\x01\x01\x12\x14\n\x05model\x18\x03 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x04 \x01(\tR\x04slug\x12$\n\x0bpart_number\x18\x05 \x01(\tH\x01R\npartNumber\x88\x01\x01\x12\x1e\n\x08u_height\x18\x06 \x01(\x01H\x02R\x07uHeight\x88\x01\x01\x12=\n\x18\x65xclude_from_utilization\x18\x07 \x01(\x08H\x03R\x16\x65xcludeFromUtilization\x88\x01\x01\x12\'\n\ris_full_depth\x18\x08 \x01(\x08H\x04R\x0bisFullDepth\x88\x01\x01\x12@\n\x0esubdevice_role\x18\t \x01(\tB\x14\xfa\x42\x11r\x0fR\x05\x63hildR\x06parentH\x05R\rsubdeviceRole\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\n \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x06R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x0b \x01(\x01H\x07R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x08R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\nR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x10 \x03(\x0b\x32&.diode.v1.DeviceType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_default_platformB\x0e\n\x0c_part_numberB\x0b\n\t_u_heightB\x1b\n\x19_exclude_from_utilizationB\x10\n\x0e_is_full_depthB\x11\n\x0f_subdevice_roleB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc2\x04\n\tFHRPGroup\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12S\n\x08protocol\x18\x02 \x01(\tB7\xfa\x42\x34r2R\x04\x63\x61rpR\tclusterxlR\x04glbpR\x04hsrpR\x05otherR\x05vrrp2R\x05vrrp3R\x08protocol\x12\x19\n\x08group_id\x18\x03 \x01(\x03R\x07groupId\x12\x37\n\tauth_type\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x03md5R\tplaintextH\x01R\x08\x61uthType\x88\x01\x01\x12\x1e\n\x08\x61uth_key\x18\x05 \x01(\tH\x02R\x07\x61uthKey\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\t \x03(\x0b\x32%.diode.v1.FHRPGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0c\n\n_auth_typeB\x0b\n\t_auth_keyB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xaa\x36\n\x13\x46HRPGroupAssignment\x12)\n\x05group\x18\x01 \x01(\x0b\x32\x13.diode.v1.FHRPGroupR\x05group\x12\x34\n\rinterface_asn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0cinterfaceAsn\x12\x44\n\x13interface_asn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x11interfaceAsnRange\x12\x46\n\x13interface_aggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x12interfaceAggregate\x12:\n\x0finterface_cable\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0einterfaceCable\x12G\n\x14interface_cable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x12interfaceCablePath\x12\\\n\x1binterface_cable_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x19interfaceCableTermination\x12@\n\x11interface_circuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x10interfaceCircuit\x12P\n\x17interface_circuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x15interfaceCircuitGroup\x12o\n\"interface_circuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1finterfaceCircuitGroupAssignment\x12\x62\n\x1dinterface_circuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1binterfaceCircuitTermination\x12M\n\x16interface_circuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x14interfaceCircuitType\x12@\n\x11interface_cluster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x10interfaceCluster\x12P\n\x17interface_cluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x15interfaceClusterGroup\x12M\n\x16interface_cluster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x14interfaceClusterType\x12M\n\x16interface_console_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x14interfaceConsolePort\x12`\n\x1dinterface_console_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1ainterfaceConsoleServerPort\x12@\n\x11interface_contact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x10interfaceContact\x12_\n\x1cinterface_contact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1ainterfaceContactAssignment\x12P\n\x17interface_contact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x15interfaceContactGroup\x12M\n\x16interface_contact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x14interfaceContactRole\x12=\n\x10interface_device\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0finterfaceDevice\x12G\n\x14interface_device_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x12interfaceDeviceBay\x12J\n\x15interface_device_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x13interfaceDeviceRole\x12J\n\x15interface_device_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x13interfaceDeviceType\x12G\n\x14interface_fhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x12interfaceFhrpGroup\x12\x66\n\x1finterface_fhrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1cinterfaceFhrpGroupAssignment\x12G\n\x14interface_front_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x12interfaceFrontPort\x12G\n\x14interface_ike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x12interfaceIkePolicy\x12M\n\x16interface_ike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x14interfaceIkeProposal\x12G\n\x14interface_ip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x12interfaceIpAddress\x12\x41\n\x12interface_ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x10interfaceIpRange\x12N\n\x17interface_ip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x14interfaceIpSecPolicy\x12Q\n\x18interface_ip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x15interfaceIpSecProfile\x12T\n\x19interface_ip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x16interfaceIpSecProposal\x12\x46\n\x13interface_interface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x12interfaceInterface\x12S\n\x18interface_inventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x16interfaceInventoryItem\x12`\n\x1dinterface_inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1ainterfaceInventoryItemRole\x12:\n\x0finterface_l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0einterfaceL2vpn\x12\\\n\x1binterface_l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x19interfaceL2vpnTermination\x12\x43\n\x12interface_location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x11interfaceLocation\x12J\n\x15interface_mac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x13interfaceMacAddress\x12O\n\x16interface_manufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x15interfaceManufacturer\x12=\n\x10interface_module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0finterfaceModule\x12G\n\x14interface_module_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x12interfaceModuleBay\x12J\n\x15interface_module_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x13interfaceModuleType\x12\x43\n\x12interface_platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x11interfacePlatform\x12G\n\x14interface_power_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x12interfacePowerFeed\x12M\n\x16interface_power_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x14interfacePowerOutlet\x12J\n\x15interface_power_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x13interfacePowerPanel\x12G\n\x14interface_power_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x12interfacePowerPort\x12=\n\x10interface_prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0finterfacePrefix\x12\x43\n\x12interface_provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x11interfaceProvider\x12Y\n\x1ainterface_provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x18interfaceProviderAccount\x12Y\n\x1ainterface_provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x18interfaceProviderNetwork\x12\x34\n\rinterface_rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0cinterfaceRir\x12\x37\n\x0einterface_rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\rinterfaceRack\x12Y\n\x1ainterface_rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x18interfaceRackReservation\x12\x44\n\x13interface_rack_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x11interfaceRackRole\x12\x44\n\x13interface_rack_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x11interfaceRackType\x12\x44\n\x13interface_rear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x11interfaceRearPort\x12=\n\x10interface_region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0finterfaceRegion\x12\x37\n\x0einterface_role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\rinterfaceRole\x12M\n\x16interface_route_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x14interfaceRouteTarget\x12@\n\x11interface_service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x10interfaceService\x12\x37\n\x0einterface_site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\rinterfaceSite\x12G\n\x14interface_site_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x12interfaceSiteGroup\x12\x34\n\rinterface_tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0cinterfaceTag\x12=\n\x10interface_tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0finterfaceTenant\x12M\n\x16interface_tenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x14interfaceTenantGroup\x12=\n\x10interface_tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0finterfaceTunnel\x12M\n\x16interface_tunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x14interfaceTunnelGroup\x12_\n\x1cinterface_tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1ainterfaceTunnelTermination\x12\x37\n\x0einterface_vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\rinterfaceVlan\x12G\n\x14interface_vlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x12interfaceVlanGroup\x12l\n!interface_vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1einterfaceVlanTranslationPolicy\x12\x66\n\x1finterface_vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1cinterfaceVlanTranslationRule\x12M\n\x16interface_vm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x14interfaceVmInterface\x12\x34\n\rinterface_vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0cinterfaceVrf\x12V\n\x19interface_virtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x17interfaceVirtualChassis\x12V\n\x19interface_virtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x17interfaceVirtualCircuit\x12x\n%interface_virtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\"interfaceVirtualCircuitTermination\x12\x63\n\x1einterface_virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1binterfaceVirtualCircuitType\x12i\n interface_virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1dinterfaceVirtualDeviceContext\x12M\n\x16interface_virtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x14interfaceVirtualDisk\x12V\n\x19interface_virtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x17interfaceVirtualMachine\x12M\n\x16interface_wireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x14interfaceWirelessLan\x12]\n\x1cinterface_wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x19interfaceWirelessLanGroup\x12P\n\x17interface_wireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x15interfaceWirelessLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xba\x08\n\tFrontPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xad\x03\n\x04type\x18\x05 \x01(\tB\x98\x03\xfa\x42\x94\x03r\x91\x03R\t110-punchR\x04\x34p2cR\x04\x34p4cR\x04\x36p2cR\x04\x36p4cR\x04\x36p6cR\x04\x38p2cR\x04\x38p4cR\x04\x38p6cR\x04\x38p8cR\x03\x62ncR\x02\x63sR\x01\x66R\x02\x66\x63R\x04gg45R\x02lcR\x06lc-apcR\x05lc-pcR\x06lc-upcR\x03lshR\x07lsh-apcR\x06lsh-pcR\x07lsh-upcR\x03lx5R\x07lx5-apcR\x06lx5-pcR\x07lx5-upcR\x03mpoR\x05mrj21R\x04mtrjR\x01nR\x05otherR\x02scR\x06sc-apcR\x05sc-pcR\x06sc-upcR\x07sma-905R\x07sma-906R\x02snR\x06spliceR\x02stR\x07tera-1pR\x07tera-2pR\x07tera-4pR\x06urm-p2R\x06urm-p4R\x06urm-p8R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bR\x04type\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x02R\x05\x63olor\x88\x01\x01\x12/\n\trear_port\x18\x07 \x01(\x0b\x32\x12.diode.v1.RearPortR\x08rearPort\x12\x31\n\x12rear_port_position\x18\x08 \x01(\x03H\x03R\x10rearPortPosition\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0c \x03(\x0b\x32%.diode.v1.FrontPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x08\n\x06_colorB\x15\n\x13_rear_port_positionB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xca\x31\n\rGenericObject\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLinkB\x08\n\x06object\"\xec\x03\n\tIKEPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12#\n\x07version\x18\x03 \x01(\x03\x42\t\xfa\x42\x06\"\x04\x30\x01\x30\x02R\x07version\x12\x30\n\x04mode\x18\x04 \x01(\tB\x17\xfa\x42\x14r\x12R\naggressiveR\x04mainH\x01R\x04mode\x88\x01\x01\x12(\n\rpreshared_key\x18\x05 \x01(\tH\x02R\x0cpresharedKey\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.IKEPolicy.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_preshared_keyB\x0b\n\t_comments\"\x8e\x07\n\x0bIKEProposal\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12x\n\x15\x61uthentication_method\x18\x03 \x01(\tBC\xfa\x42@r>R\x0c\x63\x65rtificatesR\x0e\x64sa-signaturesR\x0epreshared-keysR\x0ersa-signaturesR\x14\x61uthenticationMethod\x12\x99\x01\n\x14\x65ncryption_algorithm\x18\x04 \x01(\tBf\xfa\x42\x63raR\x08\x33\x64\x65s-cbcR\x0b\x61\x65s-128-cbcR\x0b\x61\x65s-128-gcmR\x0b\x61\x65s-192-cbcR\x0b\x61\x65s-192-gcmR\x0b\x61\x65s-256-cbcR\x0b\x61\x65s-256-gcmR\x07\x64\x65s-cbcR\x13\x65ncryptionAlgorithm\x12\x81\x01\n\x18\x61uthentication_algorithm\x18\x05 \x01(\tBA\xfa\x42>rr\n\x11termination_cable\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x10terminationCable\x12K\n\x16termination_cable_path\x18\x07 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x14terminationCablePath\x12`\n\x1dtermination_cable_termination\x18\x08 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1bterminationCableTermination\x12\x44\n\x13termination_circuit\x18\t \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x12terminationCircuit\x12T\n\x19termination_circuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x17terminationCircuitGroup\x12s\n$termination_circuit_group_assignment\x18\x0b \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R!terminationCircuitGroupAssignment\x12\x66\n\x1ftermination_circuit_termination\x18\x0c \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_circuit_type\x18\r \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x16terminationCircuitType\x12\x44\n\x13termination_cluster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x12terminationCluster\x12T\n\x19termination_cluster_group\x18\x0f \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x17terminationClusterGroup\x12Q\n\x18termination_cluster_type\x18\x10 \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x16terminationClusterType\x12Q\n\x18termination_console_port\x18\x11 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12\x44\n\x13termination_contact\x18\x13 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x12terminationContact\x12\x63\n\x1etermination_contact_assignment\x18\x14 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1cterminationContactAssignment\x12T\n\x19termination_contact_group\x18\x15 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x17terminationContactGroup\x12Q\n\x18termination_contact_role\x18\x16 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x16terminationContactRole\x12\x41\n\x12termination_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x11terminationDevice\x12K\n\x16termination_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x14terminationDeviceBay\x12N\n\x17termination_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x15terminationDeviceRole\x12N\n\x17termination_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x15terminationDeviceType\x12K\n\x16termination_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x14terminationFhrpGroup\x12j\n!termination_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1eterminationFhrpGroupAssignment\x12K\n\x16termination_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12K\n\x16termination_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x14terminationIkePolicy\x12Q\n\x18termination_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x16terminationIkeProposal\x12K\n\x16termination_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x14terminationIpAddress\x12\x45\n\x14termination_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x12terminationIpRange\x12R\n\x19termination_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x16terminationIpSecPolicy\x12U\n\x1atermination_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x17terminationIpSecProfile\x12X\n\x1btermination_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x18terminationIpSecProposal\x12J\n\x15termination_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12W\n\x1atermination_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x18terminationInventoryItem\x12\x64\n\x1ftermination_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1cterminationInventoryItemRole\x12>\n\x11termination_l2vpn\x18( \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x10terminationL2vpn\x12`\n\x1dtermination_l2vpn_termination\x18) \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1bterminationL2vpnTermination\x12G\n\x14termination_location\x18* \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12N\n\x17termination_mac_address\x18+ \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x15terminationMacAddress\x12S\n\x18termination_manufacturer\x18, \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x17terminationManufacturer\x12\x41\n\x12termination_module\x18- \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x11terminationModule\x12K\n\x16termination_module_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x14terminationModuleBay\x12N\n\x17termination_module_type\x18/ \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x15terminationModuleType\x12G\n\x14termination_platform\x18\x30 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x13terminationPlatform\x12K\n\x16termination_power_feed\x18\x31 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\x32 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12N\n\x17termination_power_panel\x18\x33 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x15terminationPowerPanel\x12K\n\x16termination_power_port\x18\x34 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12\x41\n\x12termination_prefix\x18\x35 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x11terminationPrefix\x12G\n\x14termination_provider\x18\x36 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x13terminationProvider\x12]\n\x1ctermination_provider_account\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1aterminationProviderAccount\x12]\n\x1ctermination_provider_network\x18\x38 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x38\n\x0ftermination_rir\x18\x39 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0eterminationRir\x12;\n\x10termination_rack\x18: \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x0fterminationRack\x12]\n\x1ctermination_rack_reservation\x18; \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1aterminationRackReservation\x12H\n\x15termination_rack_role\x18< \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x13terminationRackRole\x12H\n\x15termination_rack_type\x18= \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x13terminationRackType\x12H\n\x15termination_rear_port\x18> \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPort\x12\x41\n\x12termination_region\x18? \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_role\x18@ \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x0fterminationRole\x12Q\n\x18termination_route_target\x18\x41 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x16terminationRouteTarget\x12\x44\n\x13termination_service\x18\x42 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x12terminationService\x12;\n\x10termination_site\x18\x43 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x44 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\x38\n\x0ftermination_tag\x18\x45 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0eterminationTag\x12\x41\n\x12termination_tenant\x18\x46 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x11terminationTenant\x12Q\n\x18termination_tenant_group\x18G \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x16terminationTenantGroup\x12\x41\n\x12termination_tunnel\x18H \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x11terminationTunnel\x12Q\n\x18termination_tunnel_group\x18I \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x16terminationTunnelGroup\x12\x63\n\x1etermination_tunnel_termination\x18J \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1cterminationTunnelTermination\x12;\n\x10termination_vlan\x18K \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x0fterminationVlan\x12K\n\x16termination_vlan_group\x18L \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x14terminationVlanGroup\x12p\n#termination_vlan_translation_policy\x18M \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R terminationVlanTranslationPolicy\x12j\n!termination_vlan_translation_rule\x18N \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1eterminationVlanTranslationRule\x12Q\n\x18termination_vm_interface\x18O \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x16terminationVmInterface\x12\x38\n\x0ftermination_vrf\x18P \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0eterminationVrf\x12Z\n\x1btermination_virtual_chassis\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x19terminationVirtualChassis\x12Z\n\x1btermination_virtual_circuit\x18R \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x19terminationVirtualCircuit\x12|\n\'termination_virtual_circuit_termination\x18S \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R$terminationVirtualCircuitTermination\x12g\n termination_virtual_circuit_type\x18T \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1dterminationVirtualCircuitType\x12m\n\"termination_virtual_device_context\x18U \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1fterminationVirtualDeviceContext\x12Q\n\x18termination_virtual_disk\x18V \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x16terminationVirtualDisk\x12Z\n\x1btermination_virtual_machine\x18W \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x19terminationVirtualMachine\x12Q\n\x18termination_wireless_lan\x18X \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x16terminationWirelessLan\x12\x61\n\x1etermination_wireless_lan_group\x18Y \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1bterminationWirelessLanGroup\x12T\n\x19termination_wireless_link\x18Z \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x17terminationWirelessLink\x12\x37\n\noutside_ip\x18[ \x01(\x0b\x32\x13.diode.v1.IPAddressH\x01R\toutsideIp\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.TunnelTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_outside_ip\"\x85\x06\n\x04VLAN\x12\'\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x88\x01\x01\x12.\n\x05group\x18\x02 \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x01R\x05group\x88\x01\x01\x12\x10\n\x03vid\x18\x03 \x01(\x03R\x03vid\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12@\n\x06status\x18\x06 \x01(\tB#\xfa\x42 r\x1eR\x06\x61\x63tiveR\ndeprecatedR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04role\x18\x07 \x01(\x0b\x32\x0e.diode.v1.RoleH\x04R\x04role\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\tqinq_role\x18\t \x01(\tB\x13\xfa\x42\x10r\x0eR\x05\x63vlanR\x05svlanH\x06R\x08qinqRole\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\tqinqSvlan\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\r \x03(\x0b\x32 .diode.v1.VLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_siteB\x08\n\x06_groupB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\x0e\n\x0c_descriptionB\x0c\n\n_qinq_roleB\r\n\x0b_qinq_svlanB\x0b\n\t_comments\"\xf9\x05\n\tVLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x38\n\rscope_cluster\x18\x03 \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x0cscopeCluster\x12H\n\x13scope_cluster_group\x18\x04 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x11scopeClusterGroup\x12;\n\x0escope_location\x18\x05 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12/\n\nscope_rack\x18\x06 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\tscopeRack\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12\x1d\n\nvid_ranges\x18\n \x03(\x03R\tvidRanges\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\r \x03(\x0b\x32%.diode.v1.VLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_description\"b\n\x15VLANTranslationPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xc1\x01\n\x13VLANTranslationRule\x12\x37\n\x06policy\x18\x01 \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyR\x06policy\x12\x1b\n\tlocal_vid\x18\x02 \x01(\x03R\x08localVid\x12\x1d\n\nremote_vid\x18\x03 \x01(\x03R\tremoteVid\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\x98\x08\n\x0bVMInterface\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x32\n\x06parent\x18\x04 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x01R\x06parent\x88\x01\x01\x12\x32\n\x06\x62ridge\x18\x05 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x02R\x06\x62ridge\x88\x01\x01\x12\x15\n\x03mtu\x18\x06 \x01(\x03H\x03R\x03mtu\x88\x01\x01\x12I\n\x13primary_mac_address\x18\x07 \x01(\x0b\x32\x14.diode.v1.MACAddressH\x04R\x11primaryMacAddress\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x42\n\x04mode\x18\t \x01(\tB)\xfa\x42&r$R\x06\x61\x63\x63\x65ssR\x06q-in-qR\x06taggedR\ntagged-allH\x06R\x04mode\x88\x01\x01\x12\x38\n\runtagged_vlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\x0cuntaggedVlan\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\x0b \x01(\x0b\x32\x0e.diode.v1.VLANH\x08R\tqinqSvlan\x88\x01\x01\x12\\\n\x17vlan_translation_policy\x18\x0c \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\tR\x15vlanTranslationPolicy\x88\x01\x01\x12$\n\x03vrf\x18\r \x01(\x0b\x32\r.diode.v1.VRFH\nR\x03vrf\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0f \x03(\x0b\x32\'.diode.v1.VMInterface.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\n\n\x08_enabledB\t\n\x07_parentB\t\n\x07_bridgeB\x06\n\x04_mtuB\x16\n\x14_primary_mac_addressB\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_untagged_vlanB\r\n\x0b_qinq_svlanB\x1a\n\x18_vlan_translation_policyB\x06\n\x04_vrf\"\xd9\x03\n\x03VRF\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x13\n\x02rd\x18\x02 \x01(\tH\x00R\x02rd\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12*\n\x0e\x65nforce_unique\x18\x04 \x01(\x08H\x02R\renforceUnique\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x08 \x03(\x0b\x32\x1f.diode.v1.VRF.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x05\n\x03_rdB\t\n\x07_tenantB\x11\n\x0f_enforce_uniqueB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x0eVirtualChassis\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\x06\x64omain\x18\x02 \x01(\tH\x00R\x06\x64omain\x88\x01\x01\x12-\n\x06master\x18\x03 \x01(\x0b\x32\x10.diode.v1.DeviceH\x01R\x06master\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x07 \x03(\x0b\x32*.diode.v1.VirtualChassis.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_domainB\t\n\x07_masterB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe1\x05\n\x0eVirtualCircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x44\n\x10provider_network\x18\x02 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkR\x0fproviderNetwork\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12\x30\n\x04type\x18\x04 \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\n \x03(\x0b\x32*.diode.v1.VirtualCircuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdf\x03\n\x19VirtualCircuitTermination\x12\x41\n\x0fvirtual_circuit\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitR\x0evirtualCircuit\x12\x30\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeH\x00R\x04role\x88\x01\x01\x12\x31\n\tinterface\x18\x03 \x01(\x0b\x32\x13.diode.v1.InterfaceR\tinterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Z\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x35.diode.v1.VirtualCircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_roleB\x0e\n\x0c_description\"\xed\x02\n\x12VirtualCircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x06 \x03(\x0b\x32..diode.v1.VirtualCircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xcd\x05\n\x14VirtualDeviceContext\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12#\n\nidentifier\x18\x03 \x01(\x03H\x00R\nidentifier\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x05 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x02R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x06 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x03R\nprimaryIp6\x88\x01\x01\x12\x37\n\x06status\x18\x07 \x01(\tB\x1f\xfa\x42\x1cr\x1aR\x06\x61\x63tiveR\x07offlineR\x07plannedR\x06status\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12U\n\rcustom_fields\x18\x0b \x03(\x0b\x32\x30.diode.v1.VirtualDeviceContext.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0b_identifierB\t\n\x07_tenantB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfd\x02\n\x0bVirtualDisk\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x12\n\x04size\x18\x04 \x01(\x03R\x04size\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.VirtualDisk.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xcf\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12]\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x07plannedR\x06stagedH\x00R\x06status\x88\x01\x01\x12\'\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteH\x01R\x04site\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterH\x02R\x07\x63luster\x88\x01\x01\x12-\n\x06\x64\x65vice\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x03R\x06\x64\x65vice\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x04R\x06serial\x88\x01\x01\x12-\n\x04role\x18\x07 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x05R\x04role\x88\x01\x01\x12-\n\x06tenant\x18\x08 \x01(\x0b\x32\x10.diode.v1.TenantH\x06R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\t \x01(\x0b\x32\x12.diode.v1.PlatformH\x07R\x08platform\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\n \x01(\x0b\x32\x13.diode.v1.IPAddressH\x08R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x0b \x01(\x0b\x32\x13.diode.v1.IPAddressH\tR\nprimaryIp6\x88\x01\x01\x12\x19\n\x05vcpus\x18\x0c \x01(\x01H\nR\x05vcpus\x88\x01\x01\x12\x1b\n\x06memory\x18\r \x01(\x03H\x0bR\x06memory\x88\x01\x01\x12\x17\n\x04\x64isk\x18\x0e \x01(\x03H\x0cR\x04\x64isk\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0f \x01(\tH\rR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x10 \x01(\tH\x0eR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x11 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x12 \x03(\x0b\x32*.diode.v1.VirtualMachine.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\x07\n\x05_siteB\n\n\x08_clusterB\t\n\x07_deviceB\t\n\x07_serialB\x07\n\x05_roleB\t\n\x07_tenantB\x0b\n\t_platformB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa2\x08\n\x0bWirelessLAN\x12\x12\n\x04ssid\x18\x01 \x01(\tR\x04ssid\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\x05group\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x02R\x05group\x88\x01\x01\x12J\n\x06status\x18\x04 \x01(\tB-\xfa\x42*r(R\x06\x61\x63tiveR\ndeprecatedR\x08\x64isabledR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04vlan\x18\x05 \x01(\x0b\x32\x0e.diode.v1.VLANH\x04R\x04vlan\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\n \x01(\x0b\x32\x10.diode.v1.TenantH\x05R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x0b \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x06R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x07R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\r \x01(\tH\x08R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x10 \x03(\x0b\x32\'.diode.v1.WirelessLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_descriptionB\x08\n\x06_groupB\t\n\x07_statusB\x07\n\x05_vlanB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_comments\"\x88\x03\n\x10WirelessLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x37\n\x06parent\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.WirelessLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xb9\x07\n\x0cWirelessLink\x12\x34\n\x0binterface_a\x18\x01 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceA\x12\x34\n\x0binterface_b\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceB\x12\x17\n\x04ssid\x18\x03 \x01(\tH\x00R\x04ssid\x88\x01\x01\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x06 \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x03R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x07 \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x04R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\x08 \x01(\tH\x05R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\t \x01(\x01H\x06R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\n \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x07R\x0c\x64istanceUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x08R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0c \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\r \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x0e \x03(\x0b\x32(.diode.v1.WirelessLink.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_ssidB\t\n\x07_statusB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponseB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -24,140 +24,6 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepb' - _globals['_DEVICE'].fields_by_name['name']._loaded_options = None - _globals['_DEVICE'].fields_by_name['name']._serialized_options = b'\372B\004r\002\030@' - _globals['_DEVICE'].fields_by_name['device_fqdn']._loaded_options = None - _globals['_DEVICE'].fields_by_name['device_fqdn']._serialized_options = b'\372B\007r\005\020\001\030\377\001' - _globals['_DEVICE'].fields_by_name['serial']._loaded_options = None - _globals['_DEVICE'].fields_by_name['serial']._serialized_options = b'\372B\004r\002\0302' - _globals['_DEVICE'].fields_by_name['asset_tag']._loaded_options = None - _globals['_DEVICE'].fields_by_name['asset_tag']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_DEVICE'].fields_by_name['status']._loaded_options = None - _globals['_DEVICE'].fields_by_name['status']._serialized_options = b'\372BHrFR\007offlineR\006activeR\007plannedR\006stagedR\006failedR\tinventoryR\017decommissioning' - _globals['_DEVICE'].fields_by_name['description']._loaded_options = None - _globals['_DEVICE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_INTERFACE'].fields_by_name['device']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['device']._serialized_options = b'\372B\005\242\001\002\010\001' - _globals['_INTERFACE'].fields_by_name['name']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030@' - _globals['_INTERFACE'].fields_by_name['label']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['label']._serialized_options = b'\372B\006r\004\020\001\030@' - _globals['_INTERFACE'].fields_by_name['type']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['type']._serialized_options = b'\372B\341\014r\336\014R\007virtualR\006bridgeR\003lagR\n100base-fxR\013100base-lfxR\n100base-txR\n100base-t1R\n1000base-tR\0171000base-x-gbicR\0161000base-x-sfpR\n2.5gbase-tR\0105gbase-tR\t10gbase-tR\01310gbase-cx4R\01610gbase-x-sfppR\r10gbase-x-xfpR\02010gbase-x-xenpakR\01410gbase-x-x2R\01725gbase-x-sfp28R\01750gbase-x-sfp56R\01740gbase-x-qsfppR\01750gbase-x-sfp28R\016100gbase-x-cfpR\017100gbase-x-cfp2R\017100gbase-x-cfp4R\016100gbase-x-cxpR\017100gbase-x-cpakR\017100gbase-x-dsfpR\020100gbase-x-sfpddR\021100gbase-x-qsfp28R\021100gbase-x-qsfpddR\017200gbase-x-cfp2R\021200gbase-x-qsfp56R\021200gbase-x-qsfpddR\017400gbase-x-cfp2R\022400gbase-x-qsfp112R\021400gbase-x-qsfpddR\017400gbase-x-osfpR\023400gbase-x-osfp-rhsR\017400gbase-x-cdfpR\017400gbase-x-cfp8R\021800gbase-x-qsfpddR\017800gbase-x-osfpR\0131000base-kxR\n10gbase-krR\01310gbase-kx4R\n25gbase-krR\01340gbase-kr4R\n50gbase-krR\014100gbase-kp4R\014100gbase-kr2R\014100gbase-kr4R\013ieee802.11aR\013ieee802.11gR\013ieee802.11nR\014ieee802.11acR\014ieee802.11adR\014ieee802.11axR\014ieee802.11ayR\014ieee802.15.1R\016other-wirelessR\003gsmR\004cdmaR\003lteR\tsonet-oc3R\nsonet-oc12R\nsonet-oc48R\013sonet-oc192R\013sonet-oc768R\014sonet-oc1920R\014sonet-oc3840R\0101gfc-sfpR\0102gfc-sfpR\0104gfc-sfpR\t8gfc-sfppR\n16gfc-sfppR\01332gfc-sfp28R\01364gfc-qsfppR\r128gfc-qsfp28R\016infiniband-sdrR\016infiniband-ddrR\016infiniband-qdrR\020infiniband-fdr10R\016infiniband-fdrR\016infiniband-edrR\016infiniband-hdrR\016infiniband-ndrR\016infiniband-xdrR\002t1R\002e1R\002t3R\002e3R\004xdslR\006docsisR\004gponR\006xg-ponR\007xgs-ponR\007ng-pon2R\004eponR\01010g-eponR\017cisco-stackwiseR\024cisco-stackwise-plusR\017cisco-flexstackR\024cisco-flexstack-plusR\022cisco-stackwise-80R\023cisco-stackwise-160R\023cisco-stackwise-320R\023cisco-stackwise-480R\022cisco-stackwise-1tR\013juniper-vcpR\023extreme-summitstackR\027extreme-summitstack-128R\027extreme-summitstack-256R\027extreme-summitstack-512R\005other' - _globals['_INTERFACE'].fields_by_name['mtu']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['mtu']._serialized_options = b'\372B\010\032\006\030\200\200\004(\001' - _globals['_INTERFACE'].fields_by_name['speed']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['speed']._serialized_options = b'\372B\004\032\002(\000' - _globals['_INTERFACE'].fields_by_name['description']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_INTERFACE'].fields_by_name['mode']._loaded_options = None - _globals['_INTERFACE'].fields_by_name['mode']._serialized_options = b'\372B\036r\034R\006accessR\006taggedR\ntagged-all' - _globals['_CLUSTER'].fields_by_name['name']._loaded_options = None - _globals['_CLUSTER'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_CLUSTER'].fields_by_name['status']._loaded_options = None - _globals['_CLUSTER'].fields_by_name['status']._serialized_options = b'\372B=r;R\007offlineR\006activeR\007plannedR\006stagedR\006failedR\017decommissioning' - _globals['_CLUSTER'].fields_by_name['description']._loaded_options = None - _globals['_CLUSTER'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_CLUSTERTYPE'].fields_by_name['name']._loaded_options = None - _globals['_CLUSTERTYPE'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_CLUSTERTYPE'].fields_by_name['slug']._loaded_options = None - _globals['_CLUSTERTYPE'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_CLUSTERTYPE'].fields_by_name['description']._loaded_options = None - _globals['_CLUSTERTYPE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_CLUSTERGROUP'].fields_by_name['name']._loaded_options = None - _globals['_CLUSTERGROUP'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_CLUSTERGROUP'].fields_by_name['slug']._loaded_options = None - _globals['_CLUSTERGROUP'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_CLUSTERGROUP'].fields_by_name['description']._loaded_options = None - _globals['_CLUSTERGROUP'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_VIRTUALMACHINE'].fields_by_name['name']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['name']._serialized_options = b'\372B\004r\002\030@' - _globals['_VIRTUALMACHINE'].fields_by_name['status']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['status']._serialized_options = b'\372B=r;R\007offlineR\006activeR\007plannedR\006stagedR\006failedR\017decommissioning' - _globals['_VIRTUALMACHINE'].fields_by_name['vcpus']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['vcpus']._serialized_options = b'\372B\004\032\002(\000' - _globals['_VIRTUALMACHINE'].fields_by_name['memory']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['memory']._serialized_options = b'\372B\004\032\002(\000' - _globals['_VIRTUALMACHINE'].fields_by_name['disk']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['disk']._serialized_options = b'\372B\004\032\002(\000' - _globals['_VIRTUALMACHINE'].fields_by_name['description']._loaded_options = None - _globals['_VIRTUALMACHINE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_VMINTERFACE'].fields_by_name['virtual_machine']._loaded_options = None - _globals['_VMINTERFACE'].fields_by_name['virtual_machine']._serialized_options = b'\372B\005\242\001\002\010\001' - _globals['_VMINTERFACE'].fields_by_name['name']._loaded_options = None - _globals['_VMINTERFACE'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030@' - _globals['_VMINTERFACE'].fields_by_name['mtu']._loaded_options = None - _globals['_VMINTERFACE'].fields_by_name['mtu']._serialized_options = b'\372B\010\032\006\030\200\200\004(\001' - _globals['_VMINTERFACE'].fields_by_name['description']._loaded_options = None - _globals['_VMINTERFACE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_VIRTUALDISK'].fields_by_name['virtual_machine']._loaded_options = None - _globals['_VIRTUALDISK'].fields_by_name['virtual_machine']._serialized_options = b'\372B\005\242\001\002\010\001' - _globals['_VIRTUALDISK'].fields_by_name['name']._loaded_options = None - _globals['_VIRTUALDISK'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_VIRTUALDISK'].fields_by_name['size']._loaded_options = None - _globals['_VIRTUALDISK'].fields_by_name['size']._serialized_options = b'\372B\004\032\002(\000' - _globals['_VIRTUALDISK'].fields_by_name['description']._loaded_options = None - _globals['_VIRTUALDISK'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_IPADDRESS'].fields_by_name['address']._loaded_options = None - _globals['_IPADDRESS'].fields_by_name['address']._serialized_options = b'\372B\004r\002p\001' - _globals['_IPADDRESS'].fields_by_name['status']._loaded_options = None - _globals['_IPADDRESS'].fields_by_name['status']._serialized_options = b'\372B-r+R\006activeR\010reservedR\ndeprecatedR\004dhcpR\005slaac' - _globals['_IPADDRESS'].fields_by_name['role']._loaded_options = None - _globals['_IPADDRESS'].fields_by_name['role']._serialized_options = b'\372B=r;R\010loopbackR\tsecondaryR\007anycastR\003vipR\004vrrpR\004hsrpR\004glbpR\004carp' - _globals['_IPADDRESS'].fields_by_name['dns_name']._loaded_options = None - _globals['_IPADDRESS'].fields_by_name['dns_name']._serialized_options = b'\372B2r0\030\377\0012+^([0-9A-Za-z_-]+|\\*)(\\.[0-9A-Za-z_-]+)*\\.?$' - _globals['_IPADDRESS'].fields_by_name['description']._loaded_options = None - _globals['_IPADDRESS'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_DEVICETYPE'].fields_by_name['model']._loaded_options = None - _globals['_DEVICETYPE'].fields_by_name['model']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_DEVICETYPE'].fields_by_name['slug']._loaded_options = None - _globals['_DEVICETYPE'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_DEVICETYPE'].fields_by_name['description']._loaded_options = None - _globals['_DEVICETYPE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_DEVICETYPE'].fields_by_name['part_number']._loaded_options = None - _globals['_DEVICETYPE'].fields_by_name['part_number']._serialized_options = b'\372B\004r\002\0302' - _globals['_MANUFACTURER'].fields_by_name['name']._loaded_options = None - _globals['_MANUFACTURER'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_MANUFACTURER'].fields_by_name['slug']._loaded_options = None - _globals['_MANUFACTURER'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_MANUFACTURER'].fields_by_name['description']._loaded_options = None - _globals['_MANUFACTURER'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_PLATFORM'].fields_by_name['name']._loaded_options = None - _globals['_PLATFORM'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_PLATFORM'].fields_by_name['slug']._loaded_options = None - _globals['_PLATFORM'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_PLATFORM'].fields_by_name['description']._loaded_options = None - _globals['_PLATFORM'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_PREFIX'].fields_by_name['prefix']._loaded_options = None - _globals['_PREFIX'].fields_by_name['prefix']._serialized_options = b'\372B\004r\002p\001' - _globals['_PREFIX'].fields_by_name['status']._loaded_options = None - _globals['_PREFIX'].fields_by_name['status']._serialized_options = b'\372B+r)R\006activeR\tcontainerR\010reservedR\ndeprecated' - _globals['_PREFIX'].fields_by_name['description']._loaded_options = None - _globals['_PREFIX'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_ROLE'].fields_by_name['name']._loaded_options = None - _globals['_ROLE'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_ROLE'].fields_by_name['slug']._loaded_options = None - _globals['_ROLE'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_ROLE'].fields_by_name['color']._loaded_options = None - _globals['_ROLE'].fields_by_name['color']._serialized_options = b'\372B\025r\023\020\006\030\0062\r^[0-9a-f]{6}$' - _globals['_ROLE'].fields_by_name['description']._loaded_options = None - _globals['_ROLE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_SITE'].fields_by_name['name']._loaded_options = None - _globals['_SITE'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_SITE'].fields_by_name['slug']._loaded_options = None - _globals['_SITE'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_SITE'].fields_by_name['status']._loaded_options = None - _globals['_SITE'].fields_by_name['status']._serialized_options = b'\372B6r4R\007plannedR\007stagingR\006activeR\017decommissioningR\007retired' - _globals['_SITE'].fields_by_name['facility']._loaded_options = None - _globals['_SITE'].fields_by_name['facility']._serialized_options = b'\372B\004r\002\0302' - _globals['_SITE'].fields_by_name['description']._loaded_options = None - _globals['_SITE'].fields_by_name['description']._serialized_options = b'\372B\005r\003\030\310\001' - _globals['_TAG'].fields_by_name['name']._loaded_options = None - _globals['_TAG'].fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030d' - _globals['_TAG'].fields_by_name['slug']._loaded_options = None - _globals['_TAG'].fields_by_name['slug']._serialized_options = b'\372B\030r\026\020\001\030d2\020^[-a-zA-Z0-9_]+$' - _globals['_TAG'].fields_by_name['color']._loaded_options = None - _globals['_TAG'].fields_by_name['color']._serialized_options = b'\372B\025r\023\020\006\030\0062\r^[0-9a-f]{6}$' _globals['_ENTITY'].fields_by_name['timestamp']._loaded_options = None _globals['_ENTITY'].fields_by_name['timestamp']._serialized_options = b'\372B\007\262\001\004\010\0018\001' _globals['_INGESTREQUEST'].fields_by_name['stream']._loaded_options = None @@ -174,44 +40,692 @@ _globals['_INGESTREQUEST'].fields_by_name['sdk_name']._serialized_options = b'\372B\007r\005\020\001\030\377\001' _globals['_INGESTREQUEST'].fields_by_name['sdk_version']._loaded_options = None _globals['_INGESTREQUEST'].fields_by_name['sdk_version']._serialized_options = b'\372B\031r\0272\025^(\\d)+\\.(\\d)+\\.(\\d)+$' - _globals['_DEVICE']._serialized_start=96 - _globals['_DEVICE']._serialized_end=836 - _globals['_INTERFACE']._serialized_start=839 - _globals['_INTERFACE']._serialized_end=3126 - _globals['_CLUSTER']._serialized_start=3129 - _globals['_CLUSTER']._serialized_end=3484 - _globals['_CLUSTERTYPE']._serialized_start=3487 - _globals['_CLUSTERTYPE']._serialized_end=3680 - _globals['_CLUSTERGROUP']._serialized_start=3683 - _globals['_CLUSTERGROUP']._serialized_end=3877 - _globals['_VIRTUALMACHINE']._serialized_start=3880 - _globals['_VIRTUALMACHINE']._serialized_end=4614 - _globals['_VMINTERFACE']._serialized_start=4617 - _globals['_VMINTERFACE']._serialized_end=4979 - _globals['_VIRTUALDISK']._serialized_start=4982 - _globals['_VIRTUALDISK']._serialized_end=5232 - _globals['_IPADDRESS']._serialized_start=5235 - _globals['_IPADDRESS']._serialized_end=5759 - _globals['_DEVICETYPE']._serialized_start=5762 - _globals['_DEVICETYPE']._serialized_end=6125 - _globals['_MANUFACTURER']._serialized_start=6128 - _globals['_MANUFACTURER']._serialized_end=6322 - _globals['_PLATFORM']._serialized_start=6325 - _globals['_PLATFORM']._serialized_end=6575 - _globals['_PREFIX']._serialized_start=6578 - _globals['_PREFIX']._serialized_end=6975 - _globals['_ROLE']._serialized_start=6978 - _globals['_ROLE']._serialized_end=7212 - _globals['_SITE']._serialized_start=7215 - _globals['_SITE']._serialized_end=7633 - _globals['_TAG']._serialized_start=7636 - _globals['_TAG']._serialized_end=7769 - _globals['_ENTITY']._serialized_start=7772 - _globals['_ENTITY']._serialized_end=8671 - _globals['_INGESTREQUEST']._serialized_start=8674 - _globals['_INGESTREQUEST']._serialized_end=9030 - _globals['_INGESTRESPONSE']._serialized_start=9032 - _globals['_INGESTRESPONSE']._serialized_end=9072 - _globals['_INGESTERSERVICE']._serialized_start=9074 - _globals['_INGESTERSERVICE']._serialized_end=9154 + _globals['_ASN_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CABLE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CABLE'].fields_by_name['type']._loaded_options = None + _globals['_CABLE'].fields_by_name['type']._serialized_options = b'\372B\277\001r\274\001R\003aocR\004cat3R\004cat5R\005cat5eR\004cat6R\005cat6aR\004cat7R\005cat7aR\004cat8R\007coaxialR\ndac-activeR\013dac-passiveR\003mmfR\007mmf-om1R\007mmf-om2R\007mmf-om3R\007mmf-om4R\007mmf-om5R\013mrj21-trunkR\005powerR\003smfR\007smf-os1R\007smf-os2R\003usb' + _globals['_CABLE'].fields_by_name['status']._loaded_options = None + _globals['_CABLE'].fields_by_name['status']._serialized_options = b'\372B\'r%R\tconnectedR\017decommissioningR\007planned' + _globals['_CABLE'].fields_by_name['length_unit']._loaded_options = None + _globals['_CABLE'].fields_by_name['length_unit']._serialized_options = b'\372B\031r\027R\002cmR\002ftR\002inR\002kmR\001mR\002mi' + _globals['_CABLETERMINATION'].fields_by_name['cable_end']._loaded_options = None + _globals['_CABLETERMINATION'].fields_by_name['cable_end']._serialized_options = b'\372B\010r\006R\001AR\001B' + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CIRCUIT'].fields_by_name['status']._loaded_options = None + _globals['_CIRCUIT'].fields_by_name['status']._serialized_options = b'\372BJrHR\006activeR\016decommissionedR\016deprovisioningR\007offlineR\007plannedR\014provisioning' + _globals['_CIRCUIT'].fields_by_name['distance_unit']._loaded_options = None + _globals['_CIRCUIT'].fields_by_name['distance_unit']._serialized_options = b'\372B\021r\017R\002ftR\002kmR\001mR\002mi' + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CIRCUITGROUPASSIGNMENT'].fields_by_name['priority']._loaded_options = None + _globals['_CIRCUITGROUPASSIGNMENT'].fields_by_name['priority']._serialized_options = b'\372B*r(R\010inactiveR\007primaryR\tsecondaryR\010tertiary' + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CIRCUITTERMINATION'].fields_by_name['term_side']._loaded_options = None + _globals['_CIRCUITTERMINATION'].fields_by_name['term_side']._serialized_options = b'\372B\010r\006R\001AR\001Z' + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CLUSTER'].fields_by_name['status']._loaded_options = None + _globals['_CLUSTER'].fields_by_name['status']._serialized_options = b'\372B6r4R\006activeR\017decommissioningR\007offlineR\007plannedR\007staging' + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONSOLEPORT'].fields_by_name['type']._loaded_options = None + _globals['_CONSOLEPORT'].fields_by_name['type']._serialized_options = b'\372B\215\001r\212\001R\005db-25R\004de-9R\nmini-din-8R\005otherR\005rj-11R\005rj-12R\005rj-45R\005usb-aR\005usb-bR\005usb-cR\013usb-micro-aR\014usb-micro-abR\013usb-micro-bR\nusb-mini-aR\nusb-mini-b' + _globals['_CONSOLEPORT'].fields_by_name['speed']._loaded_options = None + _globals['_CONSOLEPORT'].fields_by_name['speed']._serialized_options = b'\372B\036\"\0340\260\t0\340\0220\300%0\200K0\200\226\0010\200\254\0020\200\302\0030\200\204\007' + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONSOLESERVERPORT'].fields_by_name['type']._loaded_options = None + _globals['_CONSOLESERVERPORT'].fields_by_name['type']._serialized_options = b'\372B\215\001r\212\001R\005db-25R\004de-9R\nmini-din-8R\005otherR\005rj-11R\005rj-12R\005rj-45R\005usb-aR\005usb-bR\005usb-cR\013usb-micro-aR\014usb-micro-abR\013usb-micro-bR\nusb-mini-aR\nusb-mini-b' + _globals['_CONSOLESERVERPORT'].fields_by_name['speed']._loaded_options = None + _globals['_CONSOLESERVERPORT'].fields_by_name['speed']._serialized_options = b'\372B\036\"\0340\260\t0\340\0220\300%0\200K0\200\226\0010\200\254\0020\200\302\0030\200\204\007' + _globals['_CONTACT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONTACTASSIGNMENT'].fields_by_name['priority']._loaded_options = None + _globals['_CONTACTASSIGNMENT'].fields_by_name['priority']._serialized_options = b'\372B*r(R\010inactiveR\007primaryR\tsecondaryR\010tertiary' + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICE'].fields_by_name['face']._loaded_options = None + _globals['_DEVICE'].fields_by_name['face']._serialized_options = b'\372B\017r\rR\005frontR\004rear' + _globals['_DEVICE'].fields_by_name['status']._loaded_options = None + _globals['_DEVICE'].fields_by_name['status']._serialized_options = b'\372BHrFR\006activeR\017decommissioningR\006failedR\tinventoryR\007offlineR\007plannedR\006staged' + _globals['_DEVICE'].fields_by_name['airflow']._loaded_options = None + _globals['_DEVICE'].fields_by_name['airflow']._serialized_options = b'\372B\211\001r\206\001R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\005mixedR\007passiveR\rrear-to-frontR\014rear-to-sideR\rright-to-leftR\014side-to-rearR\rtop-to-bottom' + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_DEVICETYPE'].fields_by_name['subdevice_role']._loaded_options = None + _globals['_DEVICETYPE'].fields_by_name['subdevice_role']._serialized_options = b'\372B\021r\017R\005childR\006parent' + _globals['_DEVICETYPE'].fields_by_name['airflow']._loaded_options = None + _globals['_DEVICETYPE'].fields_by_name['airflow']._serialized_options = b'\372B\211\001r\206\001R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\005mixedR\007passiveR\rrear-to-frontR\014rear-to-sideR\rright-to-leftR\014side-to-rearR\rtop-to-bottom' + _globals['_DEVICETYPE'].fields_by_name['weight_unit']._loaded_options = None + _globals['_DEVICETYPE'].fields_by_name['weight_unit']._serialized_options = b'\372B\021r\017R\001gR\002kgR\002lbR\002oz' + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_FHRPGROUP'].fields_by_name['protocol']._loaded_options = None + _globals['_FHRPGROUP'].fields_by_name['protocol']._serialized_options = b'\372B4r2R\004carpR\tclusterxlR\004glbpR\004hsrpR\005otherR\005vrrp2R\005vrrp3' + _globals['_FHRPGROUP'].fields_by_name['auth_type']._loaded_options = None + _globals['_FHRPGROUP'].fields_by_name['auth_type']._serialized_options = b'\372B\022r\020R\003md5R\tplaintext' + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_FRONTPORT'].fields_by_name['type']._loaded_options = None + _globals['_FRONTPORT'].fields_by_name['type']._serialized_options = b'\372B\224\003r\221\003R\t110-punchR\0044p2cR\0044p4cR\0046p2cR\0046p4cR\0046p6cR\0048p2cR\0048p4cR\0048p6cR\0048p8cR\003bncR\002csR\001fR\002fcR\004gg45R\002lcR\006lc-apcR\005lc-pcR\006lc-upcR\003lshR\007lsh-apcR\006lsh-pcR\007lsh-upcR\003lx5R\007lx5-apcR\006lx5-pcR\007lx5-upcR\003mpoR\005mrj21R\004mtrjR\001nR\005otherR\002scR\006sc-apcR\005sc-pcR\006sc-upcR\007sma-905R\007sma-906R\002snR\006spliceR\002stR\007tera-1pR\007tera-2pR\007tera-4pR\006urm-p2R\006urm-p4R\006urm-p8R\005usb-aR\005usb-bR\005usb-cR\013usb-micro-aR\014usb-micro-abR\013usb-micro-bR\nusb-mini-aR\nusb-mini-b' + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_IKEPOLICY'].fields_by_name['version']._loaded_options = None + _globals['_IKEPOLICY'].fields_by_name['version']._serialized_options = b'\372B\006\"\0040\0010\002' + _globals['_IKEPOLICY'].fields_by_name['mode']._loaded_options = None + _globals['_IKEPOLICY'].fields_by_name['mode']._serialized_options = b'\372B\024r\022R\naggressiveR\004main' + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._loaded_options = None + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_options = b'8\001' + _globals['_IKEPROPOSAL'].fields_by_name['authentication_method']._loaded_options = None + _globals['_IKEPROPOSAL'].fields_by_name['authentication_method']._serialized_options = b'\372B@r>R\014certificatesR\016dsa-signaturesR\016preshared-keysR\016rsa-signatures' + _globals['_IKEPROPOSAL'].fields_by_name['encryption_algorithm']._loaded_options = None + _globals['_IKEPROPOSAL'].fields_by_name['encryption_algorithm']._serialized_options = b'\372BcraR\0103des-cbcR\013aes-128-cbcR\013aes-128-gcmR\013aes-192-cbcR\013aes-192-gcmR\013aes-256-cbcR\013aes-256-gcmR\007des-cbc' + _globals['_IKEPROPOSAL'].fields_by_name['authentication_algorithm']._loaded_options = None + _globals['_IKEPROPOSAL'].fields_by_name['authentication_algorithm']._serialized_options = b'\372B>rr None: ... + +class IngestRequest(_message.Message): + __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version") + STREAM_FIELD_NUMBER: _ClassVar[int] + ENTITIES_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + PRODUCER_APP_NAME_FIELD_NUMBER: _ClassVar[int] + PRODUCER_APP_VERSION_FIELD_NUMBER: _ClassVar[int] + SDK_NAME_FIELD_NUMBER: _ClassVar[int] + SDK_VERSION_FIELD_NUMBER: _ClassVar[int] + stream: str + entities: _containers.RepeatedCompositeFieldContainer[Entity] + id: str + producer_app_name: str + producer_app_version: str + sdk_name: str + sdk_version: str + def __init__(self, stream: _Optional[str] = ..., entities: _Optional[_Iterable[_Union[Entity, _Mapping]]] = ..., id: _Optional[str] = ..., producer_app_name: _Optional[str] = ..., producer_app_version: _Optional[str] = ..., sdk_name: _Optional[str] = ..., sdk_version: _Optional[str] = ...) -> None: ... + +class IngestResponse(_message.Message): + __slots__ = ("errors",) + ERRORS_FIELD_NUMBER: _ClassVar[int] + errors: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, errors: _Optional[_Iterable[str]] = ...) -> None: ... + +class ASN(_message.Message): + __slots__ = ("asn", "rir", "tenant", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + ASN_FIELD_NUMBER: _ClassVar[int] + RIR_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + asn: int + rir: RIR + tenant: Tenant + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, asn: _Optional[int] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ASNRange(_message.Message): + __slots__ = ("name", "slug", "rir", "start", "end", "tenant", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + RIR_FIELD_NUMBER: _ClassVar[int] + START_FIELD_NUMBER: _ClassVar[int] + END_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + rir: RIR + start: int + end: int + tenant: Tenant + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., start: _Optional[int] = ..., end: _Optional[int] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Aggregate(_message.Message): + __slots__ = ("prefix", "rir", "tenant", "date_added", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + PREFIX_FIELD_NUMBER: _ClassVar[int] + RIR_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + DATE_ADDED_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + prefix: str + rir: RIR + tenant: Tenant + date_added: _timestamp_pb2.Timestamp + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, prefix: _Optional[str] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., date_added: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Cable(_message.Message): + __slots__ = ("type", "a_terminations", "b_terminations", "status", "tenant", "label", "color", "length", "length_unit", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + TYPE_FIELD_NUMBER: _ClassVar[int] + A_TERMINATIONS_FIELD_NUMBER: _ClassVar[int] + B_TERMINATIONS_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + LENGTH_FIELD_NUMBER: _ClassVar[int] + LENGTH_UNIT_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - PRIMARY_IP4_FIELD_NUMBER: _ClassVar[int] - PRIMARY_IP6_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + type: str + a_terminations: _containers.RepeatedCompositeFieldContainer[GenericObject] + b_terminations: _containers.RepeatedCompositeFieldContainer[GenericObject] + status: str + tenant: Tenant + label: str + color: str + length: float + length_unit: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, type: _Optional[str] = ..., a_terminations: _Optional[_Iterable[_Union[GenericObject, _Mapping]]] = ..., b_terminations: _Optional[_Iterable[_Union[GenericObject, _Mapping]]] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., label: _Optional[str] = ..., color: _Optional[str] = ..., length: _Optional[float] = ..., length_unit: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class CablePath(_message.Message): + __slots__ = ("is_active", "is_complete", "is_split") + IS_ACTIVE_FIELD_NUMBER: _ClassVar[int] + IS_COMPLETE_FIELD_NUMBER: _ClassVar[int] + IS_SPLIT_FIELD_NUMBER: _ClassVar[int] + is_active: bool + is_complete: bool + is_split: bool + def __init__(self, is_active: bool = ..., is_complete: bool = ..., is_split: bool = ...) -> None: ... + +class CableTermination(_message.Message): + __slots__ = ("cable", "cable_end", "termination_circuit_termination", "termination_console_port", "termination_console_server_port", "termination_front_port", "termination_interface", "termination_power_feed", "termination_power_outlet", "termination_power_port", "termination_rear_port") + CABLE_FIELD_NUMBER: _ClassVar[int] + CABLE_END_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_INTERFACE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_FEED_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + cable: Cable + cable_end: str + termination_circuit_termination: CircuitTermination + termination_console_port: ConsolePort + termination_console_server_port: ConsoleServerPort + termination_front_port: FrontPort + termination_interface: Interface + termination_power_feed: PowerFeed + termination_power_outlet: PowerOutlet + termination_power_port: PowerPort + termination_rear_port: RearPort + def __init__(self, cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_end: _Optional[str] = ..., termination_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., termination_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., termination_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., termination_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., termination_interface: _Optional[_Union[Interface, _Mapping]] = ..., termination_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., termination_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., termination_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., termination_rear_port: _Optional[_Union[RearPort, _Mapping]] = ...) -> None: ... + +class Circuit(_message.Message): + __slots__ = ("cid", "provider", "provider_account", "type", "status", "tenant", "install_date", "termination_date", "commit_rate", "description", "distance", "distance_unit", "comments", "tags", "assignments", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + CID_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + INSTALL_DATE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_DATE_FIELD_NUMBER: _ClassVar[int] + COMMIT_RATE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + DISTANCE_FIELD_NUMBER: _ClassVar[int] + DISTANCE_UNIT_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + ASSIGNMENTS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + cid: str + provider: Provider + provider_account: ProviderAccount + type: CircuitType + status: str + tenant: Tenant + install_date: _timestamp_pb2.Timestamp + termination_date: _timestamp_pb2.Timestamp + commit_rate: int + description: str + distance: float + distance_unit: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + assignments: _containers.RepeatedCompositeFieldContainer[CircuitGroupAssignment] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, cid: _Optional[str] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., type: _Optional[_Union[CircuitType, _Mapping]] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., install_date: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., termination_date: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., commit_rate: _Optional[int] = ..., description: _Optional[str] = ..., distance: _Optional[float] = ..., distance_unit: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., assignments: _Optional[_Iterable[_Union[CircuitGroupAssignment, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class CircuitGroup(_message.Message): + __slots__ = ("name", "slug", "description", "tenant", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str - device_fqdn: str - device_type: DeviceType - role: Role - platform: Platform - serial: str - site: Site - asset_tag: str + slug: str + description: str + tenant: Tenant + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class CircuitGroupAssignment(_message.Message): + __slots__ = ("group", "member_circuit", "member_virtual_circuit", "priority", "tags") + GROUP_FIELD_NUMBER: _ClassVar[int] + MEMBER_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + MEMBER_VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + group: CircuitGroup + member_circuit: Circuit + member_virtual_circuit: VirtualCircuit + priority: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + def __init__(self, group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., member_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., member_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., priority: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + +class CircuitTermination(_message.Message): + __slots__ = ("circuit", "term_side", "termination_location", "termination_provider_network", "termination_region", "termination_site", "termination_site_group", "port_speed", "upstream_speed", "xconnect_id", "pp_info", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + CIRCUIT_FIELD_NUMBER: _ClassVar[int] + TERM_SIDE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_LOCATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + TERMINATION_REGION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_SITE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + PORT_SPEED_FIELD_NUMBER: _ClassVar[int] + UPSTREAM_SPEED_FIELD_NUMBER: _ClassVar[int] + XCONNECT_ID_FIELD_NUMBER: _ClassVar[int] + PP_INFO_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + circuit: Circuit + term_side: str + termination_location: Location + termination_provider_network: ProviderNetwork + termination_region: Region + termination_site: Site + termination_site_group: SiteGroup + port_speed: int + upstream_speed: int + xconnect_id: str + pp_info: str + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, circuit: _Optional[_Union[Circuit, _Mapping]] = ..., term_side: _Optional[str] = ..., termination_location: _Optional[_Union[Location, _Mapping]] = ..., termination_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., termination_region: _Optional[_Union[Region, _Mapping]] = ..., termination_site: _Optional[_Union[Site, _Mapping]] = ..., termination_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., port_speed: _Optional[int] = ..., upstream_speed: _Optional[int] = ..., xconnect_id: _Optional[str] = ..., pp_info: _Optional[str] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class CircuitType(_message.Message): + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + color: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Cluster(_message.Message): + __slots__ = ("name", "type", "group", "status", "tenant", "scope_location", "scope_region", "scope_site", "scope_site_group", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + SCOPE_LOCATION_FIELD_NUMBER: _ClassVar[int] + SCOPE_REGION_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + type: ClusterType + group: ClusterGroup status: str + tenant: Tenant + scope_location: Location + scope_region: Region + scope_site: Site + scope_site_group: SiteGroup description: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - primary_ip4: IPAddress - primary_ip6: IPAddress - def __init__(self, name: _Optional[str] = ..., device_fqdn: _Optional[str] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., serial: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., asset_tag: _Optional[str] = ..., status: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., primary_ip4: _Optional[_Union[IPAddress, _Mapping]] = ..., primary_ip6: _Optional[_Union[IPAddress, _Mapping]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., type: _Optional[_Union[ClusterType, _Mapping]] = ..., group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., scope_location: _Optional[_Union[Location, _Mapping]] = ..., scope_region: _Optional[_Union[Region, _Mapping]] = ..., scope_site: _Optional[_Union[Site, _Mapping]] = ..., scope_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Interface(_message.Message): - __slots__ = ("device", "name", "label", "type", "enabled", "mtu", "mac_address", "speed", "wwn", "mgmt_only", "description", "mark_connected", "mode", "tags") +class ClusterGroup(_message.Message): + __slots__ = ("name", "slug", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ClusterType(_message.Message): + __slots__ = ("name", "slug", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ConsolePort(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] LABEL_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] - ENABLED_FIELD_NUMBER: _ClassVar[int] - MTU_FIELD_NUMBER: _ClassVar[int] - MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] SPEED_FIELD_NUMBER: _ClassVar[int] - WWN_FIELD_NUMBER: _ClassVar[int] - MGMT_ONLY_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] - MODE_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] device: Device + module: Module name: str label: str type: str - enabled: bool - mtu: int - mac_address: str speed: int - wwn: str - mgmt_only: bool description: str mark_connected: bool - mode: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., enabled: bool = ..., mtu: _Optional[int] = ..., mac_address: _Optional[str] = ..., speed: _Optional[int] = ..., wwn: _Optional[str] = ..., mgmt_only: bool = ..., description: _Optional[str] = ..., mark_connected: bool = ..., mode: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., speed: _Optional[int] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ConsoleServerPort(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "speed", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + SPEED_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + speed: int + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., speed: _Optional[int] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Contact(_message.Message): + __slots__ = ("group", "name", "title", "phone", "email", "address", "link", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + GROUP_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TITLE_FIELD_NUMBER: _ClassVar[int] + PHONE_FIELD_NUMBER: _ClassVar[int] + EMAIL_FIELD_NUMBER: _ClassVar[int] + ADDRESS_FIELD_NUMBER: _ClassVar[int] + LINK_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + group: ContactGroup + name: str + title: str + phone: str + email: str + address: str + link: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, group: _Optional[_Union[ContactGroup, _Mapping]] = ..., name: _Optional[str] = ..., title: _Optional[str] = ..., phone: _Optional[str] = ..., email: _Optional[str] = ..., address: _Optional[str] = ..., link: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ContactAssignment(_message.Message): + __slots__ = ("object_asn", "object_asn_range", "object_aggregate", "object_cable", "object_cable_path", "object_cable_termination", "object_circuit", "object_circuit_group", "object_circuit_group_assignment", "object_circuit_termination", "object_circuit_type", "object_cluster", "object_cluster_group", "object_cluster_type", "object_console_port", "object_console_server_port", "object_contact", "object_contact_assignment", "object_contact_group", "object_contact_role", "object_device", "object_device_bay", "object_device_role", "object_device_type", "object_fhrp_group", "object_fhrp_group_assignment", "object_front_port", "object_ike_policy", "object_ike_proposal", "object_ip_address", "object_ip_range", "object_ip_sec_policy", "object_ip_sec_profile", "object_ip_sec_proposal", "object_interface", "object_inventory_item", "object_inventory_item_role", "object_l2vpn", "object_l2vpn_termination", "object_location", "object_mac_address", "object_manufacturer", "object_module", "object_module_bay", "object_module_type", "object_platform", "object_power_feed", "object_power_outlet", "object_power_panel", "object_power_port", "object_prefix", "object_provider", "object_provider_account", "object_provider_network", "object_rir", "object_rack", "object_rack_reservation", "object_rack_role", "object_rack_type", "object_rear_port", "object_region", "object_role", "object_route_target", "object_service", "object_site", "object_site_group", "object_tag", "object_tenant", "object_tenant_group", "object_tunnel", "object_tunnel_group", "object_tunnel_termination", "object_vlan", "object_vlan_group", "object_vlan_translation_policy", "object_vlan_translation_rule", "object_vm_interface", "object_vrf", "object_virtual_chassis", "object_virtual_circuit", "object_virtual_circuit_termination", "object_virtual_circuit_type", "object_virtual_device_context", "object_virtual_disk", "object_virtual_machine", "object_wireless_lan", "object_wireless_lan_group", "object_wireless_link", "contact", "role", "priority", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + OBJECT_ASN_FIELD_NUMBER: _ClassVar[int] + OBJECT_ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + OBJECT_AGGREGATE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_PATH_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_RANGE_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + OBJECT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + OBJECT_INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + OBJECT_INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_L2VPN_FIELD_NUMBER: _ClassVar[int] + OBJECT_L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_LOCATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + OBJECT_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_PLATFORM_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_FEED_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_PREFIX_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + OBJECT_RIR_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_REGION_FIELD_NUMBER: _ClassVar[int] + OBJECT_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] + OBJECT_SERVICE_FIELD_NUMBER: _ClassVar[int] + OBJECT_SITE_FIELD_NUMBER: _ClassVar[int] + OBJECT_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TAG_FIELD_NUMBER: _ClassVar[int] + OBJECT_TENANT_FIELD_NUMBER: _ClassVar[int] + OBJECT_TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VRF_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] + CONTACT_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + object_asn: ASN + object_asn_range: ASNRange + object_aggregate: Aggregate + object_cable: Cable + object_cable_path: CablePath + object_cable_termination: CableTermination + object_circuit: Circuit + object_circuit_group: CircuitGroup + object_circuit_group_assignment: CircuitGroupAssignment + object_circuit_termination: CircuitTermination + object_circuit_type: CircuitType + object_cluster: Cluster + object_cluster_group: ClusterGroup + object_cluster_type: ClusterType + object_console_port: ConsolePort + object_console_server_port: ConsoleServerPort + object_contact: Contact + object_contact_assignment: ContactAssignment + object_contact_group: ContactGroup + object_contact_role: ContactRole + object_device: Device + object_device_bay: DeviceBay + object_device_role: DeviceRole + object_device_type: DeviceType + object_fhrp_group: FHRPGroup + object_fhrp_group_assignment: FHRPGroupAssignment + object_front_port: FrontPort + object_ike_policy: IKEPolicy + object_ike_proposal: IKEProposal + object_ip_address: IPAddress + object_ip_range: IPRange + object_ip_sec_policy: IPSecPolicy + object_ip_sec_profile: IPSecProfile + object_ip_sec_proposal: IPSecProposal + object_interface: Interface + object_inventory_item: InventoryItem + object_inventory_item_role: InventoryItemRole + object_l2vpn: L2VPN + object_l2vpn_termination: L2VPNTermination + object_location: Location + object_mac_address: MACAddress + object_manufacturer: Manufacturer + object_module: Module + object_module_bay: ModuleBay + object_module_type: ModuleType + object_platform: Platform + object_power_feed: PowerFeed + object_power_outlet: PowerOutlet + object_power_panel: PowerPanel + object_power_port: PowerPort + object_prefix: Prefix + object_provider: Provider + object_provider_account: ProviderAccount + object_provider_network: ProviderNetwork + object_rir: RIR + object_rack: Rack + object_rack_reservation: RackReservation + object_rack_role: RackRole + object_rack_type: RackType + object_rear_port: RearPort + object_region: Region + object_role: Role + object_route_target: RouteTarget + object_service: Service + object_site: Site + object_site_group: SiteGroup + object_tag: Tag + object_tenant: Tenant + object_tenant_group: TenantGroup + object_tunnel: Tunnel + object_tunnel_group: TunnelGroup + object_tunnel_termination: TunnelTermination + object_vlan: VLAN + object_vlan_group: VLANGroup + object_vlan_translation_policy: VLANTranslationPolicy + object_vlan_translation_rule: VLANTranslationRule + object_vm_interface: VMInterface + object_vrf: VRF + object_virtual_chassis: VirtualChassis + object_virtual_circuit: VirtualCircuit + object_virtual_circuit_termination: VirtualCircuitTermination + object_virtual_circuit_type: VirtualCircuitType + object_virtual_device_context: VirtualDeviceContext + object_virtual_disk: VirtualDisk + object_virtual_machine: VirtualMachine + object_wireless_lan: WirelessLAN + object_wireless_lan_group: WirelessLANGroup + object_wireless_link: WirelessLink + contact: Contact + role: ContactRole + priority: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, object_asn: _Optional[_Union[ASN, _Mapping]] = ..., object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., object_cable: _Optional[_Union[Cable, _Mapping]] = ..., object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., object_contact: _Optional[_Union[Contact, _Mapping]] = ..., object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., object_device: _Optional[_Union[Device, _Mapping]] = ..., object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., object_interface: _Optional[_Union[Interface, _Mapping]] = ..., object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., object_location: _Optional[_Union[Location, _Mapping]] = ..., object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., object_module: _Optional[_Union[Module, _Mapping]] = ..., object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., object_platform: _Optional[_Union[Platform, _Mapping]] = ..., object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., object_provider: _Optional[_Union[Provider, _Mapping]] = ..., object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., object_rir: _Optional[_Union[RIR, _Mapping]] = ..., object_rack: _Optional[_Union[Rack, _Mapping]] = ..., object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., object_region: _Optional[_Union[Region, _Mapping]] = ..., object_role: _Optional[_Union[Role, _Mapping]] = ..., object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., object_service: _Optional[_Union[Service, _Mapping]] = ..., object_site: _Optional[_Union[Site, _Mapping]] = ..., object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., object_tag: _Optional[_Union[Tag, _Mapping]] = ..., object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., role: _Optional[_Union[ContactRole, _Mapping]] = ..., priority: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ContactGroup(_message.Message): + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + parent: ContactGroup + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., parent: _Optional[_Union[ContactGroup, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ContactRole(_message.Message): + __slots__ = ("name", "slug", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class CustomFieldObjectReference(_message.Message): + __slots__ = ("asn_range", "asn", "aggregate", "cable_path", "cable", "cable_termination", "circuit_termination", "circuit_group_assignment", "circuit_group", "circuit", "circuit_type", "cluster_group", "cluster", "cluster_type", "console_port", "console_server_port", "contact_assignment", "contact_group", "contact_role", "contact", "vlan", "device_bay", "device_role", "device", "device_type", "fhrp_group_assignment", "fhrp_group", "rear_port", "front_port", "generic_object", "ike_policy", "ike_proposal", "ip_address", "ip_range", "ip_sec_policy", "ip_sec_profile", "ip_sec_proposal", "interface", "inventory_item_role", "inventory_item", "l2vpn", "l2vpn_termination", "location", "mac_address", "manufacturer", "module_bay", "module", "module_type", "region", "site_group", "tag", "tenant_group", "vm_interface", "virtual_machine", "wireless_lan_group", "wireless_link", "platform", "power_feed", "power_outlet", "power_panel", "power_port", "prefix", "provider_account", "provider_network", "provider", "rir", "rack_reservation", "rack_role", "rack", "rack_type", "role", "route_target", "service", "site", "tenant", "tunnel_group", "tunnel", "tunnel_termination", "vlan_group", "vlan_translation_policy", "vlan_translation_rule", "vrf", "virtual_chassis", "virtual_circuit", "virtual_circuit_termination", "virtual_circuit_type", "virtual_device_context", "virtual_disk", "wireless_lan") + ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + ASN_FIELD_NUMBER: _ClassVar[int] + AGGREGATE_FIELD_NUMBER: _ClassVar[int] + CABLE_PATH_FIELD_NUMBER: _ClassVar[int] + CABLE_FIELD_NUMBER: _ClassVar[int] + CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + CLUSTER_FIELD_NUMBER: _ClassVar[int] + CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] + CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] + CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] + CONTACT_FIELD_NUMBER: _ClassVar[int] + VLAN_FIELD_NUMBER: _ClassVar[int] + DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] + DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] + DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + REAR_PORT_FIELD_NUMBER: _ClassVar[int] + FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + GENERIC_OBJECT_FIELD_NUMBER: _ClassVar[int] + IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + IP_RANGE_FIELD_NUMBER: _ClassVar[int] + IP_SEC_POLICY_FIELD_NUMBER: _ClassVar[int] + IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FIELD_NUMBER: _ClassVar[int] + INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] + INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + L2VPN_FIELD_NUMBER: _ClassVar[int] + L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] + LOCATION_FIELD_NUMBER: _ClassVar[int] + MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TAG_FIELD_NUMBER: _ClassVar[int] + TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] + VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] + PLATFORM_FIELD_NUMBER: _ClassVar[int] + POWER_FEED_FIELD_NUMBER: _ClassVar[int] + POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + POWER_PORT_FIELD_NUMBER: _ClassVar[int] + PREFIX_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + RIR_FIELD_NUMBER: _ClassVar[int] + RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] + RACK_ROLE_FIELD_NUMBER: _ClassVar[int] + RACK_FIELD_NUMBER: _ClassVar[int] + RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] + SERVICE_FIELD_NUMBER: _ClassVar[int] + SITE_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + TUNNEL_FIELD_NUMBER: _ClassVar[int] + TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] + VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + asn_range: ASNRange + asn: ASN + aggregate: Aggregate + cable_path: CablePath + cable: Cable + cable_termination: CableTermination + circuit_termination: CircuitTermination + circuit_group_assignment: CircuitGroupAssignment + circuit_group: CircuitGroup + circuit: Circuit + circuit_type: CircuitType + cluster_group: ClusterGroup + cluster: Cluster + cluster_type: ClusterType + console_port: ConsolePort + console_server_port: ConsoleServerPort + contact_assignment: ContactAssignment + contact_group: ContactGroup + contact_role: ContactRole + contact: Contact + vlan: VLAN + device_bay: DeviceBay + device_role: DeviceRole + device: Device + device_type: DeviceType + fhrp_group_assignment: FHRPGroupAssignment + fhrp_group: FHRPGroup + rear_port: RearPort + front_port: FrontPort + generic_object: GenericObject + ike_policy: IKEPolicy + ike_proposal: IKEProposal + ip_address: IPAddress + ip_range: IPRange + ip_sec_policy: IPSecPolicy + ip_sec_profile: IPSecProfile + ip_sec_proposal: IPSecProposal + interface: Interface + inventory_item_role: InventoryItemRole + inventory_item: InventoryItem + l2vpn: L2VPN + l2vpn_termination: L2VPNTermination + location: Location + mac_address: MACAddress + manufacturer: Manufacturer + module_bay: ModuleBay + module: Module + module_type: ModuleType + region: Region + site_group: SiteGroup + tag: Tag + tenant_group: TenantGroup + vm_interface: VMInterface + virtual_machine: VirtualMachine + wireless_lan_group: WirelessLANGroup + wireless_link: WirelessLink + platform: Platform + power_feed: PowerFeed + power_outlet: PowerOutlet + power_panel: PowerPanel + power_port: PowerPort + prefix: Prefix + provider_account: ProviderAccount + provider_network: ProviderNetwork + provider: Provider + rir: RIR + rack_reservation: RackReservation + rack_role: RackRole + rack: Rack + rack_type: RackType + role: Role + route_target: RouteTarget + service: Service + site: Site + tenant: Tenant + tunnel_group: TunnelGroup + tunnel: Tunnel + tunnel_termination: TunnelTermination + vlan_group: VLANGroup + vlan_translation_policy: VLANTranslationPolicy + vlan_translation_rule: VLANTranslationRule + vrf: VRF + virtual_chassis: VirtualChassis + virtual_circuit: VirtualCircuit + virtual_circuit_termination: VirtualCircuitTermination + virtual_circuit_type: VirtualCircuitType + virtual_device_context: VirtualDeviceContext + virtual_disk: VirtualDisk + wireless_lan: WirelessLAN + def __init__(self, asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., asn: _Optional[_Union[ASN, _Mapping]] = ..., aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., circuit: _Optional[_Union[Circuit, _Mapping]] = ..., circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., generic_object: _Optional[_Union[GenericObject, _Mapping]] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tag: _Optional[_Union[Tag, _Mapping]] = ..., tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., service: _Optional[_Union[Service, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ...) -> None: ... + +class CustomFieldValue(_message.Message): + __slots__ = ("text", "integer", "decimal", "boolean", "timestamp", "object", "string_array", "object_array") + TEXT_FIELD_NUMBER: _ClassVar[int] + INTEGER_FIELD_NUMBER: _ClassVar[int] + DECIMAL_FIELD_NUMBER: _ClassVar[int] + BOOLEAN_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + OBJECT_FIELD_NUMBER: _ClassVar[int] + STRING_ARRAY_FIELD_NUMBER: _ClassVar[int] + OBJECT_ARRAY_FIELD_NUMBER: _ClassVar[int] + text: str + integer: int + decimal: float + boolean: bool + timestamp: _timestamp_pb2.Timestamp + object: CustomFieldObjectReference + string_array: _containers.RepeatedScalarFieldContainer[str] + object_array: _containers.RepeatedCompositeFieldContainer[CustomFieldObjectReference] + def __init__(self, text: _Optional[str] = ..., integer: _Optional[int] = ..., decimal: _Optional[float] = ..., boolean: bool = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., object: _Optional[_Union[CustomFieldObjectReference, _Mapping]] = ..., string_array: _Optional[_Iterable[str]] = ..., object_array: _Optional[_Iterable[_Union[CustomFieldObjectReference, _Mapping]]] = ...) -> None: ... + +class Device(_message.Message): + __slots__ = ("name", "device_type", "role", "tenant", "platform", "serial", "asset_tag", "site", "location", "rack", "position", "face", "latitude", "longitude", "status", "airflow", "primary_ip4", "primary_ip6", "oob_ip", "cluster", "virtual_chassis", "vc_position", "vc_priority", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + PLATFORM_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + ASSET_TAG_FIELD_NUMBER: _ClassVar[int] + SITE_FIELD_NUMBER: _ClassVar[int] + LOCATION_FIELD_NUMBER: _ClassVar[int] + RACK_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + FACE_FIELD_NUMBER: _ClassVar[int] + LATITUDE_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + AIRFLOW_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP4_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP6_FIELD_NUMBER: _ClassVar[int] + OOB_IP_FIELD_NUMBER: _ClassVar[int] + CLUSTER_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + VC_POSITION_FIELD_NUMBER: _ClassVar[int] + VC_PRIORITY_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + device_type: DeviceType + role: DeviceRole + tenant: Tenant + platform: Platform + serial: str + asset_tag: str + site: Site + location: Location + rack: Rack + position: float + face: str + latitude: float + longitude: float + status: str + airflow: str + primary_ip4: IPAddress + primary_ip6: IPAddress + oob_ip: IPAddress + cluster: Cluster + virtual_chassis: VirtualChassis + vc_position: int + vc_priority: int + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., role: _Optional[_Union[DeviceRole, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., serial: _Optional[str] = ..., asset_tag: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., position: _Optional[float] = ..., face: _Optional[str] = ..., latitude: _Optional[float] = ..., longitude: _Optional[float] = ..., status: _Optional[str] = ..., airflow: _Optional[str] = ..., primary_ip4: _Optional[_Union[IPAddress, _Mapping]] = ..., primary_ip6: _Optional[_Union[IPAddress, _Mapping]] = ..., oob_ip: _Optional[_Union[IPAddress, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., vc_position: _Optional[int] = ..., vc_priority: _Optional[int] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class DeviceBay(_message.Message): + __slots__ = ("device", "name", "label", "description", "installed_device", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + INSTALLED_DEVICE_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + name: str + label: str + description: str + installed_device: Device + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., description: _Optional[str] = ..., installed_device: _Optional[_Union[Device, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class DeviceRole(_message.Message): + __slots__ = ("name", "slug", "color", "vm_role", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + VM_ROLE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + color: str + vm_role: bool + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., vm_role: bool = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class DeviceType(_message.Message): + __slots__ = ("manufacturer", "default_platform", "model", "slug", "part_number", "u_height", "exclude_from_utilization", "is_full_depth", "subdevice_role", "airflow", "weight", "weight_unit", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + DEFAULT_PLATFORM_FIELD_NUMBER: _ClassVar[int] + MODEL_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + PART_NUMBER_FIELD_NUMBER: _ClassVar[int] + U_HEIGHT_FIELD_NUMBER: _ClassVar[int] + EXCLUDE_FROM_UTILIZATION_FIELD_NUMBER: _ClassVar[int] + IS_FULL_DEPTH_FIELD_NUMBER: _ClassVar[int] + SUBDEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + AIRFLOW_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_UNIT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + manufacturer: Manufacturer + default_platform: Platform + model: str + slug: str + part_number: str + u_height: float + exclude_from_utilization: bool + is_full_depth: bool + subdevice_role: str + airflow: str + weight: float + weight_unit: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., default_platform: _Optional[_Union[Platform, _Mapping]] = ..., model: _Optional[str] = ..., slug: _Optional[str] = ..., part_number: _Optional[str] = ..., u_height: _Optional[float] = ..., exclude_from_utilization: bool = ..., is_full_depth: bool = ..., subdevice_role: _Optional[str] = ..., airflow: _Optional[str] = ..., weight: _Optional[float] = ..., weight_unit: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class FHRPGroup(_message.Message): + __slots__ = ("name", "protocol", "group_id", "auth_type", "auth_key", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + GROUP_ID_FIELD_NUMBER: _ClassVar[int] + AUTH_TYPE_FIELD_NUMBER: _ClassVar[int] + AUTH_KEY_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + protocol: str + group_id: int + auth_type: str + auth_key: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., protocol: _Optional[str] = ..., group_id: _Optional[int] = ..., auth_type: _Optional[str] = ..., auth_key: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class FHRPGroupAssignment(_message.Message): + __slots__ = ("group", "interface_asn", "interface_asn_range", "interface_aggregate", "interface_cable", "interface_cable_path", "interface_cable_termination", "interface_circuit", "interface_circuit_group", "interface_circuit_group_assignment", "interface_circuit_termination", "interface_circuit_type", "interface_cluster", "interface_cluster_group", "interface_cluster_type", "interface_console_port", "interface_console_server_port", "interface_contact", "interface_contact_assignment", "interface_contact_group", "interface_contact_role", "interface_device", "interface_device_bay", "interface_device_role", "interface_device_type", "interface_fhrp_group", "interface_fhrp_group_assignment", "interface_front_port", "interface_ike_policy", "interface_ike_proposal", "interface_ip_address", "interface_ip_range", "interface_ip_sec_policy", "interface_ip_sec_profile", "interface_ip_sec_proposal", "interface_interface", "interface_inventory_item", "interface_inventory_item_role", "interface_l2vpn", "interface_l2vpn_termination", "interface_location", "interface_mac_address", "interface_manufacturer", "interface_module", "interface_module_bay", "interface_module_type", "interface_platform", "interface_power_feed", "interface_power_outlet", "interface_power_panel", "interface_power_port", "interface_prefix", "interface_provider", "interface_provider_account", "interface_provider_network", "interface_rir", "interface_rack", "interface_rack_reservation", "interface_rack_role", "interface_rack_type", "interface_rear_port", "interface_region", "interface_role", "interface_route_target", "interface_service", "interface_site", "interface_site_group", "interface_tag", "interface_tenant", "interface_tenant_group", "interface_tunnel", "interface_tunnel_group", "interface_tunnel_termination", "interface_vlan", "interface_vlan_group", "interface_vlan_translation_policy", "interface_vlan_translation_rule", "interface_vm_interface", "interface_vrf", "interface_virtual_chassis", "interface_virtual_circuit", "interface_virtual_circuit_termination", "interface_virtual_circuit_type", "interface_virtual_device_context", "interface_virtual_disk", "interface_virtual_machine", "interface_wireless_lan", "interface_wireless_lan_group", "interface_wireless_link", "priority") + GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_ASN_FIELD_NUMBER: _ClassVar[int] + INTERFACE_ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_AGGREGATE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CABLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CABLE_PATH_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CLUSTER_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONTACT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_DEVICE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] + INTERFACE_DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IP_RANGE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IP_SEC_POLICY_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + INTERFACE_INTERFACE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + INTERFACE_INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_L2VPN_FIELD_NUMBER: _ClassVar[int] + INTERFACE_L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_LOCATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + INTERFACE_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + INTERFACE_MODULE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + INTERFACE_MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_PLATFORM_FIELD_NUMBER: _ClassVar[int] + INTERFACE_POWER_FEED_FIELD_NUMBER: _ClassVar[int] + INTERFACE_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + INTERFACE_POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + INTERFACE_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_PREFIX_FIELD_NUMBER: _ClassVar[int] + INTERFACE_PROVIDER_FIELD_NUMBER: _ClassVar[int] + INTERFACE_PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + INTERFACE_RIR_FIELD_NUMBER: _ClassVar[int] + INTERFACE_RACK_FIELD_NUMBER: _ClassVar[int] + INTERFACE_RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_RACK_ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_REGION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] + INTERFACE_SERVICE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_SITE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TAG_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TENANT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TUNNEL_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VLAN_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VRF_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + INTERFACE_VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + INTERFACE_WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + INTERFACE_WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + group: FHRPGroup + interface_asn: ASN + interface_asn_range: ASNRange + interface_aggregate: Aggregate + interface_cable: Cable + interface_cable_path: CablePath + interface_cable_termination: CableTermination + interface_circuit: Circuit + interface_circuit_group: CircuitGroup + interface_circuit_group_assignment: CircuitGroupAssignment + interface_circuit_termination: CircuitTermination + interface_circuit_type: CircuitType + interface_cluster: Cluster + interface_cluster_group: ClusterGroup + interface_cluster_type: ClusterType + interface_console_port: ConsolePort + interface_console_server_port: ConsoleServerPort + interface_contact: Contact + interface_contact_assignment: ContactAssignment + interface_contact_group: ContactGroup + interface_contact_role: ContactRole + interface_device: Device + interface_device_bay: DeviceBay + interface_device_role: DeviceRole + interface_device_type: DeviceType + interface_fhrp_group: FHRPGroup + interface_fhrp_group_assignment: FHRPGroupAssignment + interface_front_port: FrontPort + interface_ike_policy: IKEPolicy + interface_ike_proposal: IKEProposal + interface_ip_address: IPAddress + interface_ip_range: IPRange + interface_ip_sec_policy: IPSecPolicy + interface_ip_sec_profile: IPSecProfile + interface_ip_sec_proposal: IPSecProposal + interface_interface: Interface + interface_inventory_item: InventoryItem + interface_inventory_item_role: InventoryItemRole + interface_l2vpn: L2VPN + interface_l2vpn_termination: L2VPNTermination + interface_location: Location + interface_mac_address: MACAddress + interface_manufacturer: Manufacturer + interface_module: Module + interface_module_bay: ModuleBay + interface_module_type: ModuleType + interface_platform: Platform + interface_power_feed: PowerFeed + interface_power_outlet: PowerOutlet + interface_power_panel: PowerPanel + interface_power_port: PowerPort + interface_prefix: Prefix + interface_provider: Provider + interface_provider_account: ProviderAccount + interface_provider_network: ProviderNetwork + interface_rir: RIR + interface_rack: Rack + interface_rack_reservation: RackReservation + interface_rack_role: RackRole + interface_rack_type: RackType + interface_rear_port: RearPort + interface_region: Region + interface_role: Role + interface_route_target: RouteTarget + interface_service: Service + interface_site: Site + interface_site_group: SiteGroup + interface_tag: Tag + interface_tenant: Tenant + interface_tenant_group: TenantGroup + interface_tunnel: Tunnel + interface_tunnel_group: TunnelGroup + interface_tunnel_termination: TunnelTermination + interface_vlan: VLAN + interface_vlan_group: VLANGroup + interface_vlan_translation_policy: VLANTranslationPolicy + interface_vlan_translation_rule: VLANTranslationRule + interface_vm_interface: VMInterface + interface_vrf: VRF + interface_virtual_chassis: VirtualChassis + interface_virtual_circuit: VirtualCircuit + interface_virtual_circuit_termination: VirtualCircuitTermination + interface_virtual_circuit_type: VirtualCircuitType + interface_virtual_device_context: VirtualDeviceContext + interface_virtual_disk: VirtualDisk + interface_virtual_machine: VirtualMachine + interface_wireless_lan: WirelessLAN + interface_wireless_lan_group: WirelessLANGroup + interface_wireless_link: WirelessLink + priority: int + def __init__(self, group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., interface_asn: _Optional[_Union[ASN, _Mapping]] = ..., interface_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., interface_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., interface_cable: _Optional[_Union[Cable, _Mapping]] = ..., interface_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., interface_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., interface_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., interface_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., interface_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., interface_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., interface_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., interface_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., interface_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., interface_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., interface_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., interface_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., interface_contact: _Optional[_Union[Contact, _Mapping]] = ..., interface_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., interface_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., interface_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., interface_device: _Optional[_Union[Device, _Mapping]] = ..., interface_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., interface_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., interface_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., interface_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., interface_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., interface_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., interface_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., interface_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., interface_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., interface_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., interface_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., interface_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., interface_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface_interface: _Optional[_Union[Interface, _Mapping]] = ..., interface_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., interface_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., interface_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., interface_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., interface_location: _Optional[_Union[Location, _Mapping]] = ..., interface_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., interface_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., interface_module: _Optional[_Union[Module, _Mapping]] = ..., interface_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., interface_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., interface_platform: _Optional[_Union[Platform, _Mapping]] = ..., interface_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., interface_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., interface_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., interface_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., interface_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., interface_provider: _Optional[_Union[Provider, _Mapping]] = ..., interface_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., interface_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., interface_rir: _Optional[_Union[RIR, _Mapping]] = ..., interface_rack: _Optional[_Union[Rack, _Mapping]] = ..., interface_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., interface_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., interface_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., interface_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., interface_region: _Optional[_Union[Region, _Mapping]] = ..., interface_role: _Optional[_Union[Role, _Mapping]] = ..., interface_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., interface_service: _Optional[_Union[Service, _Mapping]] = ..., interface_site: _Optional[_Union[Site, _Mapping]] = ..., interface_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., interface_tag: _Optional[_Union[Tag, _Mapping]] = ..., interface_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., interface_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., interface_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., interface_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., interface_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., interface_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., interface_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., interface_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., interface_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., interface_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., interface_vrf: _Optional[_Union[VRF, _Mapping]] = ..., interface_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., interface_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., interface_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., interface_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., interface_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., interface_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., interface_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., interface_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., interface_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., interface_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., priority: _Optional[int] = ...) -> None: ... + +class FrontPort(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "color", "rear_port", "rear_port_position", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + REAR_PORT_FIELD_NUMBER: _ClassVar[int] + REAR_PORT_POSITION_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + color: str + rear_port: RearPort + rear_port_position: int + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., color: _Optional[str] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., rear_port_position: _Optional[int] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class GenericObject(_message.Message): + __slots__ = ("object_asn", "object_asn_range", "object_aggregate", "object_cable", "object_cable_path", "object_cable_termination", "object_circuit", "object_circuit_group", "object_circuit_group_assignment", "object_circuit_termination", "object_circuit_type", "object_cluster", "object_cluster_group", "object_cluster_type", "object_console_port", "object_console_server_port", "object_contact", "object_contact_assignment", "object_contact_group", "object_contact_role", "object_device", "object_device_bay", "object_device_role", "object_device_type", "object_fhrp_group", "object_fhrp_group_assignment", "object_front_port", "object_ike_policy", "object_ike_proposal", "object_ip_address", "object_ip_range", "object_ip_sec_policy", "object_ip_sec_profile", "object_ip_sec_proposal", "object_interface", "object_inventory_item", "object_inventory_item_role", "object_l2vpn", "object_l2vpn_termination", "object_location", "object_mac_address", "object_manufacturer", "object_module", "object_module_bay", "object_module_type", "object_platform", "object_power_feed", "object_power_outlet", "object_power_panel", "object_power_port", "object_prefix", "object_provider", "object_provider_account", "object_provider_network", "object_rir", "object_rack", "object_rack_reservation", "object_rack_role", "object_rack_type", "object_rear_port", "object_region", "object_role", "object_route_target", "object_service", "object_site", "object_site_group", "object_tag", "object_tenant", "object_tenant_group", "object_tunnel", "object_tunnel_group", "object_tunnel_termination", "object_vlan", "object_vlan_group", "object_vlan_translation_policy", "object_vlan_translation_rule", "object_vm_interface", "object_vrf", "object_virtual_chassis", "object_virtual_circuit", "object_virtual_circuit_termination", "object_virtual_circuit_type", "object_virtual_device_context", "object_virtual_disk", "object_virtual_machine", "object_wireless_lan", "object_wireless_lan_group", "object_wireless_link") + OBJECT_ASN_FIELD_NUMBER: _ClassVar[int] + OBJECT_ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + OBJECT_AGGREGATE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_PATH_FIELD_NUMBER: _ClassVar[int] + OBJECT_CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + OBJECT_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_RANGE_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + OBJECT_IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + OBJECT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + OBJECT_INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + OBJECT_INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_L2VPN_FIELD_NUMBER: _ClassVar[int] + OBJECT_L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_LOCATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + OBJECT_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + OBJECT_MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_PLATFORM_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_FEED_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + OBJECT_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_PREFIX_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + OBJECT_PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + OBJECT_RIR_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + OBJECT_REGION_FIELD_NUMBER: _ClassVar[int] + OBJECT_ROLE_FIELD_NUMBER: _ClassVar[int] + OBJECT_ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] + OBJECT_SERVICE_FIELD_NUMBER: _ClassVar[int] + OBJECT_SITE_FIELD_NUMBER: _ClassVar[int] + OBJECT_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TAG_FIELD_NUMBER: _ClassVar[int] + OBJECT_TENANT_FIELD_NUMBER: _ClassVar[int] + OBJECT_TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + OBJECT_VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VRF_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + OBJECT_VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + OBJECT_WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] + object_asn: ASN + object_asn_range: ASNRange + object_aggregate: Aggregate + object_cable: Cable + object_cable_path: CablePath + object_cable_termination: CableTermination + object_circuit: Circuit + object_circuit_group: CircuitGroup + object_circuit_group_assignment: CircuitGroupAssignment + object_circuit_termination: CircuitTermination + object_circuit_type: CircuitType + object_cluster: Cluster + object_cluster_group: ClusterGroup + object_cluster_type: ClusterType + object_console_port: ConsolePort + object_console_server_port: ConsoleServerPort + object_contact: Contact + object_contact_assignment: ContactAssignment + object_contact_group: ContactGroup + object_contact_role: ContactRole + object_device: Device + object_device_bay: DeviceBay + object_device_role: DeviceRole + object_device_type: DeviceType + object_fhrp_group: FHRPGroup + object_fhrp_group_assignment: FHRPGroupAssignment + object_front_port: FrontPort + object_ike_policy: IKEPolicy + object_ike_proposal: IKEProposal + object_ip_address: IPAddress + object_ip_range: IPRange + object_ip_sec_policy: IPSecPolicy + object_ip_sec_profile: IPSecProfile + object_ip_sec_proposal: IPSecProposal + object_interface: Interface + object_inventory_item: InventoryItem + object_inventory_item_role: InventoryItemRole + object_l2vpn: L2VPN + object_l2vpn_termination: L2VPNTermination + object_location: Location + object_mac_address: MACAddress + object_manufacturer: Manufacturer + object_module: Module + object_module_bay: ModuleBay + object_module_type: ModuleType + object_platform: Platform + object_power_feed: PowerFeed + object_power_outlet: PowerOutlet + object_power_panel: PowerPanel + object_power_port: PowerPort + object_prefix: Prefix + object_provider: Provider + object_provider_account: ProviderAccount + object_provider_network: ProviderNetwork + object_rir: RIR + object_rack: Rack + object_rack_reservation: RackReservation + object_rack_role: RackRole + object_rack_type: RackType + object_rear_port: RearPort + object_region: Region + object_role: Role + object_route_target: RouteTarget + object_service: Service + object_site: Site + object_site_group: SiteGroup + object_tag: Tag + object_tenant: Tenant + object_tenant_group: TenantGroup + object_tunnel: Tunnel + object_tunnel_group: TunnelGroup + object_tunnel_termination: TunnelTermination + object_vlan: VLAN + object_vlan_group: VLANGroup + object_vlan_translation_policy: VLANTranslationPolicy + object_vlan_translation_rule: VLANTranslationRule + object_vm_interface: VMInterface + object_vrf: VRF + object_virtual_chassis: VirtualChassis + object_virtual_circuit: VirtualCircuit + object_virtual_circuit_termination: VirtualCircuitTermination + object_virtual_circuit_type: VirtualCircuitType + object_virtual_device_context: VirtualDeviceContext + object_virtual_disk: VirtualDisk + object_virtual_machine: VirtualMachine + object_wireless_lan: WirelessLAN + object_wireless_lan_group: WirelessLANGroup + object_wireless_link: WirelessLink + def __init__(self, object_asn: _Optional[_Union[ASN, _Mapping]] = ..., object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., object_cable: _Optional[_Union[Cable, _Mapping]] = ..., object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., object_contact: _Optional[_Union[Contact, _Mapping]] = ..., object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., object_device: _Optional[_Union[Device, _Mapping]] = ..., object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., object_interface: _Optional[_Union[Interface, _Mapping]] = ..., object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., object_location: _Optional[_Union[Location, _Mapping]] = ..., object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., object_module: _Optional[_Union[Module, _Mapping]] = ..., object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., object_platform: _Optional[_Union[Platform, _Mapping]] = ..., object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., object_provider: _Optional[_Union[Provider, _Mapping]] = ..., object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., object_rir: _Optional[_Union[RIR, _Mapping]] = ..., object_rack: _Optional[_Union[Rack, _Mapping]] = ..., object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., object_region: _Optional[_Union[Region, _Mapping]] = ..., object_role: _Optional[_Union[Role, _Mapping]] = ..., object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., object_service: _Optional[_Union[Service, _Mapping]] = ..., object_site: _Optional[_Union[Site, _Mapping]] = ..., object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., object_tag: _Optional[_Union[Tag, _Mapping]] = ..., object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ...) -> None: ... + +class IKEPolicy(_message.Message): + __slots__ = ("name", "description", "version", "mode", "preshared_key", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + PRESHARED_KEY_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + version: int + mode: str + preshared_key: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., version: _Optional[int] = ..., mode: _Optional[str] = ..., preshared_key: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IKEProposal(_message.Message): + __slots__ = ("name", "description", "authentication_method", "encryption_algorithm", "authentication_algorithm", "group", "sa_lifetime", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + AUTHENTICATION_METHOD_FIELD_NUMBER: _ClassVar[int] + ENCRYPTION_ALGORITHM_FIELD_NUMBER: _ClassVar[int] + AUTHENTICATION_ALGORITHM_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + SA_LIFETIME_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + authentication_method: str + encryption_algorithm: str + authentication_algorithm: str + group: int + sa_lifetime: int + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., authentication_method: _Optional[str] = ..., encryption_algorithm: _Optional[str] = ..., authentication_algorithm: _Optional[str] = ..., group: _Optional[int] = ..., sa_lifetime: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IPAddress(_message.Message): + __slots__ = ("address", "vrf", "tenant", "status", "role", "assigned_object_fhrp_group", "assigned_object_interface", "assigned_object_vm_interface", "nat_inside", "dns_name", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + ADDRESS_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + NAT_INSIDE_FIELD_NUMBER: _ClassVar[int] + DNS_NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + address: str + vrf: VRF + tenant: Tenant + status: str + role: str + assigned_object_fhrp_group: FHRPGroup + assigned_object_interface: Interface + assigned_object_vm_interface: VMInterface + nat_inside: IPAddress + dns_name: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, address: _Optional[str] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[str] = ..., assigned_object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., assigned_object_interface: _Optional[_Union[Interface, _Mapping]] = ..., assigned_object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., nat_inside: _Optional[_Union[IPAddress, _Mapping]] = ..., dns_name: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IPRange(_message.Message): + __slots__ = ("start_address", "end_address", "vrf", "tenant", "status", "role", "description", "comments", "tags", "mark_utilized", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + START_ADDRESS_FIELD_NUMBER: _ClassVar[int] + END_ADDRESS_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + MARK_UTILIZED_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + start_address: str + end_address: str + vrf: VRF + tenant: Tenant + status: str + role: Role + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + mark_utilized: bool + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, start_address: _Optional[str] = ..., end_address: _Optional[str] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., mark_utilized: bool = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IPSecPolicy(_message.Message): + __slots__ = ("name", "description", "pfs_group", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + PFS_GROUP_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + pfs_group: int + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., pfs_group: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IPSecProfile(_message.Message): + __slots__ = ("name", "description", "mode", "ike_policy", "ipsec_policy", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + IPSEC_POLICY_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + mode: str + ike_policy: IKEPolicy + ipsec_policy: IPSecPolicy + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ipsec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class IPSecProposal(_message.Message): + __slots__ = ("name", "description", "encryption_algorithm", "authentication_algorithm", "sa_lifetime_seconds", "sa_lifetime_data", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + ENCRYPTION_ALGORITHM_FIELD_NUMBER: _ClassVar[int] + AUTHENTICATION_ALGORITHM_FIELD_NUMBER: _ClassVar[int] + SA_LIFETIME_SECONDS_FIELD_NUMBER: _ClassVar[int] + SA_LIFETIME_DATA_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + encryption_algorithm: str + authentication_algorithm: str + sa_lifetime_seconds: int + sa_lifetime_data: int + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., encryption_algorithm: _Optional[str] = ..., authentication_algorithm: _Optional[str] = ..., sa_lifetime_seconds: _Optional[int] = ..., sa_lifetime_data: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Interface(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "enabled", "parent", "bridge", "lag", "mtu", "primary_mac_address", "speed", "duplex", "wwn", "mgmt_only", "description", "mode", "rf_role", "rf_channel", "poe_mode", "poe_type", "rf_channel_frequency", "rf_channel_width", "tx_power", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "mark_connected", "vrf", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + BRIDGE_FIELD_NUMBER: _ClassVar[int] + LAG_FIELD_NUMBER: _ClassVar[int] + MTU_FIELD_NUMBER: _ClassVar[int] + PRIMARY_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + SPEED_FIELD_NUMBER: _ClassVar[int] + DUPLEX_FIELD_NUMBER: _ClassVar[int] + WWN_FIELD_NUMBER: _ClassVar[int] + MGMT_ONLY_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + RF_ROLE_FIELD_NUMBER: _ClassVar[int] + RF_CHANNEL_FIELD_NUMBER: _ClassVar[int] + POE_MODE_FIELD_NUMBER: _ClassVar[int] + POE_TYPE_FIELD_NUMBER: _ClassVar[int] + RF_CHANNEL_FREQUENCY_FIELD_NUMBER: _ClassVar[int] + RF_CHANNEL_WIDTH_FIELD_NUMBER: _ClassVar[int] + TX_POWER_FIELD_NUMBER: _ClassVar[int] + UNTAGGED_VLAN_FIELD_NUMBER: _ClassVar[int] + QINQ_SVLAN_FIELD_NUMBER: _ClassVar[int] + VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + enabled: bool + parent: Interface + bridge: Interface + lag: Interface + mtu: int + primary_mac_address: MACAddress + speed: int + duplex: str + wwn: str + mgmt_only: bool + description: str + mode: str + rf_role: str + rf_channel: str + poe_mode: str + poe_type: str + rf_channel_frequency: float + rf_channel_width: float + tx_power: int + untagged_vlan: VLAN + qinq_svlan: VLAN + vlan_translation_policy: VLANTranslationPolicy + mark_connected: bool + vrf: VRF + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[Interface, _Mapping]] = ..., bridge: _Optional[_Union[Interface, _Mapping]] = ..., lag: _Optional[_Union[Interface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., speed: _Optional[int] = ..., duplex: _Optional[str] = ..., wwn: _Optional[str] = ..., mgmt_only: bool = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., rf_role: _Optional[str] = ..., rf_channel: _Optional[str] = ..., poe_mode: _Optional[str] = ..., poe_type: _Optional[str] = ..., rf_channel_frequency: _Optional[float] = ..., rf_channel_width: _Optional[float] = ..., tx_power: _Optional[int] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., mark_connected: bool = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class InventoryItem(_message.Message): + __slots__ = ("device", "parent", "name", "label", "status", "role", "manufacturer", "part_id", "serial", "asset_tag", "discovered", "description", "component_console_port", "component_console_server_port", "component_front_port", "component_interface", "component_power_outlet", "component_power_port", "component_rear_port", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + PART_ID_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + ASSET_TAG_FIELD_NUMBER: _ClassVar[int] + DISCOVERED_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMPONENT_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + COMPONENT_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + COMPONENT_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + COMPONENT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + COMPONENT_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + COMPONENT_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + COMPONENT_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + parent: InventoryItem + name: str + label: str + status: str + role: InventoryItemRole + manufacturer: Manufacturer + part_id: str + serial: str + asset_tag: str + discovered: bool + description: str + component_console_port: ConsolePort + component_console_server_port: ConsoleServerPort + component_front_port: FrontPort + component_interface: Interface + component_power_outlet: PowerOutlet + component_power_port: PowerPort + component_rear_port: RearPort + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., parent: _Optional[_Union[InventoryItem, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., status: _Optional[str] = ..., role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., part_id: _Optional[str] = ..., serial: _Optional[str] = ..., asset_tag: _Optional[str] = ..., discovered: bool = ..., description: _Optional[str] = ..., component_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., component_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., component_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., component_interface: _Optional[_Union[Interface, _Mapping]] = ..., component_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., component_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., component_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class InventoryItemRole(_message.Message): + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + color: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class L2VPN(_message.Message): + __slots__ = ("identifier", "name", "slug", "type", "description", "comments", "tenant", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + IDENTIFIER_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + identifier: int + name: str + slug: str + type: str + description: str + comments: str + tenant: Tenant + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, identifier: _Optional[int] = ..., name: _Optional[str] = ..., slug: _Optional[str] = ..., type: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class L2VPNTermination(_message.Message): + __slots__ = ("l2vpn", "assigned_object_interface", "assigned_object_vlan", "assigned_object_vm_interface", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + L2VPN_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_VLAN_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + l2vpn: L2VPN + assigned_object_interface: Interface + assigned_object_vlan: VLAN + assigned_object_vm_interface: VMInterface + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., assigned_object_interface: _Optional[_Union[Interface, _Mapping]] = ..., assigned_object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., assigned_object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Location(_message.Message): + __slots__ = ("name", "slug", "site", "parent", "status", "tenant", "facility", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + SITE_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + FACILITY_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + site: Site + parent: Location + status: str + tenant: Tenant + facility: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., parent: _Optional[_Union[Location, _Mapping]] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., facility: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class MACAddress(_message.Message): + __slots__ = ("mac_address", "assigned_object_interface", "assigned_object_vm_interface", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_INTERFACE_FIELD_NUMBER: _ClassVar[int] + ASSIGNED_OBJECT_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + mac_address: str + assigned_object_interface: Interface + assigned_object_vm_interface: VMInterface + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, mac_address: _Optional[str] = ..., assigned_object_interface: _Optional[_Union[Interface, _Mapping]] = ..., assigned_object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Manufacturer(_message.Message): + __slots__ = ("name", "slug", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Module(_message.Message): + __slots__ = ("device", "module_bay", "module_type", "status", "serial", "asset_tag", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + ASSET_TAG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module_bay: ModuleBay + module_type: ModuleType + status: str + serial: str + asset_tag: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., status: _Optional[str] = ..., serial: _Optional[str] = ..., asset_tag: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ModuleBay(_message.Message): + __slots__ = ("device", "module", "name", "installed_module", "label", "position", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + INSTALLED_MODULE_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + installed_module: Module + label: str + position: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., installed_module: _Optional[_Union[Module, _Mapping]] = ..., label: _Optional[str] = ..., position: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ModuleType(_message.Message): + __slots__ = ("manufacturer", "model", "part_number", "airflow", "weight", "weight_unit", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + MODEL_FIELD_NUMBER: _ClassVar[int] + PART_NUMBER_FIELD_NUMBER: _ClassVar[int] + AIRFLOW_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_UNIT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + manufacturer: Manufacturer + model: str + part_number: str + airflow: str + weight: float + weight_unit: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., model: _Optional[str] = ..., part_number: _Optional[str] = ..., airflow: _Optional[str] = ..., weight: _Optional[float] = ..., weight_unit: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Platform(_message.Message): + __slots__ = ("name", "slug", "manufacturer", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + manufacturer: Manufacturer + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class PowerFeed(_message.Message): + __slots__ = ("power_panel", "rack", "name", "status", "type", "supply", "phase", "voltage", "amperage", "max_utilization", "mark_connected", "description", "tenant", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + RACK_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + SUPPLY_FIELD_NUMBER: _ClassVar[int] + PHASE_FIELD_NUMBER: _ClassVar[int] + VOLTAGE_FIELD_NUMBER: _ClassVar[int] + AMPERAGE_FIELD_NUMBER: _ClassVar[int] + MAX_UTILIZATION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + power_panel: PowerPanel + rack: Rack + name: str + status: str + type: str + supply: str + phase: str + voltage: int + amperage: int + max_utilization: int + mark_connected: bool + description: str + tenant: Tenant + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., name: _Optional[str] = ..., status: _Optional[str] = ..., type: _Optional[str] = ..., supply: _Optional[str] = ..., phase: _Optional[str] = ..., voltage: _Optional[int] = ..., amperage: _Optional[int] = ..., max_utilization: _Optional[int] = ..., mark_connected: bool = ..., description: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class PowerOutlet(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "color", "power_port", "feed_leg", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + POWER_PORT_FIELD_NUMBER: _ClassVar[int] + FEED_LEG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + color: str + power_port: PowerPort + feed_leg: str + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., color: _Optional[str] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., feed_leg: _Optional[str] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class PowerPanel(_message.Message): + __slots__ = ("site", "location", "name", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + SITE_FIELD_NUMBER: _ClassVar[int] + LOCATION_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + site: Site + location: Location + name: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, site: _Optional[_Union[Site, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class PowerPort(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "maximum_draw", "allocated_draw", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + MAXIMUM_DRAW_FIELD_NUMBER: _ClassVar[int] + ALLOCATED_DRAW_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + maximum_draw: int + allocated_draw: int + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., maximum_draw: _Optional[int] = ..., allocated_draw: _Optional[int] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Prefix(_message.Message): + __slots__ = ("prefix", "vrf", "scope_location", "scope_region", "scope_site", "scope_site_group", "tenant", "vlan", "status", "role", "is_pool", "mark_utilized", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + PREFIX_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] + SCOPE_LOCATION_FIELD_NUMBER: _ClassVar[int] + SCOPE_REGION_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + VLAN_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + IS_POOL_FIELD_NUMBER: _ClassVar[int] + MARK_UTILIZED_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + prefix: str + vrf: VRF + scope_location: Location + scope_region: Region + scope_site: Site + scope_site_group: SiteGroup + tenant: Tenant + vlan: VLAN + status: str + role: Role + is_pool: bool + mark_utilized: bool + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, prefix: _Optional[str] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., scope_location: _Optional[_Union[Location, _Mapping]] = ..., scope_region: _Optional[_Union[Region, _Mapping]] = ..., scope_site: _Optional[_Union[Site, _Mapping]] = ..., scope_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., is_pool: bool = ..., mark_utilized: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Provider(_message.Message): + __slots__ = ("name", "slug", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ProviderAccount(_message.Message): + __slots__ = ("provider", "name", "account", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + PROVIDER_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + ACCOUNT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + provider: Provider + name: str + account: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, provider: _Optional[_Union[Provider, _Mapping]] = ..., name: _Optional[str] = ..., account: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class ProviderNetwork(_message.Message): + __slots__ = ("provider", "name", "service_id", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + PROVIDER_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + SERVICE_ID_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + provider: Provider + name: str + service_id: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, provider: _Optional[_Union[Provider, _Mapping]] = ..., name: _Optional[str] = ..., service_id: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RIR(_message.Message): + __slots__ = ("name", "slug", "is_private", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + IS_PRIVATE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + is_private: bool + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., is_private: bool = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Rack(_message.Message): + __slots__ = ("name", "facility_id", "site", "location", "tenant", "status", "role", "serial", "asset_tag", "rack_type", "form_factor", "width", "u_height", "starting_unit", "weight", "max_weight", "weight_unit", "desc_units", "outer_width", "outer_depth", "outer_unit", "mounting_depth", "airflow", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + FACILITY_ID_FIELD_NUMBER: _ClassVar[int] + SITE_FIELD_NUMBER: _ClassVar[int] + LOCATION_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + ASSET_TAG_FIELD_NUMBER: _ClassVar[int] + RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + FORM_FACTOR_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + U_HEIGHT_FIELD_NUMBER: _ClassVar[int] + STARTING_UNIT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + MAX_WEIGHT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_UNIT_FIELD_NUMBER: _ClassVar[int] + DESC_UNITS_FIELD_NUMBER: _ClassVar[int] + OUTER_WIDTH_FIELD_NUMBER: _ClassVar[int] + OUTER_DEPTH_FIELD_NUMBER: _ClassVar[int] + OUTER_UNIT_FIELD_NUMBER: _ClassVar[int] + MOUNTING_DEPTH_FIELD_NUMBER: _ClassVar[int] + AIRFLOW_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + facility_id: str + site: Site + location: Location + tenant: Tenant + status: str + role: RackRole + serial: str + asset_tag: str + rack_type: RackType + form_factor: str + width: int + u_height: int + starting_unit: int + weight: float + max_weight: int + weight_unit: str + desc_units: bool + outer_width: int + outer_depth: int + outer_unit: str + mounting_depth: int + airflow: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., facility_id: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[RackRole, _Mapping]] = ..., serial: _Optional[str] = ..., asset_tag: _Optional[str] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., form_factor: _Optional[str] = ..., width: _Optional[int] = ..., u_height: _Optional[int] = ..., starting_unit: _Optional[int] = ..., weight: _Optional[float] = ..., max_weight: _Optional[int] = ..., weight_unit: _Optional[str] = ..., desc_units: bool = ..., outer_width: _Optional[int] = ..., outer_depth: _Optional[int] = ..., outer_unit: _Optional[str] = ..., mounting_depth: _Optional[int] = ..., airflow: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RackReservation(_message.Message): + __slots__ = ("rack", "units", "tenant", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + RACK_FIELD_NUMBER: _ClassVar[int] + UNITS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + rack: Rack + units: _containers.RepeatedScalarFieldContainer[int] + tenant: Tenant + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, rack: _Optional[_Union[Rack, _Mapping]] = ..., units: _Optional[_Iterable[int]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RackRole(_message.Message): + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + color: str + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RackType(_message.Message): + __slots__ = ("manufacturer", "model", "slug", "description", "form_factor", "width", "u_height", "starting_unit", "desc_units", "outer_width", "outer_depth", "outer_unit", "weight", "max_weight", "weight_unit", "mounting_depth", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + MODEL_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + FORM_FACTOR_FIELD_NUMBER: _ClassVar[int] + WIDTH_FIELD_NUMBER: _ClassVar[int] + U_HEIGHT_FIELD_NUMBER: _ClassVar[int] + STARTING_UNIT_FIELD_NUMBER: _ClassVar[int] + DESC_UNITS_FIELD_NUMBER: _ClassVar[int] + OUTER_WIDTH_FIELD_NUMBER: _ClassVar[int] + OUTER_DEPTH_FIELD_NUMBER: _ClassVar[int] + OUTER_UNIT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + MAX_WEIGHT_FIELD_NUMBER: _ClassVar[int] + WEIGHT_UNIT_FIELD_NUMBER: _ClassVar[int] + MOUNTING_DEPTH_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + manufacturer: Manufacturer + model: str + slug: str + description: str + form_factor: str + width: int + u_height: int + starting_unit: int + desc_units: bool + outer_width: int + outer_depth: int + outer_unit: str + weight: float + max_weight: int + weight_unit: str + mounting_depth: int + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., model: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., form_factor: _Optional[str] = ..., width: _Optional[int] = ..., u_height: _Optional[int] = ..., starting_unit: _Optional[int] = ..., desc_units: bool = ..., outer_width: _Optional[int] = ..., outer_depth: _Optional[int] = ..., outer_unit: _Optional[str] = ..., weight: _Optional[float] = ..., max_weight: _Optional[int] = ..., weight_unit: _Optional[str] = ..., mounting_depth: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RearPort(_message.Message): + __slots__ = ("device", "module", "name", "label", "type", "color", "positions", "description", "mark_connected", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + MODULE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + LABEL_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + POSITIONS_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MARK_CONNECTED_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + module: Module + name: str + label: str + type: str + color: str + positions: int + description: str + mark_connected: bool + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., color: _Optional[str] = ..., positions: _Optional[int] = ..., description: _Optional[str] = ..., mark_connected: bool = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Region(_message.Message): + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + parent: Region + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., parent: _Optional[_Union[Region, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Role(_message.Message): + __slots__ = ("name", "slug", "weight", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + weight: int + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., weight: _Optional[int] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class RouteTarget(_message.Message): + __slots__ = ("name", "tenant", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + tenant: Tenant + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Service(_message.Message): + __slots__ = ("device", "virtual_machine", "name", "protocol", "ports", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + DEVICE_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + PROTOCOL_FIELD_NUMBER: _ClassVar[int] + PORTS_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + device: Device + virtual_machine: VirtualMachine + name: str + protocol: str + ports: _containers.RepeatedScalarFieldContainer[int] + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., protocol: _Optional[str] = ..., ports: _Optional[_Iterable[int]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Site(_message.Message): + __slots__ = ("name", "slug", "status", "region", "group", "tenant", "facility", "time_zone", "description", "physical_address", "shipping_address", "latitude", "longitude", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + FACILITY_FIELD_NUMBER: _ClassVar[int] + TIME_ZONE_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + PHYSICAL_ADDRESS_FIELD_NUMBER: _ClassVar[int] + SHIPPING_ADDRESS_FIELD_NUMBER: _ClassVar[int] + LATITUDE_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + status: str + region: Region + group: SiteGroup + tenant: Tenant + facility: str + time_zone: str + description: str + physical_address: str + shipping_address: str + latitude: float + longitude: float + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., status: _Optional[str] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., facility: _Optional[str] = ..., time_zone: _Optional[str] = ..., description: _Optional[str] = ..., physical_address: _Optional[str] = ..., shipping_address: _Optional[str] = ..., latitude: _Optional[float] = ..., longitude: _Optional[float] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class SiteGroup(_message.Message): + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + parent: SiteGroup + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., parent: _Optional[_Union[SiteGroup, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class Tag(_message.Message): + __slots__ = ("name", "slug", "color") + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + color: str + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ...) -> None: ... -class Cluster(_message.Message): - __slots__ = ("name", "type", "group", "site", "status", "description", "tags") +class Tenant(_message.Message): + __slots__ = ("name", "slug", "group", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] GROUP_FIELD_NUMBER: _ClassVar[int] - SITE_FIELD_NUMBER: _ClassVar[int] - STATUS_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str - type: ClusterType - group: ClusterGroup - site: Site - status: str + slug: str + group: TenantGroup description: str + comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., type: _Optional[_Union[ClusterType, _Mapping]] = ..., group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., status: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., group: _Optional[_Union[TenantGroup, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class ClusterType(_message.Message): - __slots__ = ("name", "slug", "description", "tags") +class TenantGroup(_message.Message): + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str slug: str + parent: TenantGroup description: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., parent: _Optional[_Union[TenantGroup, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class ClusterGroup(_message.Message): - __slots__ = ("name", "slug", "description", "tags") +class Tunnel(_message.Message): + __slots__ = ("name", "status", "group", "encapsulation", "ipsec_profile", "tenant", "tunnel_id", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + ENCAPSULATION_FIELD_NUMBER: _ClassVar[int] + IPSEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + TUNNEL_ID_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + status: str + group: TunnelGroup + encapsulation: str + ipsec_profile: IPSecProfile + tenant: Tenant + tunnel_id: int + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., status: _Optional[str] = ..., group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., encapsulation: _Optional[str] = ..., ipsec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tunnel_id: _Optional[int] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class TunnelGroup(_message.Message): + __slots__ = ("name", "slug", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str slug: str description: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class VirtualMachine(_message.Message): - __slots__ = ("name", "status", "site", "cluster", "role", "device", "platform", "primary_ip4", "primary_ip6", "vcpus", "memory", "disk", "description", "comments", "tags") +class TunnelTermination(_message.Message): + __slots__ = ("tunnel", "role", "termination_asn", "termination_asn_range", "termination_aggregate", "termination_cable", "termination_cable_path", "termination_cable_termination", "termination_circuit", "termination_circuit_group", "termination_circuit_group_assignment", "termination_circuit_termination", "termination_circuit_type", "termination_cluster", "termination_cluster_group", "termination_cluster_type", "termination_console_port", "termination_console_server_port", "termination_contact", "termination_contact_assignment", "termination_contact_group", "termination_contact_role", "termination_device", "termination_device_bay", "termination_device_role", "termination_device_type", "termination_fhrp_group", "termination_fhrp_group_assignment", "termination_front_port", "termination_ike_policy", "termination_ike_proposal", "termination_ip_address", "termination_ip_range", "termination_ip_sec_policy", "termination_ip_sec_profile", "termination_ip_sec_proposal", "termination_interface", "termination_inventory_item", "termination_inventory_item_role", "termination_l2vpn", "termination_l2vpn_termination", "termination_location", "termination_mac_address", "termination_manufacturer", "termination_module", "termination_module_bay", "termination_module_type", "termination_platform", "termination_power_feed", "termination_power_outlet", "termination_power_panel", "termination_power_port", "termination_prefix", "termination_provider", "termination_provider_account", "termination_provider_network", "termination_rir", "termination_rack", "termination_rack_reservation", "termination_rack_role", "termination_rack_type", "termination_rear_port", "termination_region", "termination_role", "termination_route_target", "termination_service", "termination_site", "termination_site_group", "termination_tag", "termination_tenant", "termination_tenant_group", "termination_tunnel", "termination_tunnel_group", "termination_tunnel_termination", "termination_vlan", "termination_vlan_group", "termination_vlan_translation_policy", "termination_vlan_translation_rule", "termination_vm_interface", "termination_vrf", "termination_virtual_chassis", "termination_virtual_circuit", "termination_virtual_circuit_termination", "termination_virtual_circuit_type", "termination_virtual_device_context", "termination_virtual_disk", "termination_virtual_machine", "termination_wireless_lan", "termination_wireless_lan_group", "termination_wireless_link", "outside_ip", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + TUNNEL_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_ASN_FIELD_NUMBER: _ClassVar[int] + TERMINATION_ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_AGGREGATE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CABLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CABLE_PATH_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CLUSTER_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONTACT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_DEVICE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] + TERMINATION_DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_FRONT_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IKE_POLICY_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IP_RANGE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IP_SEC_POLICY_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] + TERMINATION_INTERFACE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + TERMINATION_INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_L2VPN_FIELD_NUMBER: _ClassVar[int] + TERMINATION_L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_LOCATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + TERMINATION_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + TERMINATION_MODULE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_MODULE_BAY_FIELD_NUMBER: _ClassVar[int] + TERMINATION_MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PLATFORM_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_FEED_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_PANEL_FIELD_NUMBER: _ClassVar[int] + TERMINATION_POWER_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PREFIX_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PROVIDER_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + TERMINATION_RIR_FIELD_NUMBER: _ClassVar[int] + TERMINATION_RACK_FIELD_NUMBER: _ClassVar[int] + TERMINATION_RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_RACK_ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_REAR_PORT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_REGION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_ROLE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] + TERMINATION_SERVICE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_SITE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TAG_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TENANT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TUNNEL_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VLAN_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VRF_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + TERMINATION_VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] + TERMINATION_WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + TERMINATION_WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + TERMINATION_WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] + OUTSIDE_IP_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + tunnel: Tunnel + role: str + termination_asn: ASN + termination_asn_range: ASNRange + termination_aggregate: Aggregate + termination_cable: Cable + termination_cable_path: CablePath + termination_cable_termination: CableTermination + termination_circuit: Circuit + termination_circuit_group: CircuitGroup + termination_circuit_group_assignment: CircuitGroupAssignment + termination_circuit_termination: CircuitTermination + termination_circuit_type: CircuitType + termination_cluster: Cluster + termination_cluster_group: ClusterGroup + termination_cluster_type: ClusterType + termination_console_port: ConsolePort + termination_console_server_port: ConsoleServerPort + termination_contact: Contact + termination_contact_assignment: ContactAssignment + termination_contact_group: ContactGroup + termination_contact_role: ContactRole + termination_device: Device + termination_device_bay: DeviceBay + termination_device_role: DeviceRole + termination_device_type: DeviceType + termination_fhrp_group: FHRPGroup + termination_fhrp_group_assignment: FHRPGroupAssignment + termination_front_port: FrontPort + termination_ike_policy: IKEPolicy + termination_ike_proposal: IKEProposal + termination_ip_address: IPAddress + termination_ip_range: IPRange + termination_ip_sec_policy: IPSecPolicy + termination_ip_sec_profile: IPSecProfile + termination_ip_sec_proposal: IPSecProposal + termination_interface: Interface + termination_inventory_item: InventoryItem + termination_inventory_item_role: InventoryItemRole + termination_l2vpn: L2VPN + termination_l2vpn_termination: L2VPNTermination + termination_location: Location + termination_mac_address: MACAddress + termination_manufacturer: Manufacturer + termination_module: Module + termination_module_bay: ModuleBay + termination_module_type: ModuleType + termination_platform: Platform + termination_power_feed: PowerFeed + termination_power_outlet: PowerOutlet + termination_power_panel: PowerPanel + termination_power_port: PowerPort + termination_prefix: Prefix + termination_provider: Provider + termination_provider_account: ProviderAccount + termination_provider_network: ProviderNetwork + termination_rir: RIR + termination_rack: Rack + termination_rack_reservation: RackReservation + termination_rack_role: RackRole + termination_rack_type: RackType + termination_rear_port: RearPort + termination_region: Region + termination_role: Role + termination_route_target: RouteTarget + termination_service: Service + termination_site: Site + termination_site_group: SiteGroup + termination_tag: Tag + termination_tenant: Tenant + termination_tenant_group: TenantGroup + termination_tunnel: Tunnel + termination_tunnel_group: TunnelGroup + termination_tunnel_termination: TunnelTermination + termination_vlan: VLAN + termination_vlan_group: VLANGroup + termination_vlan_translation_policy: VLANTranslationPolicy + termination_vlan_translation_rule: VLANTranslationRule + termination_vm_interface: VMInterface + termination_vrf: VRF + termination_virtual_chassis: VirtualChassis + termination_virtual_circuit: VirtualCircuit + termination_virtual_circuit_termination: VirtualCircuitTermination + termination_virtual_circuit_type: VirtualCircuitType + termination_virtual_device_context: VirtualDeviceContext + termination_virtual_disk: VirtualDisk + termination_virtual_machine: VirtualMachine + termination_wireless_lan: WirelessLAN + termination_wireless_lan_group: WirelessLANGroup + termination_wireless_link: WirelessLink + outside_ip: IPAddress + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., role: _Optional[str] = ..., termination_asn: _Optional[_Union[ASN, _Mapping]] = ..., termination_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., termination_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., termination_cable: _Optional[_Union[Cable, _Mapping]] = ..., termination_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., termination_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., termination_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., termination_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., termination_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., termination_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., termination_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., termination_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., termination_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., termination_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., termination_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., termination_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., termination_contact: _Optional[_Union[Contact, _Mapping]] = ..., termination_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., termination_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., termination_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., termination_device: _Optional[_Union[Device, _Mapping]] = ..., termination_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., termination_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., termination_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., termination_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., termination_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., termination_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., termination_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., termination_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., termination_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., termination_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., termination_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., termination_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., termination_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., termination_interface: _Optional[_Union[Interface, _Mapping]] = ..., termination_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., termination_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., termination_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., termination_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., termination_location: _Optional[_Union[Location, _Mapping]] = ..., termination_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., termination_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., termination_module: _Optional[_Union[Module, _Mapping]] = ..., termination_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., termination_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., termination_platform: _Optional[_Union[Platform, _Mapping]] = ..., termination_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., termination_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., termination_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., termination_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., termination_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., termination_provider: _Optional[_Union[Provider, _Mapping]] = ..., termination_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., termination_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., termination_rir: _Optional[_Union[RIR, _Mapping]] = ..., termination_rack: _Optional[_Union[Rack, _Mapping]] = ..., termination_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., termination_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., termination_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., termination_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., termination_region: _Optional[_Union[Region, _Mapping]] = ..., termination_role: _Optional[_Union[Role, _Mapping]] = ..., termination_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., termination_service: _Optional[_Union[Service, _Mapping]] = ..., termination_site: _Optional[_Union[Site, _Mapping]] = ..., termination_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., termination_tag: _Optional[_Union[Tag, _Mapping]] = ..., termination_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., termination_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., termination_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., termination_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., termination_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., termination_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., termination_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., termination_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., termination_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., termination_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., termination_vrf: _Optional[_Union[VRF, _Mapping]] = ..., termination_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., termination_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., termination_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., termination_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., termination_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., termination_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., termination_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., termination_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., termination_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., termination_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., outside_ip: _Optional[_Union[IPAddress, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class VLAN(_message.Message): + __slots__ = ("site", "group", "vid", "name", "tenant", "status", "role", "description", "qinq_role", "qinq_svlan", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + SITE_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + VID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] - SITE_FIELD_NUMBER: _ClassVar[int] - CLUSTER_FIELD_NUMBER: _ClassVar[int] ROLE_FIELD_NUMBER: _ClassVar[int] - DEVICE_FIELD_NUMBER: _ClassVar[int] - PLATFORM_FIELD_NUMBER: _ClassVar[int] - PRIMARY_IP4_FIELD_NUMBER: _ClassVar[int] - PRIMARY_IP6_FIELD_NUMBER: _ClassVar[int] - VCPUS_FIELD_NUMBER: _ClassVar[int] - MEMORY_FIELD_NUMBER: _ClassVar[int] - DISK_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + QINQ_ROLE_FIELD_NUMBER: _ClassVar[int] + QINQ_SVLAN_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + site: Site + group: VLANGroup + vid: int name: str + tenant: Tenant status: str - site: Site - cluster: Cluster role: Role - device: Device - platform: Platform - primary_ip4: IPAddress - primary_ip6: IPAddress - vcpus: int - memory: int - disk: int description: str + qinq_role: str + qinq_svlan: VLAN comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., status: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., primary_ip4: _Optional[_Union[IPAddress, _Mapping]] = ..., primary_ip6: _Optional[_Union[IPAddress, _Mapping]] = ..., vcpus: _Optional[int] = ..., memory: _Optional[int] = ..., disk: _Optional[int] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, site: _Optional[_Union[Site, _Mapping]] = ..., group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vid: _Optional[int] = ..., name: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., description: _Optional[str] = ..., qinq_role: _Optional[str] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class VLANGroup(_message.Message): + __slots__ = ("name", "slug", "scope_cluster", "scope_cluster_group", "scope_location", "scope_rack", "scope_region", "scope_site", "scope_site_group", "vid_ranges", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + SLUG_FIELD_NUMBER: _ClassVar[int] + SCOPE_CLUSTER_FIELD_NUMBER: _ClassVar[int] + SCOPE_CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] + SCOPE_LOCATION_FIELD_NUMBER: _ClassVar[int] + SCOPE_RACK_FIELD_NUMBER: _ClassVar[int] + SCOPE_REGION_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + VID_RANGES_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + slug: str + scope_cluster: Cluster + scope_cluster_group: ClusterGroup + scope_location: Location + scope_rack: Rack + scope_region: Region + scope_site: Site + scope_site_group: SiteGroup + vid_ranges: _containers.RepeatedScalarFieldContainer[int] + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., scope_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., scope_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., scope_location: _Optional[_Union[Location, _Mapping]] = ..., scope_rack: _Optional[_Union[Rack, _Mapping]] = ..., scope_region: _Optional[_Union[Region, _Mapping]] = ..., scope_site: _Optional[_Union[Site, _Mapping]] = ..., scope_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., vid_ranges: _Optional[_Iterable[int]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class VLANTranslationPolicy(_message.Message): + __slots__ = ("name", "description") + NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + name: str + description: str + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ... + +class VLANTranslationRule(_message.Message): + __slots__ = ("policy", "local_vid", "remote_vid", "description") + POLICY_FIELD_NUMBER: _ClassVar[int] + LOCAL_VID_FIELD_NUMBER: _ClassVar[int] + REMOTE_VID_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + policy: VLANTranslationPolicy + local_vid: int + remote_vid: int + description: str + def __init__(self, policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., local_vid: _Optional[int] = ..., remote_vid: _Optional[int] = ..., description: _Optional[str] = ...) -> None: ... class VMInterface(_message.Message): - __slots__ = ("virtual_machine", "name", "enabled", "mtu", "mac_address", "description", "tags") + __slots__ = ("virtual_machine", "name", "enabled", "parent", "bridge", "mtu", "primary_mac_address", "description", "mode", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "vrf", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] ENABLED_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + BRIDGE_FIELD_NUMBER: _ClassVar[int] MTU_FIELD_NUMBER: _ClassVar[int] - MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + PRIMARY_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + UNTAGGED_VLAN_FIELD_NUMBER: _ClassVar[int] + QINQ_SVLAN_FIELD_NUMBER: _ClassVar[int] + VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] + VRF_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] virtual_machine: VirtualMachine name: str enabled: bool + parent: VMInterface + bridge: VMInterface mtu: int - mac_address: str + primary_mac_address: MACAddress description: str + mode: str + untagged_vlan: VLAN + qinq_svlan: VLAN + vlan_translation_policy: VLANTranslationPolicy + vrf: VRF tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., enabled: bool = ..., mtu: _Optional[int] = ..., mac_address: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[VMInterface, _Mapping]] = ..., bridge: _Optional[_Union[VMInterface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class VirtualDisk(_message.Message): - __slots__ = ("virtual_machine", "name", "size", "description", "tags") - VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] +class VRF(_message.Message): + __slots__ = ("name", "rd", "tenant", "enforce_unique", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] - SIZE_FIELD_NUMBER: _ClassVar[int] + RD_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + ENFORCE_UNIQUE_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - virtual_machine: VirtualMachine + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str - size: int + rd: str + tenant: Tenant + enforce_unique: bool description: str + comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., size: _Optional[int] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., rd: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., enforce_unique: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class IPAddress(_message.Message): - __slots__ = ("address", "interface", "status", "role", "dns_name", "description", "comments", "tags") - ADDRESS_FIELD_NUMBER: _ClassVar[int] - INTERFACE_FIELD_NUMBER: _ClassVar[int] - STATUS_FIELD_NUMBER: _ClassVar[int] - ROLE_FIELD_NUMBER: _ClassVar[int] - DNS_NAME_FIELD_NUMBER: _ClassVar[int] +class VirtualChassis(_message.Message): + __slots__ = ("name", "domain", "master", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DOMAIN_FIELD_NUMBER: _ClassVar[int] + MASTER_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - address: str - interface: Interface - status: str - role: str - dns_name: str + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + domain: str + master: Device description: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, address: _Optional[str] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[str] = ..., dns_name: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., domain: _Optional[str] = ..., master: _Optional[_Union[Device, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class DeviceType(_message.Message): - __slots__ = ("model", "slug", "manufacturer", "description", "comments", "part_number", "tags") - MODEL_FIELD_NUMBER: _ClassVar[int] - SLUG_FIELD_NUMBER: _ClassVar[int] - MANUFACTURER_FIELD_NUMBER: _ClassVar[int] +class VirtualCircuit(_message.Message): + __slots__ = ("cid", "provider_network", "provider_account", "type", "status", "tenant", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + CID_FIELD_NUMBER: _ClassVar[int] + PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] - PART_NUMBER_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - model: str - slug: str - manufacturer: Manufacturer + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + cid: str + provider_network: ProviderNetwork + provider_account: ProviderAccount + type: VirtualCircuitType + status: str + tenant: Tenant description: str comments: str - part_number: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, model: _Optional[str] = ..., slug: _Optional[str] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., part_number: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, cid: _Optional[str] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Manufacturer(_message.Message): - __slots__ = ("name", "slug", "description", "tags") - NAME_FIELD_NUMBER: _ClassVar[int] - SLUG_FIELD_NUMBER: _ClassVar[int] +class VirtualCircuitTermination(_message.Message): + __slots__ = ("virtual_circuit", "role", "interface", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - name: str - slug: str + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + virtual_circuit: VirtualCircuit + role: str + interface: Interface description: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., role: _Optional[str] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Platform(_message.Message): - __slots__ = ("name", "slug", "manufacturer", "description", "tags") +class VirtualCircuitType(_message.Message): + __slots__ = ("name", "slug", "color", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] - MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str slug: str - manufacturer: Manufacturer + color: str description: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Prefix(_message.Message): - __slots__ = ("prefix", "site", "status", "is_pool", "mark_utilized", "description", "comments", "tags") - PREFIX_FIELD_NUMBER: _ClassVar[int] - SITE_FIELD_NUMBER: _ClassVar[int] +class VirtualDeviceContext(_message.Message): + __slots__ = ("name", "device", "identifier", "tenant", "primary_ip4", "primary_ip6", "status", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] + IDENTIFIER_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP4_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP6_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] - IS_POOL_FIELD_NUMBER: _ClassVar[int] - MARK_UTILIZED_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] - prefix: str - site: Site + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + name: str + device: Device + identifier: int + tenant: Tenant + primary_ip4: IPAddress + primary_ip6: IPAddress status: str - is_pool: bool - mark_utilized: bool description: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, prefix: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., status: _Optional[str] = ..., is_pool: bool = ..., mark_utilized: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., identifier: _Optional[int] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., primary_ip4: _Optional[_Union[IPAddress, _Mapping]] = ..., primary_ip6: _Optional[_Union[IPAddress, _Mapping]] = ..., status: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Role(_message.Message): - __slots__ = ("name", "slug", "color", "description", "tags") +class VirtualDisk(_message.Message): + __slots__ = ("virtual_machine", "name", "description", "size", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] - SLUG_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + virtual_machine: VirtualMachine name: str - slug: str - color: str description: str + size: int tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., size: _Optional[int] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Site(_message.Message): - __slots__ = ("name", "slug", "status", "facility", "time_zone", "description", "comments", "tags") +class VirtualMachine(_message.Message): + __slots__ = ("name", "status", "site", "cluster", "device", "serial", "role", "tenant", "platform", "primary_ip4", "primary_ip6", "vcpus", "memory", "disk", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] - SLUG_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] - FACILITY_FIELD_NUMBER: _ClassVar[int] - TIME_ZONE_FIELD_NUMBER: _ClassVar[int] + SITE_FIELD_NUMBER: _ClassVar[int] + CLUSTER_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + PLATFORM_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP4_FIELD_NUMBER: _ClassVar[int] + PRIMARY_IP6_FIELD_NUMBER: _ClassVar[int] + VCPUS_FIELD_NUMBER: _ClassVar[int] + MEMORY_FIELD_NUMBER: _ClassVar[int] + DISK_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str - slug: str status: str - facility: str - time_zone: str + site: Site + cluster: Cluster + device: Device + serial: str + role: DeviceRole + tenant: Tenant + platform: Platform + primary_ip4: IPAddress + primary_ip6: IPAddress + vcpus: float + memory: int + disk: int description: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., status: _Optional[str] = ..., facility: _Optional[str] = ..., time_zone: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ...) -> None: ... + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., status: _Optional[str] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., serial: _Optional[str] = ..., role: _Optional[_Union[DeviceRole, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., primary_ip4: _Optional[_Union[IPAddress, _Mapping]] = ..., primary_ip6: _Optional[_Union[IPAddress, _Mapping]] = ..., vcpus: _Optional[float] = ..., memory: _Optional[int] = ..., disk: _Optional[int] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class Tag(_message.Message): - __slots__ = ("name", "slug", "color") +class WirelessLAN(_message.Message): + __slots__ = ("ssid", "description", "group", "status", "vlan", "scope_location", "scope_region", "scope_site", "scope_site_group", "tenant", "auth_type", "auth_cipher", "auth_psk", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + SSID_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + VLAN_FIELD_NUMBER: _ClassVar[int] + SCOPE_LOCATION_FIELD_NUMBER: _ClassVar[int] + SCOPE_REGION_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_FIELD_NUMBER: _ClassVar[int] + SCOPE_SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + AUTH_TYPE_FIELD_NUMBER: _ClassVar[int] + AUTH_CIPHER_FIELD_NUMBER: _ClassVar[int] + AUTH_PSK_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + ssid: str + description: str + group: WirelessLANGroup + status: str + vlan: VLAN + scope_location: Location + scope_region: Region + scope_site: Site + scope_site_group: SiteGroup + tenant: Tenant + auth_type: str + auth_cipher: str + auth_psk: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, ssid: _Optional[str] = ..., description: _Optional[str] = ..., group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., status: _Optional[str] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., scope_location: _Optional[_Union[Location, _Mapping]] = ..., scope_region: _Optional[_Union[Region, _Mapping]] = ..., scope_site: _Optional[_Union[Site, _Mapping]] = ..., scope_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., auth_type: _Optional[str] = ..., auth_cipher: _Optional[str] = ..., auth_psk: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + +class WirelessLANGroup(_message.Message): + __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... NAME_FIELD_NUMBER: _ClassVar[int] SLUG_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] + PARENT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] name: str slug: str - color: str - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ...) -> None: ... - -class Entity(_message.Message): - __slots__ = ("site", "platform", "manufacturer", "device", "device_role", "device_type", "interface", "ip_address", "prefix", "cluster_group", "cluster_type", "cluster", "virtual_machine", "vminterface", "virtual_disk", "timestamp") - SITE_FIELD_NUMBER: _ClassVar[int] - PLATFORM_FIELD_NUMBER: _ClassVar[int] - MANUFACTURER_FIELD_NUMBER: _ClassVar[int] - DEVICE_FIELD_NUMBER: _ClassVar[int] - DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] - DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] - INTERFACE_FIELD_NUMBER: _ClassVar[int] - IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] - PREFIX_FIELD_NUMBER: _ClassVar[int] - CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] - CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] - CLUSTER_FIELD_NUMBER: _ClassVar[int] - VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] - VMINTERFACE_FIELD_NUMBER: _ClassVar[int] - VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] - TIMESTAMP_FIELD_NUMBER: _ClassVar[int] - site: Site - platform: Platform - manufacturer: Manufacturer - device: Device - device_role: Role - device_type: DeviceType - interface: Interface - ip_address: IPAddress - prefix: Prefix - cluster_group: ClusterGroup - cluster_type: ClusterType - cluster: Cluster - virtual_machine: VirtualMachine - vminterface: VMInterface - virtual_disk: VirtualDisk - timestamp: _timestamp_pb2.Timestamp - def __init__(self, site: _Optional[_Union[Site, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_role: _Optional[_Union[Role, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., vminterface: _Optional[_Union[VMInterface, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... - -class IngestRequest(_message.Message): - __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version") - STREAM_FIELD_NUMBER: _ClassVar[int] - ENTITIES_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - PRODUCER_APP_NAME_FIELD_NUMBER: _ClassVar[int] - PRODUCER_APP_VERSION_FIELD_NUMBER: _ClassVar[int] - SDK_NAME_FIELD_NUMBER: _ClassVar[int] - SDK_VERSION_FIELD_NUMBER: _ClassVar[int] - stream: str - entities: _containers.RepeatedCompositeFieldContainer[Entity] - id: str - producer_app_name: str - producer_app_version: str - sdk_name: str - sdk_version: str - def __init__(self, stream: _Optional[str] = ..., entities: _Optional[_Iterable[_Union[Entity, _Mapping]]] = ..., id: _Optional[str] = ..., producer_app_name: _Optional[str] = ..., producer_app_version: _Optional[str] = ..., sdk_name: _Optional[str] = ..., sdk_version: _Optional[str] = ...) -> None: ... + parent: WirelessLANGroup + description: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., parent: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... -class IngestResponse(_message.Message): - __slots__ = ("errors",) - ERRORS_FIELD_NUMBER: _ClassVar[int] - errors: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, errors: _Optional[_Iterable[str]] = ...) -> None: ... +class WirelessLink(_message.Message): + __slots__ = ("interface_a", "interface_b", "ssid", "status", "tenant", "auth_type", "auth_cipher", "auth_psk", "distance", "distance_unit", "description", "comments", "tags", "custom_fields") + class CustomFieldsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: CustomFieldValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[CustomFieldValue, _Mapping]] = ...) -> None: ... + INTERFACE_A_FIELD_NUMBER: _ClassVar[int] + INTERFACE_B_FIELD_NUMBER: _ClassVar[int] + SSID_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TENANT_FIELD_NUMBER: _ClassVar[int] + AUTH_TYPE_FIELD_NUMBER: _ClassVar[int] + AUTH_CIPHER_FIELD_NUMBER: _ClassVar[int] + AUTH_PSK_FIELD_NUMBER: _ClassVar[int] + DISTANCE_FIELD_NUMBER: _ClassVar[int] + DISTANCE_UNIT_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + COMMENTS_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] + CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + interface_a: Interface + interface_b: Interface + ssid: str + status: str + tenant: Tenant + auth_type: str + auth_cipher: str + auth_psk: str + distance: float + distance_unit: str + description: str + comments: str + tags: _containers.RepeatedCompositeFieldContainer[Tag] + custom_fields: _containers.MessageMap[str, CustomFieldValue] + def __init__(self, interface_a: _Optional[_Union[Interface, _Mapping]] = ..., interface_b: _Optional[_Union[Interface, _Mapping]] = ..., ssid: _Optional[str] = ..., status: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., auth_type: _Optional[str] = ..., auth_cipher: _Optional[str] = ..., auth_psk: _Optional[str] = ..., distance: _Optional[float] = ..., distance_unit: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2_grpc.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2_grpc.py index 8fb6144..2bf5c8d 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2_grpc.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2_grpc.py @@ -7,6 +7,7 @@ class IngesterServiceStub(object): """Ingestion API + """ def __init__(self, channel): @@ -24,6 +25,7 @@ def __init__(self, channel): class IngesterServiceServicer(object): """Ingestion API + """ def Ingest(self, request, context): @@ -50,6 +52,7 @@ def add_IngesterServiceServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class IngesterService(object): """Ingestion API + """ @staticmethod diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index d4d9b7c..dc44bbf 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -1,594 +1,4831 @@ -#!/usr/bin/env python -# Copyright 2024 NetBox Labs Inc -"""NetBox Labs, Diode - SDK - ingester protobuf message wrappers.""" -from typing import Any +"""Python SDK wrappers for the Diode protobuf schema.""" + +# +# Generated code. DO NOT EDIT. +# Timestamp: 2025-03-19 19:34:03Z +# +# ruff: noqa: C901 +from __future__ import annotations + +import datetime +import re +from typing import Any from google.protobuf import timestamp_pb2 as _timestamp_pb2 +import netboxlabs.diode.sdk.diode.v1.ingester_pb2 as pb + +PRIMARY_VALUE_MAP = { + 'ASN': 'asn', + 'ASNRange': 'name', + 'Circuit': 'cid', + 'CircuitGroup': 'name', + 'CircuitType': 'name', + 'Cluster': 'name', + 'ClusterGroup': 'name', + 'ClusterType': 'name', + 'ConsolePort': 'name', + 'ConsoleServerPort': 'name', + 'Contact': 'name', + 'ContactGroup': 'name', + 'ContactRole': 'name', + 'Device': 'name', + 'DeviceBay': 'name', + 'DeviceRole': 'name', + 'DeviceType': 'model', + 'FHRPGroup': 'name', + 'FrontPort': 'name', + 'IKEPolicy': 'name', + 'IKEProposal': 'name', + 'IPAddress': 'address', + 'IPSecPolicy': 'name', + 'IPSecProfile': 'name', + 'IPSecProposal': 'name', + 'Interface': 'name', + 'InventoryItem': 'name', + 'InventoryItemRole': 'name', + 'L2VPN': 'name', + 'Location': 'name', + 'MACAddress': 'mac_address', + 'Manufacturer': 'name', + 'ModuleBay': 'name', + 'ModuleType': 'model', + 'Platform': 'name', + 'PowerFeed': 'name', + 'PowerOutlet': 'name', + 'PowerPanel': 'name', + 'PowerPort': 'name', + 'Prefix': 'prefix', + 'Provider': 'name', + 'ProviderAccount': 'name', + 'ProviderNetwork': 'name', + 'RIR': 'name', + 'Rack': 'name', + 'RackRole': 'name', + 'RackType': 'model', + 'RearPort': 'name', + 'Region': 'name', + 'Role': 'name', + 'RouteTarget': 'name', + 'Service': 'name', + 'Site': 'name', + 'SiteGroup': 'name', + 'Tag': 'name', + 'Tenant': 'name', + 'TenantGroup': 'name', + 'Tunnel': 'name', + 'TunnelGroup': 'name', + 'VLAN': 'name', + 'VLANGroup': 'name', + 'VLANTranslationPolicy': 'name', + 'VMInterface': 'name', + 'VRF': 'name', + 'VirtualChassis': 'name', + 'VirtualCircuit': 'cid', + 'VirtualCircuitType': 'name', + 'VirtualDeviceContext': 'name', + 'VirtualDisk': 'name', + 'VirtualMachine': 'name', + 'WirelessLAN': 'ssid', + 'WirelessLANGroup': 'name', +} + +AUTO_SLUGIFY = frozenset([ + 'ASNRange', + 'CircuitGroup', + 'CircuitType', + 'ClusterGroup', + 'ClusterType', + 'ContactGroup', + 'ContactRole', + 'DeviceRole', + 'DeviceType', + 'InventoryItemRole', + 'L2VPN', + 'Location', + 'Manufacturer', + 'Platform', + 'Provider', + 'RIR', + 'RackRole', + 'RackType', + 'Region', + 'Role', + 'Site', + 'SiteGroup', + 'Tag', + 'Tenant', + 'TenantGroup', + 'TunnelGroup', + 'VLANGroup', + 'VirtualCircuitType', + 'WirelessLANGroup', +]) + + +def slugify(value: Any) -> str: + """Convert a value to a slug.""" + value = str(value).strip().strip('_').lower() + value = re.sub(r'[^\w\s-]', '', value) + return re.sub(r'[-\s]+', '-', value) -# ruff: noqa: I001 -from netboxlabs.diode.sdk.diode.v1.ingester_pb2 import ( - Cluster as ClusterPb, - ClusterGroup as ClusterGroupPb, - ClusterType as ClusterTypePb, - Device as DevicePb, - DeviceType as DeviceTypePb, - Entity as EntityPb, - IPAddress as IPAddressPb, - Interface as InterfacePb, - Manufacturer as ManufacturerPb, - Platform as PlatformPb, - Prefix as PrefixPb, - Role as RolePb, - Site as SitePb, - Tag as TagPb, - VirtualDisk as VirtualDiskPb, - VMInterface as VMInterfacePb, - VirtualMachine as VirtualMachinePb, -) - - -def convert_to_protobuf(value: Any, protobuf_class, **kwargs): + +def is_field_set(value: Any, field_name: str) -> bool: + """Check if a protobuf field is set. HasField() only works for message fields in proto3.""" + if value is None: + return False + for field_descriptor, _ in value.ListFields(): + if field_descriptor.name == field_name: + return True + return False + + +def convert_to_protobuf(value: Any, protobuf_class): """Convert a value to a protobuf message.""" - if isinstance(value, str): - return protobuf_class(**kwargs) + if value is None: + return None + if isinstance(value, str|int|float): + pvk = PRIMARY_VALUE_MAP.get(protobuf_class.__name__) + if pvk is None: + raise ValueError(f'{protobuf_class.__name__} cannot be initialized with {type(value)}') + kwargs = {pvk: value} + value = protobuf_class(**kwargs) + + if protobuf_class.__name__ in AUTO_SLUGIFY and value.slug == '': + pvk = PRIMARY_VALUE_MAP.get(protobuf_class.__name__) + value.slug = slugify(getattr(value, pvk)) + return value -class Tag: - """Tag message wrapper.""" +def convert_to_protobuf_list(value: list | None, protobuf_class): + """Convert a list of values to a list of protobuf messages.""" + if value is None: + return None + return [convert_to_protobuf(x, protobuf_class) for x in value] + + +def convert_to_protobuf_dict(value: dict | None, protobuf_class): + """Convert a dictionary of values to a dictionary of protobuf messages.""" + if value is None: + return None + return {k: convert_to_protobuf(v, protobuf_class) for k, v in value.items()} + + +class Entity: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Entity.""" + + def __new__( + cls, + timestamp: datetime.datetime | None = None, + asn_range: str | ASNRange | pb.ASNRange | None = None, + asn: str | ASN | pb.ASN | None = None, + aggregate: str | Aggregate | pb.Aggregate | None = None, + cable_path: str | CablePath | pb.CablePath | None = None, + cable: str | Cable | pb.Cable | None = None, + cable_termination: str | CableTermination | pb.CableTermination | None = None, + circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + circuit: str | Circuit | pb.Circuit | None = None, + circuit_type: str | CircuitType | pb.CircuitType | None = None, + cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + cluster: str | Cluster | pb.Cluster | None = None, + cluster_type: str | ClusterType | pb.ClusterType | None = None, + console_port: str | ConsolePort | pb.ConsolePort | None = None, + console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + contact_group: str | ContactGroup | pb.ContactGroup | None = None, + contact_role: str | ContactRole | pb.ContactRole | None = None, + contact: str | Contact | pb.Contact | None = None, + vlan: str | VLAN | pb.VLAN | None = None, + device_bay: str | DeviceBay | pb.DeviceBay | None = None, + device_role: str | DeviceRole | pb.DeviceRole | None = None, + device: str | Device | pb.Device | None = None, + device_type: str | DeviceType | pb.DeviceType | None = None, + fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + rear_port: str | RearPort | pb.RearPort | None = None, + front_port: str | FrontPort | pb.FrontPort | None = None, + generic_object: str | GenericObject | pb.GenericObject | None = None, + ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + ip_address: str | IPAddress | pb.IPAddress | None = None, + ip_range: str | IPRange | pb.IPRange | None = None, + ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + interface: str | Interface | pb.Interface | None = None, + inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + l2vpn: str | L2VPN | pb.L2VPN | None = None, + l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + location: str | Location | pb.Location | None = None, + mac_address: str | MACAddress | pb.MACAddress | None = None, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + module_bay: str | ModuleBay | pb.ModuleBay | None = None, + module: str | Module | pb.Module | None = None, + module_type: str | ModuleType | pb.ModuleType | None = None, + region: str | Region | pb.Region | None = None, + site_group: str | SiteGroup | pb.SiteGroup | None = None, + tag: str | Tag | pb.Tag | None = None, + tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + vm_interface: str | VMInterface | pb.VMInterface | None = None, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + platform: str | Platform | pb.Platform | None = None, + power_feed: str | PowerFeed | pb.PowerFeed | None = None, + power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + power_panel: str | PowerPanel | pb.PowerPanel | None = None, + power_port: str | PowerPort | pb.PowerPort | None = None, + prefix: str | Prefix | pb.Prefix | None = None, + provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + provider: str | Provider | pb.Provider | None = None, + rir: str | RIR | pb.RIR | None = None, + rack_reservation: str | RackReservation | pb.RackReservation | None = None, + rack_role: str | RackRole | pb.RackRole | None = None, + rack: str | Rack | pb.Rack | None = None, + rack_type: str | RackType | pb.RackType | None = None, + role: str | Role | pb.Role | None = None, + route_target: str | RouteTarget | pb.RouteTarget | None = None, + service: str | Service | pb.Service | None = None, + site: str | Site | pb.Site | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + tunnel: str | Tunnel | pb.Tunnel | None = None, + tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + vrf: str | VRF | pb.VRF | None = None, + virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + ) -> pb.Entity: + """Create a new Entity.""" + asn_range = convert_to_protobuf(asn_range, pb.ASNRange) + asn = convert_to_protobuf(asn, pb.ASN) + aggregate = convert_to_protobuf(aggregate, pb.Aggregate) + cable_path = convert_to_protobuf(cable_path, pb.CablePath) + cable = convert_to_protobuf(cable, pb.Cable) + cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) + circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) + circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) + circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) + circuit = convert_to_protobuf(circuit, pb.Circuit) + circuit_type = convert_to_protobuf(circuit_type, pb.CircuitType) + cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) + cluster = convert_to_protobuf(cluster, pb.Cluster) + cluster_type = convert_to_protobuf(cluster_type, pb.ClusterType) + console_port = convert_to_protobuf(console_port, pb.ConsolePort) + console_server_port = convert_to_protobuf(console_server_port, pb.ConsoleServerPort) + contact_assignment = convert_to_protobuf(contact_assignment, pb.ContactAssignment) + contact_group = convert_to_protobuf(contact_group, pb.ContactGroup) + contact_role = convert_to_protobuf(contact_role, pb.ContactRole) + contact = convert_to_protobuf(contact, pb.Contact) + vlan = convert_to_protobuf(vlan, pb.VLAN) + device_bay = convert_to_protobuf(device_bay, pb.DeviceBay) + device_role = convert_to_protobuf(device_role, pb.DeviceRole) + device = convert_to_protobuf(device, pb.Device) + device_type = convert_to_protobuf(device_type, pb.DeviceType) + fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) + fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) + rear_port = convert_to_protobuf(rear_port, pb.RearPort) + front_port = convert_to_protobuf(front_port, pb.FrontPort) + generic_object = convert_to_protobuf(generic_object, pb.GenericObject) + ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) + ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) + ip_address = convert_to_protobuf(ip_address, pb.IPAddress) + ip_range = convert_to_protobuf(ip_range, pb.IPRange) + ip_sec_policy = convert_to_protobuf(ip_sec_policy, pb.IPSecPolicy) + ip_sec_profile = convert_to_protobuf(ip_sec_profile, pb.IPSecProfile) + ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) + interface = convert_to_protobuf(interface, pb.Interface) + inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) + inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) + l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) + l2vpn_termination = convert_to_protobuf(l2vpn_termination, pb.L2VPNTermination) + location = convert_to_protobuf(location, pb.Location) + mac_address = convert_to_protobuf(mac_address, pb.MACAddress) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) + module = convert_to_protobuf(module, pb.Module) + module_type = convert_to_protobuf(module_type, pb.ModuleType) + region = convert_to_protobuf(region, pb.Region) + site_group = convert_to_protobuf(site_group, pb.SiteGroup) + tag = convert_to_protobuf(tag, pb.Tag) + tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) + vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) + wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) + wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) + platform = convert_to_protobuf(platform, pb.Platform) + power_feed = convert_to_protobuf(power_feed, pb.PowerFeed) + power_outlet = convert_to_protobuf(power_outlet, pb.PowerOutlet) + power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) + power_port = convert_to_protobuf(power_port, pb.PowerPort) + prefix = convert_to_protobuf(prefix, pb.Prefix) + provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) + provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) + provider = convert_to_protobuf(provider, pb.Provider) + rir = convert_to_protobuf(rir, pb.RIR) + rack_reservation = convert_to_protobuf(rack_reservation, pb.RackReservation) + rack_role = convert_to_protobuf(rack_role, pb.RackRole) + rack = convert_to_protobuf(rack, pb.Rack) + rack_type = convert_to_protobuf(rack_type, pb.RackType) + role = convert_to_protobuf(role, pb.Role) + route_target = convert_to_protobuf(route_target, pb.RouteTarget) + service = convert_to_protobuf(service, pb.Service) + site = convert_to_protobuf(site, pb.Site) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) + tunnel = convert_to_protobuf(tunnel, pb.Tunnel) + tunnel_termination = convert_to_protobuf(tunnel_termination, pb.TunnelTermination) + vlan_group = convert_to_protobuf(vlan_group, pb.VLANGroup) + vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) + vlan_translation_rule = convert_to_protobuf(vlan_translation_rule, pb.VLANTranslationRule) + vrf = convert_to_protobuf(vrf, pb.VRF) + virtual_chassis = convert_to_protobuf(virtual_chassis, pb.VirtualChassis) + virtual_circuit = convert_to_protobuf(virtual_circuit, pb.VirtualCircuit) + virtual_circuit_termination = convert_to_protobuf(virtual_circuit_termination, pb.VirtualCircuitTermination) + virtual_circuit_type = convert_to_protobuf(virtual_circuit_type, pb.VirtualCircuitType) + virtual_device_context = convert_to_protobuf(virtual_device_context, pb.VirtualDeviceContext) + virtual_disk = convert_to_protobuf(virtual_disk, pb.VirtualDisk) + wireless_lan = convert_to_protobuf(wireless_lan, pb.WirelessLAN) + if timestamp is None: + ts = _timestamp_pb2.Timestamp() + ts.GetCurrentTime() + timestamp = ts + return pb.Entity( + timestamp=timestamp, + asn_range=asn_range, + asn=asn, + aggregate=aggregate, + cable_path=cable_path, + cable=cable, + cable_termination=cable_termination, + circuit_termination=circuit_termination, + circuit_group_assignment=circuit_group_assignment, + circuit_group=circuit_group, + circuit=circuit, + circuit_type=circuit_type, + cluster_group=cluster_group, + cluster=cluster, + cluster_type=cluster_type, + console_port=console_port, + console_server_port=console_server_port, + contact_assignment=contact_assignment, + contact_group=contact_group, + contact_role=contact_role, + contact=contact, + vlan=vlan, + device_bay=device_bay, + device_role=device_role, + device=device, + device_type=device_type, + fhrp_group_assignment=fhrp_group_assignment, + fhrp_group=fhrp_group, + rear_port=rear_port, + front_port=front_port, + generic_object=generic_object, + ike_policy=ike_policy, + ike_proposal=ike_proposal, + ip_address=ip_address, + ip_range=ip_range, + ip_sec_policy=ip_sec_policy, + ip_sec_profile=ip_sec_profile, + ip_sec_proposal=ip_sec_proposal, + interface=interface, + inventory_item_role=inventory_item_role, + inventory_item=inventory_item, + l2vpn=l2vpn, + l2vpn_termination=l2vpn_termination, + location=location, + mac_address=mac_address, + manufacturer=manufacturer, + module_bay=module_bay, + module=module, + module_type=module_type, + region=region, + site_group=site_group, + tag=tag, + tenant_group=tenant_group, + vm_interface=vm_interface, + virtual_machine=virtual_machine, + wireless_lan_group=wireless_lan_group, + wireless_link=wireless_link, + platform=platform, + power_feed=power_feed, + power_outlet=power_outlet, + power_panel=power_panel, + power_port=power_port, + prefix=prefix, + provider_account=provider_account, + provider_network=provider_network, + provider=provider, + rir=rir, + rack_reservation=rack_reservation, + rack_role=rack_role, + rack=rack, + rack_type=rack_type, + role=role, + route_target=route_target, + service=service, + site=site, + tenant=tenant, + tunnel_group=tunnel_group, + tunnel=tunnel, + tunnel_termination=tunnel_termination, + vlan_group=vlan_group, + vlan_translation_policy=vlan_translation_policy, + vlan_translation_rule=vlan_translation_rule, + vrf=vrf, + virtual_chassis=virtual_chassis, + virtual_circuit=virtual_circuit, + virtual_circuit_termination=virtual_circuit_termination, + virtual_circuit_type=virtual_circuit_type, + virtual_device_context=virtual_device_context, + virtual_disk=virtual_disk, + wireless_lan=wireless_lan, + ) + + +class ASN: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ASN.""" + + def __new__( + cls, + asn: int | None = None, + rir: str | RIR | pb.RIR | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ASN: + """Create a new ASN.""" + rir = convert_to_protobuf(rir, pb.RIR) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ASN( + asn=asn, + rir=rir, + tenant=tenant, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ASNRange: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ASNRange.""" def __new__( cls, name: str | None = None, slug: str | None = None, + rir: str | RIR | pb.RIR | None = None, + start: int | None = None, + end: int | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ASNRange: + """Create a new ASNRange.""" + rir = convert_to_protobuf(rir, pb.RIR) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ASNRange( + name=name, + slug=slug, + rir=rir, + start=start, + end=end, + tenant=tenant, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Aggregate: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Aggregate.""" + + def __new__( + cls, + prefix: str | None = None, + rir: str | RIR | pb.RIR | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + date_added: datetime.datetime | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Aggregate: + """Create a new Aggregate.""" + rir = convert_to_protobuf(rir, pb.RIR) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Aggregate( + prefix=prefix, + rir=rir, + tenant=tenant, + date_added=date_added, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Cable: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Cable.""" + + def __new__( + cls, + type: str | None = None, + a_terminations: list[str | GenericObject | pb.GenericObject] | None = None, + b_terminations: list[str | GenericObject | pb.GenericObject] | None = None, + status: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + label: str | None = None, color: str | None = None, - ) -> TagPb: - """Create a new Tag protobuf message.""" - return TagPb(name=name, slug=slug, color=color) + length: float | None = None, + length_unit: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Cable: + """Create a new Cable.""" + a_terminations = convert_to_protobuf_list(a_terminations, pb.GenericObject) + b_terminations = convert_to_protobuf_list(b_terminations, pb.GenericObject) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Cable( + type=type, + a_terminations=a_terminations, + b_terminations=b_terminations, + status=status, + tenant=tenant, + label=label, + color=color, + length=length, + length_unit=length_unit, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) -class Manufacturer: - """Manufacturer message wrapper.""" +class CablePath: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CablePath.""" + + def __new__( + cls, + is_active: bool | None = None, + is_complete: bool | None = None, + is_split: bool | None = None, + ) -> pb.CablePath: + """Create a new CablePath.""" + return pb.CablePath( + is_active=is_active, + is_complete=is_complete, + is_split=is_split, + ) + + +class CableTermination: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CableTermination.""" + + def __new__( + cls, + cable: str | Cable | pb.Cable | None = None, + cable_end: str | None = None, + termination_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + termination_console_port: str | ConsolePort | pb.ConsolePort | None = None, + termination_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + termination_front_port: str | FrontPort | pb.FrontPort | None = None, + termination_interface: str | Interface | pb.Interface | None = None, + termination_power_feed: str | PowerFeed | pb.PowerFeed | None = None, + termination_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + termination_power_port: str | PowerPort | pb.PowerPort | None = None, + termination_rear_port: str | RearPort | pb.RearPort | None = None, + ) -> pb.CableTermination: + """Create a new CableTermination.""" + cable = convert_to_protobuf(cable, pb.Cable) + termination_circuit_termination = convert_to_protobuf(termination_circuit_termination, pb.CircuitTermination) + termination_console_port = convert_to_protobuf(termination_console_port, pb.ConsolePort) + termination_console_server_port = convert_to_protobuf(termination_console_server_port, pb.ConsoleServerPort) + termination_front_port = convert_to_protobuf(termination_front_port, pb.FrontPort) + termination_interface = convert_to_protobuf(termination_interface, pb.Interface) + termination_power_feed = convert_to_protobuf(termination_power_feed, pb.PowerFeed) + termination_power_outlet = convert_to_protobuf(termination_power_outlet, pb.PowerOutlet) + termination_power_port = convert_to_protobuf(termination_power_port, pb.PowerPort) + termination_rear_port = convert_to_protobuf(termination_rear_port, pb.RearPort) + return pb.CableTermination( + cable=cable, + cable_end=cable_end, + termination_circuit_termination=termination_circuit_termination, + termination_console_port=termination_console_port, + termination_console_server_port=termination_console_server_port, + termination_front_port=termination_front_port, + termination_interface=termination_interface, + termination_power_feed=termination_power_feed, + termination_power_outlet=termination_power_outlet, + termination_power_port=termination_power_port, + termination_rear_port=termination_rear_port, + ) + + +class Circuit: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Circuit.""" + + def __new__( + cls, + cid: str | None = None, + provider: str | Provider | pb.Provider | None = None, + provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + type: str | CircuitType | pb.CircuitType | None = None, + status: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + install_date: datetime.datetime | None = None, + termination_date: datetime.datetime | None = None, + commit_rate: int | None = None, + description: str | None = None, + distance: float | None = None, + distance_unit: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + assignments: list[str | CircuitGroupAssignment | pb.CircuitGroupAssignment] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Circuit: + """Create a new Circuit.""" + provider = convert_to_protobuf(provider, pb.Provider) + provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) + type = convert_to_protobuf(type, pb.CircuitType) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + assignments = convert_to_protobuf_list(assignments, pb.CircuitGroupAssignment) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Circuit( + cid=cid, + provider=provider, + provider_account=provider_account, + type=type, + status=status, + tenant=tenant, + install_date=install_date, + termination_date=termination_date, + commit_rate=commit_rate, + description=description, + distance=distance, + distance_unit=distance_unit, + comments=comments, + tags=tags, + assignments=assignments, + custom_fields=custom_fields, + ) + + +class CircuitGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CircuitGroup.""" def __new__( cls, name: str | None = None, slug: str | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> ManufacturerPb: - """Create a new Manufacturer protobuf message.""" - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] + tenant: str | Tenant | pb.Tenant | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.CircuitGroup: + """Create a new CircuitGroup.""" + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.CircuitGroup( + name=name, + slug=slug, + description=description, + tenant=tenant, + tags=tags, + custom_fields=custom_fields, + ) + + +class CircuitGroupAssignment: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CircuitGroupAssignment.""" + + def __new__( + cls, + group: str | CircuitGroup | pb.CircuitGroup | None = None, + member_circuit: str | Circuit | pb.Circuit | None = None, + member_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + priority: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + ) -> pb.CircuitGroupAssignment: + """Create a new CircuitGroupAssignment.""" + group = convert_to_protobuf(group, pb.CircuitGroup) + member_circuit = convert_to_protobuf(member_circuit, pb.Circuit) + member_virtual_circuit = convert_to_protobuf(member_virtual_circuit, pb.VirtualCircuit) + tags = convert_to_protobuf_list(tags, pb.Tag) + return pb.CircuitGroupAssignment( + group=group, + member_circuit=member_circuit, + member_virtual_circuit=member_virtual_circuit, + priority=priority, + tags=tags, + ) + + +class CircuitTermination: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CircuitTermination.""" + + def __new__( + cls, + circuit: str | Circuit | pb.Circuit | None = None, + term_side: str | None = None, + termination_location: str | Location | pb.Location | None = None, + termination_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + termination_region: str | Region | pb.Region | None = None, + termination_site: str | Site | pb.Site | None = None, + termination_site_group: str | SiteGroup | pb.SiteGroup | None = None, + port_speed: int | None = None, + upstream_speed: int | None = None, + xconnect_id: str | None = None, + pp_info: str | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.CircuitTermination: + """Create a new CircuitTermination.""" + circuit = convert_to_protobuf(circuit, pb.Circuit) + termination_location = convert_to_protobuf(termination_location, pb.Location) + termination_provider_network = convert_to_protobuf(termination_provider_network, pb.ProviderNetwork) + termination_region = convert_to_protobuf(termination_region, pb.Region) + termination_site = convert_to_protobuf(termination_site, pb.Site) + termination_site_group = convert_to_protobuf(termination_site_group, pb.SiteGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.CircuitTermination( + circuit=circuit, + term_side=term_side, + termination_location=termination_location, + termination_provider_network=termination_provider_network, + termination_region=termination_region, + termination_site=termination_site, + termination_site_group=termination_site_group, + port_speed=port_speed, + upstream_speed=upstream_speed, + xconnect_id=xconnect_id, + pp_info=pp_info, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + - return ManufacturerPb( +class CircuitType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CircuitType.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + color: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.CircuitType: + """Create a new CircuitType.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.CircuitType( name=name, slug=slug, + color=color, description=description, tags=tags, + custom_fields=custom_fields, ) -class Platform: - """Platform message wrapper.""" +class Cluster: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Cluster.""" + + def __new__( + cls, + name: str | None = None, + type: str | ClusterType | pb.ClusterType | None = None, + group: str | ClusterGroup | pb.ClusterGroup | None = None, + status: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + scope_location: str | Location | pb.Location | None = None, + scope_region: str | Region | pb.Region | None = None, + scope_site: str | Site | pb.Site | None = None, + scope_site_group: str | SiteGroup | pb.SiteGroup | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Cluster: + """Create a new Cluster.""" + type = convert_to_protobuf(type, pb.ClusterType) + group = convert_to_protobuf(group, pb.ClusterGroup) + tenant = convert_to_protobuf(tenant, pb.Tenant) + scope_location = convert_to_protobuf(scope_location, pb.Location) + scope_region = convert_to_protobuf(scope_region, pb.Region) + scope_site = convert_to_protobuf(scope_site, pb.Site) + scope_site_group = convert_to_protobuf(scope_site_group, pb.SiteGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Cluster( + name=name, + type=type, + group=group, + status=status, + tenant=tenant, + scope_location=scope_location, + scope_region=scope_region, + scope_site=scope_site, + scope_site_group=scope_site_group, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ClusterGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ClusterGroup.""" def __new__( cls, name: str | None = None, slug: str | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> PlatformPb: - """Create a new Platform protobuf message.""" - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ClusterGroup: + """Create a new ClusterGroup.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ClusterGroup( + name=name, + slug=slug, + description=description, + tags=tags, + custom_fields=custom_fields, ) - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - return PlatformPb( +class ClusterType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ClusterType.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ClusterType: + """Create a new ClusterType.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ClusterType( name=name, slug=slug, - manufacturer=manufacturer, description=description, tags=tags, + custom_fields=custom_fields, + ) + + +class ConsolePort: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ConsolePort.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + speed: int | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ConsolePort: + """Create a new ConsolePort.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ConsolePort( + device=device, + module=module, + name=name, + label=label, + type=type, + speed=speed, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class ConsoleServerPort: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ConsoleServerPort.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + speed: int | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ConsoleServerPort: + """Create a new ConsoleServerPort.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ConsoleServerPort( + device=device, + module=module, + name=name, + label=label, + type=type, + speed=speed, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class Contact: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Contact.""" + + def __new__( + cls, + group: str | ContactGroup | pb.ContactGroup | None = None, + name: str | None = None, + title: str | None = None, + phone: str | None = None, + email: str | None = None, + address: str | None = None, + link: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Contact: + """Create a new Contact.""" + group = convert_to_protobuf(group, pb.ContactGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Contact( + group=group, + name=name, + title=title, + phone=phone, + email=email, + address=address, + link=link, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ContactAssignment: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ContactAssignment.""" + + def __new__( + cls, + object_asn: str | ASN | pb.ASN | None = None, + object_asn_range: str | ASNRange | pb.ASNRange | None = None, + object_aggregate: str | Aggregate | pb.Aggregate | None = None, + object_cable: str | Cable | pb.Cable | None = None, + object_cable_path: str | CablePath | pb.CablePath | None = None, + object_cable_termination: str | CableTermination | pb.CableTermination | None = None, + object_circuit: str | Circuit | pb.Circuit | None = None, + object_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + object_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + object_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + object_circuit_type: str | CircuitType | pb.CircuitType | None = None, + object_cluster: str | Cluster | pb.Cluster | None = None, + object_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + object_cluster_type: str | ClusterType | pb.ClusterType | None = None, + object_console_port: str | ConsolePort | pb.ConsolePort | None = None, + object_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + object_contact: str | Contact | pb.Contact | None = None, + object_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + object_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + object_contact_role: str | ContactRole | pb.ContactRole | None = None, + object_device: str | Device | pb.Device | None = None, + object_device_bay: str | DeviceBay | pb.DeviceBay | None = None, + object_device_role: str | DeviceRole | pb.DeviceRole | None = None, + object_device_type: str | DeviceType | pb.DeviceType | None = None, + object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + object_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + object_front_port: str | FrontPort | pb.FrontPort | None = None, + object_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + object_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + object_ip_address: str | IPAddress | pb.IPAddress | None = None, + object_ip_range: str | IPRange | pb.IPRange | None = None, + object_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + object_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + object_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + object_interface: str | Interface | pb.Interface | None = None, + object_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + object_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + object_l2vpn: str | L2VPN | pb.L2VPN | None = None, + object_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + object_location: str | Location | pb.Location | None = None, + object_mac_address: str | MACAddress | pb.MACAddress | None = None, + object_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + object_module: str | Module | pb.Module | None = None, + object_module_bay: str | ModuleBay | pb.ModuleBay | None = None, + object_module_type: str | ModuleType | pb.ModuleType | None = None, + object_platform: str | Platform | pb.Platform | None = None, + object_power_feed: str | PowerFeed | pb.PowerFeed | None = None, + object_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + object_power_panel: str | PowerPanel | pb.PowerPanel | None = None, + object_power_port: str | PowerPort | pb.PowerPort | None = None, + object_prefix: str | Prefix | pb.Prefix | None = None, + object_provider: str | Provider | pb.Provider | None = None, + object_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + object_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + object_rir: str | RIR | pb.RIR | None = None, + object_rack: str | Rack | pb.Rack | None = None, + object_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + object_rack_role: str | RackRole | pb.RackRole | None = None, + object_rack_type: str | RackType | pb.RackType | None = None, + object_rear_port: str | RearPort | pb.RearPort | None = None, + object_region: str | Region | pb.Region | None = None, + object_role: str | Role | pb.Role | None = None, + object_route_target: str | RouteTarget | pb.RouteTarget | None = None, + object_service: str | Service | pb.Service | None = None, + object_site: str | Site | pb.Site | None = None, + object_site_group: str | SiteGroup | pb.SiteGroup | None = None, + object_tag: str | Tag | pb.Tag | None = None, + object_tenant: str | Tenant | pb.Tenant | None = None, + object_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + object_tunnel: str | Tunnel | pb.Tunnel | None = None, + object_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + object_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + object_vlan: str | VLAN | pb.VLAN | None = None, + object_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + object_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + object_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + object_vm_interface: str | VMInterface | pb.VMInterface | None = None, + object_vrf: str | VRF | pb.VRF | None = None, + object_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + object_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + object_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + object_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + object_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + object_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + object_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + object_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + contact: str | Contact | pb.Contact | None = None, + role: str | ContactRole | pb.ContactRole | None = None, + priority: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ContactAssignment: + """Create a new ContactAssignment.""" + object_asn = convert_to_protobuf(object_asn, pb.ASN) + object_asn_range = convert_to_protobuf(object_asn_range, pb.ASNRange) + object_aggregate = convert_to_protobuf(object_aggregate, pb.Aggregate) + object_cable = convert_to_protobuf(object_cable, pb.Cable) + object_cable_path = convert_to_protobuf(object_cable_path, pb.CablePath) + object_cable_termination = convert_to_protobuf(object_cable_termination, pb.CableTermination) + object_circuit = convert_to_protobuf(object_circuit, pb.Circuit) + object_circuit_group = convert_to_protobuf(object_circuit_group, pb.CircuitGroup) + object_circuit_group_assignment = convert_to_protobuf(object_circuit_group_assignment, pb.CircuitGroupAssignment) + object_circuit_termination = convert_to_protobuf(object_circuit_termination, pb.CircuitTermination) + object_circuit_type = convert_to_protobuf(object_circuit_type, pb.CircuitType) + object_cluster = convert_to_protobuf(object_cluster, pb.Cluster) + object_cluster_group = convert_to_protobuf(object_cluster_group, pb.ClusterGroup) + object_cluster_type = convert_to_protobuf(object_cluster_type, pb.ClusterType) + object_console_port = convert_to_protobuf(object_console_port, pb.ConsolePort) + object_console_server_port = convert_to_protobuf(object_console_server_port, pb.ConsoleServerPort) + object_contact = convert_to_protobuf(object_contact, pb.Contact) + object_contact_assignment = convert_to_protobuf(object_contact_assignment, pb.ContactAssignment) + object_contact_group = convert_to_protobuf(object_contact_group, pb.ContactGroup) + object_contact_role = convert_to_protobuf(object_contact_role, pb.ContactRole) + object_device = convert_to_protobuf(object_device, pb.Device) + object_device_bay = convert_to_protobuf(object_device_bay, pb.DeviceBay) + object_device_role = convert_to_protobuf(object_device_role, pb.DeviceRole) + object_device_type = convert_to_protobuf(object_device_type, pb.DeviceType) + object_fhrp_group = convert_to_protobuf(object_fhrp_group, pb.FHRPGroup) + object_fhrp_group_assignment = convert_to_protobuf(object_fhrp_group_assignment, pb.FHRPGroupAssignment) + object_front_port = convert_to_protobuf(object_front_port, pb.FrontPort) + object_ike_policy = convert_to_protobuf(object_ike_policy, pb.IKEPolicy) + object_ike_proposal = convert_to_protobuf(object_ike_proposal, pb.IKEProposal) + object_ip_address = convert_to_protobuf(object_ip_address, pb.IPAddress) + object_ip_range = convert_to_protobuf(object_ip_range, pb.IPRange) + object_ip_sec_policy = convert_to_protobuf(object_ip_sec_policy, pb.IPSecPolicy) + object_ip_sec_profile = convert_to_protobuf(object_ip_sec_profile, pb.IPSecProfile) + object_ip_sec_proposal = convert_to_protobuf(object_ip_sec_proposal, pb.IPSecProposal) + object_interface = convert_to_protobuf(object_interface, pb.Interface) + object_inventory_item = convert_to_protobuf(object_inventory_item, pb.InventoryItem) + object_inventory_item_role = convert_to_protobuf(object_inventory_item_role, pb.InventoryItemRole) + object_l2vpn = convert_to_protobuf(object_l2vpn, pb.L2VPN) + object_l2vpn_termination = convert_to_protobuf(object_l2vpn_termination, pb.L2VPNTermination) + object_location = convert_to_protobuf(object_location, pb.Location) + object_mac_address = convert_to_protobuf(object_mac_address, pb.MACAddress) + object_manufacturer = convert_to_protobuf(object_manufacturer, pb.Manufacturer) + object_module = convert_to_protobuf(object_module, pb.Module) + object_module_bay = convert_to_protobuf(object_module_bay, pb.ModuleBay) + object_module_type = convert_to_protobuf(object_module_type, pb.ModuleType) + object_platform = convert_to_protobuf(object_platform, pb.Platform) + object_power_feed = convert_to_protobuf(object_power_feed, pb.PowerFeed) + object_power_outlet = convert_to_protobuf(object_power_outlet, pb.PowerOutlet) + object_power_panel = convert_to_protobuf(object_power_panel, pb.PowerPanel) + object_power_port = convert_to_protobuf(object_power_port, pb.PowerPort) + object_prefix = convert_to_protobuf(object_prefix, pb.Prefix) + object_provider = convert_to_protobuf(object_provider, pb.Provider) + object_provider_account = convert_to_protobuf(object_provider_account, pb.ProviderAccount) + object_provider_network = convert_to_protobuf(object_provider_network, pb.ProviderNetwork) + object_rir = convert_to_protobuf(object_rir, pb.RIR) + object_rack = convert_to_protobuf(object_rack, pb.Rack) + object_rack_reservation = convert_to_protobuf(object_rack_reservation, pb.RackReservation) + object_rack_role = convert_to_protobuf(object_rack_role, pb.RackRole) + object_rack_type = convert_to_protobuf(object_rack_type, pb.RackType) + object_rear_port = convert_to_protobuf(object_rear_port, pb.RearPort) + object_region = convert_to_protobuf(object_region, pb.Region) + object_role = convert_to_protobuf(object_role, pb.Role) + object_route_target = convert_to_protobuf(object_route_target, pb.RouteTarget) + object_service = convert_to_protobuf(object_service, pb.Service) + object_site = convert_to_protobuf(object_site, pb.Site) + object_site_group = convert_to_protobuf(object_site_group, pb.SiteGroup) + object_tag = convert_to_protobuf(object_tag, pb.Tag) + object_tenant = convert_to_protobuf(object_tenant, pb.Tenant) + object_tenant_group = convert_to_protobuf(object_tenant_group, pb.TenantGroup) + object_tunnel = convert_to_protobuf(object_tunnel, pb.Tunnel) + object_tunnel_group = convert_to_protobuf(object_tunnel_group, pb.TunnelGroup) + object_tunnel_termination = convert_to_protobuf(object_tunnel_termination, pb.TunnelTermination) + object_vlan = convert_to_protobuf(object_vlan, pb.VLAN) + object_vlan_group = convert_to_protobuf(object_vlan_group, pb.VLANGroup) + object_vlan_translation_policy = convert_to_protobuf(object_vlan_translation_policy, pb.VLANTranslationPolicy) + object_vlan_translation_rule = convert_to_protobuf(object_vlan_translation_rule, pb.VLANTranslationRule) + object_vm_interface = convert_to_protobuf(object_vm_interface, pb.VMInterface) + object_vrf = convert_to_protobuf(object_vrf, pb.VRF) + object_virtual_chassis = convert_to_protobuf(object_virtual_chassis, pb.VirtualChassis) + object_virtual_circuit = convert_to_protobuf(object_virtual_circuit, pb.VirtualCircuit) + object_virtual_circuit_termination = convert_to_protobuf(object_virtual_circuit_termination, pb.VirtualCircuitTermination) + object_virtual_circuit_type = convert_to_protobuf(object_virtual_circuit_type, pb.VirtualCircuitType) + object_virtual_device_context = convert_to_protobuf(object_virtual_device_context, pb.VirtualDeviceContext) + object_virtual_disk = convert_to_protobuf(object_virtual_disk, pb.VirtualDisk) + object_virtual_machine = convert_to_protobuf(object_virtual_machine, pb.VirtualMachine) + object_wireless_lan = convert_to_protobuf(object_wireless_lan, pb.WirelessLAN) + object_wireless_lan_group = convert_to_protobuf(object_wireless_lan_group, pb.WirelessLANGroup) + object_wireless_link = convert_to_protobuf(object_wireless_link, pb.WirelessLink) + contact = convert_to_protobuf(contact, pb.Contact) + role = convert_to_protobuf(role, pb.ContactRole) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ContactAssignment( + object_asn=object_asn, + object_asn_range=object_asn_range, + object_aggregate=object_aggregate, + object_cable=object_cable, + object_cable_path=object_cable_path, + object_cable_termination=object_cable_termination, + object_circuit=object_circuit, + object_circuit_group=object_circuit_group, + object_circuit_group_assignment=object_circuit_group_assignment, + object_circuit_termination=object_circuit_termination, + object_circuit_type=object_circuit_type, + object_cluster=object_cluster, + object_cluster_group=object_cluster_group, + object_cluster_type=object_cluster_type, + object_console_port=object_console_port, + object_console_server_port=object_console_server_port, + object_contact=object_contact, + object_contact_assignment=object_contact_assignment, + object_contact_group=object_contact_group, + object_contact_role=object_contact_role, + object_device=object_device, + object_device_bay=object_device_bay, + object_device_role=object_device_role, + object_device_type=object_device_type, + object_fhrp_group=object_fhrp_group, + object_fhrp_group_assignment=object_fhrp_group_assignment, + object_front_port=object_front_port, + object_ike_policy=object_ike_policy, + object_ike_proposal=object_ike_proposal, + object_ip_address=object_ip_address, + object_ip_range=object_ip_range, + object_ip_sec_policy=object_ip_sec_policy, + object_ip_sec_profile=object_ip_sec_profile, + object_ip_sec_proposal=object_ip_sec_proposal, + object_interface=object_interface, + object_inventory_item=object_inventory_item, + object_inventory_item_role=object_inventory_item_role, + object_l2vpn=object_l2vpn, + object_l2vpn_termination=object_l2vpn_termination, + object_location=object_location, + object_mac_address=object_mac_address, + object_manufacturer=object_manufacturer, + object_module=object_module, + object_module_bay=object_module_bay, + object_module_type=object_module_type, + object_platform=object_platform, + object_power_feed=object_power_feed, + object_power_outlet=object_power_outlet, + object_power_panel=object_power_panel, + object_power_port=object_power_port, + object_prefix=object_prefix, + object_provider=object_provider, + object_provider_account=object_provider_account, + object_provider_network=object_provider_network, + object_rir=object_rir, + object_rack=object_rack, + object_rack_reservation=object_rack_reservation, + object_rack_role=object_rack_role, + object_rack_type=object_rack_type, + object_rear_port=object_rear_port, + object_region=object_region, + object_role=object_role, + object_route_target=object_route_target, + object_service=object_service, + object_site=object_site, + object_site_group=object_site_group, + object_tag=object_tag, + object_tenant=object_tenant, + object_tenant_group=object_tenant_group, + object_tunnel=object_tunnel, + object_tunnel_group=object_tunnel_group, + object_tunnel_termination=object_tunnel_termination, + object_vlan=object_vlan, + object_vlan_group=object_vlan_group, + object_vlan_translation_policy=object_vlan_translation_policy, + object_vlan_translation_rule=object_vlan_translation_rule, + object_vm_interface=object_vm_interface, + object_vrf=object_vrf, + object_virtual_chassis=object_virtual_chassis, + object_virtual_circuit=object_virtual_circuit, + object_virtual_circuit_termination=object_virtual_circuit_termination, + object_virtual_circuit_type=object_virtual_circuit_type, + object_virtual_device_context=object_virtual_device_context, + object_virtual_disk=object_virtual_disk, + object_virtual_machine=object_virtual_machine, + object_wireless_lan=object_wireless_lan, + object_wireless_lan_group=object_wireless_lan_group, + object_wireless_link=object_wireless_link, + contact=contact, + role=role, + priority=priority, + tags=tags, + custom_fields=custom_fields, + ) + + +class ContactGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ContactGroup.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + parent: str | ContactGroup | pb.ContactGroup | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ContactGroup: + """Create a new ContactGroup.""" + parent = convert_to_protobuf(parent, pb.ContactGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ContactGroup( + name=name, + slug=slug, + parent=parent, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class ContactRole: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ContactRole.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ContactRole: + """Create a new ContactRole.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ContactRole( + name=name, + slug=slug, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class CustomFieldObjectReference: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CustomFieldObjectReference.""" + + def __new__( + cls, + asn_range: str | ASNRange | pb.ASNRange | None = None, + asn: str | ASN | pb.ASN | None = None, + aggregate: str | Aggregate | pb.Aggregate | None = None, + cable_path: str | CablePath | pb.CablePath | None = None, + cable: str | Cable | pb.Cable | None = None, + cable_termination: str | CableTermination | pb.CableTermination | None = None, + circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + circuit: str | Circuit | pb.Circuit | None = None, + circuit_type: str | CircuitType | pb.CircuitType | None = None, + cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + cluster: str | Cluster | pb.Cluster | None = None, + cluster_type: str | ClusterType | pb.ClusterType | None = None, + console_port: str | ConsolePort | pb.ConsolePort | None = None, + console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + contact_group: str | ContactGroup | pb.ContactGroup | None = None, + contact_role: str | ContactRole | pb.ContactRole | None = None, + contact: str | Contact | pb.Contact | None = None, + vlan: str | VLAN | pb.VLAN | None = None, + device_bay: str | DeviceBay | pb.DeviceBay | None = None, + device_role: str | DeviceRole | pb.DeviceRole | None = None, + device: str | Device | pb.Device | None = None, + device_type: str | DeviceType | pb.DeviceType | None = None, + fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + rear_port: str | RearPort | pb.RearPort | None = None, + front_port: str | FrontPort | pb.FrontPort | None = None, + generic_object: str | GenericObject | pb.GenericObject | None = None, + ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + ip_address: str | IPAddress | pb.IPAddress | None = None, + ip_range: str | IPRange | pb.IPRange | None = None, + ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + interface: str | Interface | pb.Interface | None = None, + inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + l2vpn: str | L2VPN | pb.L2VPN | None = None, + l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + location: str | Location | pb.Location | None = None, + mac_address: str | MACAddress | pb.MACAddress | None = None, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + module_bay: str | ModuleBay | pb.ModuleBay | None = None, + module: str | Module | pb.Module | None = None, + module_type: str | ModuleType | pb.ModuleType | None = None, + region: str | Region | pb.Region | None = None, + site_group: str | SiteGroup | pb.SiteGroup | None = None, + tag: str | Tag | pb.Tag | None = None, + tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + vm_interface: str | VMInterface | pb.VMInterface | None = None, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + platform: str | Platform | pb.Platform | None = None, + power_feed: str | PowerFeed | pb.PowerFeed | None = None, + power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + power_panel: str | PowerPanel | pb.PowerPanel | None = None, + power_port: str | PowerPort | pb.PowerPort | None = None, + prefix: str | Prefix | pb.Prefix | None = None, + provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + provider: str | Provider | pb.Provider | None = None, + rir: str | RIR | pb.RIR | None = None, + rack_reservation: str | RackReservation | pb.RackReservation | None = None, + rack_role: str | RackRole | pb.RackRole | None = None, + rack: str | Rack | pb.Rack | None = None, + rack_type: str | RackType | pb.RackType | None = None, + role: str | Role | pb.Role | None = None, + route_target: str | RouteTarget | pb.RouteTarget | None = None, + service: str | Service | pb.Service | None = None, + site: str | Site | pb.Site | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + tunnel: str | Tunnel | pb.Tunnel | None = None, + tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + vrf: str | VRF | pb.VRF | None = None, + virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + ) -> pb.CustomFieldObjectReference: + """Create a new CustomFieldObjectReference.""" + asn_range = convert_to_protobuf(asn_range, pb.ASNRange) + asn = convert_to_protobuf(asn, pb.ASN) + aggregate = convert_to_protobuf(aggregate, pb.Aggregate) + cable_path = convert_to_protobuf(cable_path, pb.CablePath) + cable = convert_to_protobuf(cable, pb.Cable) + cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) + circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) + circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) + circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) + circuit = convert_to_protobuf(circuit, pb.Circuit) + circuit_type = convert_to_protobuf(circuit_type, pb.CircuitType) + cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) + cluster = convert_to_protobuf(cluster, pb.Cluster) + cluster_type = convert_to_protobuf(cluster_type, pb.ClusterType) + console_port = convert_to_protobuf(console_port, pb.ConsolePort) + console_server_port = convert_to_protobuf(console_server_port, pb.ConsoleServerPort) + contact_assignment = convert_to_protobuf(contact_assignment, pb.ContactAssignment) + contact_group = convert_to_protobuf(contact_group, pb.ContactGroup) + contact_role = convert_to_protobuf(contact_role, pb.ContactRole) + contact = convert_to_protobuf(contact, pb.Contact) + vlan = convert_to_protobuf(vlan, pb.VLAN) + device_bay = convert_to_protobuf(device_bay, pb.DeviceBay) + device_role = convert_to_protobuf(device_role, pb.DeviceRole) + device = convert_to_protobuf(device, pb.Device) + device_type = convert_to_protobuf(device_type, pb.DeviceType) + fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) + fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) + rear_port = convert_to_protobuf(rear_port, pb.RearPort) + front_port = convert_to_protobuf(front_port, pb.FrontPort) + generic_object = convert_to_protobuf(generic_object, pb.GenericObject) + ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) + ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) + ip_address = convert_to_protobuf(ip_address, pb.IPAddress) + ip_range = convert_to_protobuf(ip_range, pb.IPRange) + ip_sec_policy = convert_to_protobuf(ip_sec_policy, pb.IPSecPolicy) + ip_sec_profile = convert_to_protobuf(ip_sec_profile, pb.IPSecProfile) + ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) + interface = convert_to_protobuf(interface, pb.Interface) + inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) + inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) + l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) + l2vpn_termination = convert_to_protobuf(l2vpn_termination, pb.L2VPNTermination) + location = convert_to_protobuf(location, pb.Location) + mac_address = convert_to_protobuf(mac_address, pb.MACAddress) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) + module = convert_to_protobuf(module, pb.Module) + module_type = convert_to_protobuf(module_type, pb.ModuleType) + region = convert_to_protobuf(region, pb.Region) + site_group = convert_to_protobuf(site_group, pb.SiteGroup) + tag = convert_to_protobuf(tag, pb.Tag) + tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) + vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) + wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) + wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) + platform = convert_to_protobuf(platform, pb.Platform) + power_feed = convert_to_protobuf(power_feed, pb.PowerFeed) + power_outlet = convert_to_protobuf(power_outlet, pb.PowerOutlet) + power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) + power_port = convert_to_protobuf(power_port, pb.PowerPort) + prefix = convert_to_protobuf(prefix, pb.Prefix) + provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) + provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) + provider = convert_to_protobuf(provider, pb.Provider) + rir = convert_to_protobuf(rir, pb.RIR) + rack_reservation = convert_to_protobuf(rack_reservation, pb.RackReservation) + rack_role = convert_to_protobuf(rack_role, pb.RackRole) + rack = convert_to_protobuf(rack, pb.Rack) + rack_type = convert_to_protobuf(rack_type, pb.RackType) + role = convert_to_protobuf(role, pb.Role) + route_target = convert_to_protobuf(route_target, pb.RouteTarget) + service = convert_to_protobuf(service, pb.Service) + site = convert_to_protobuf(site, pb.Site) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) + tunnel = convert_to_protobuf(tunnel, pb.Tunnel) + tunnel_termination = convert_to_protobuf(tunnel_termination, pb.TunnelTermination) + vlan_group = convert_to_protobuf(vlan_group, pb.VLANGroup) + vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) + vlan_translation_rule = convert_to_protobuf(vlan_translation_rule, pb.VLANTranslationRule) + vrf = convert_to_protobuf(vrf, pb.VRF) + virtual_chassis = convert_to_protobuf(virtual_chassis, pb.VirtualChassis) + virtual_circuit = convert_to_protobuf(virtual_circuit, pb.VirtualCircuit) + virtual_circuit_termination = convert_to_protobuf(virtual_circuit_termination, pb.VirtualCircuitTermination) + virtual_circuit_type = convert_to_protobuf(virtual_circuit_type, pb.VirtualCircuitType) + virtual_device_context = convert_to_protobuf(virtual_device_context, pb.VirtualDeviceContext) + virtual_disk = convert_to_protobuf(virtual_disk, pb.VirtualDisk) + wireless_lan = convert_to_protobuf(wireless_lan, pb.WirelessLAN) + return pb.CustomFieldObjectReference( + asn_range=asn_range, + asn=asn, + aggregate=aggregate, + cable_path=cable_path, + cable=cable, + cable_termination=cable_termination, + circuit_termination=circuit_termination, + circuit_group_assignment=circuit_group_assignment, + circuit_group=circuit_group, + circuit=circuit, + circuit_type=circuit_type, + cluster_group=cluster_group, + cluster=cluster, + cluster_type=cluster_type, + console_port=console_port, + console_server_port=console_server_port, + contact_assignment=contact_assignment, + contact_group=contact_group, + contact_role=contact_role, + contact=contact, + vlan=vlan, + device_bay=device_bay, + device_role=device_role, + device=device, + device_type=device_type, + fhrp_group_assignment=fhrp_group_assignment, + fhrp_group=fhrp_group, + rear_port=rear_port, + front_port=front_port, + generic_object=generic_object, + ike_policy=ike_policy, + ike_proposal=ike_proposal, + ip_address=ip_address, + ip_range=ip_range, + ip_sec_policy=ip_sec_policy, + ip_sec_profile=ip_sec_profile, + ip_sec_proposal=ip_sec_proposal, + interface=interface, + inventory_item_role=inventory_item_role, + inventory_item=inventory_item, + l2vpn=l2vpn, + l2vpn_termination=l2vpn_termination, + location=location, + mac_address=mac_address, + manufacturer=manufacturer, + module_bay=module_bay, + module=module, + module_type=module_type, + region=region, + site_group=site_group, + tag=tag, + tenant_group=tenant_group, + vm_interface=vm_interface, + virtual_machine=virtual_machine, + wireless_lan_group=wireless_lan_group, + wireless_link=wireless_link, + platform=platform, + power_feed=power_feed, + power_outlet=power_outlet, + power_panel=power_panel, + power_port=power_port, + prefix=prefix, + provider_account=provider_account, + provider_network=provider_network, + provider=provider, + rir=rir, + rack_reservation=rack_reservation, + rack_role=rack_role, + rack=rack, + rack_type=rack_type, + role=role, + route_target=route_target, + service=service, + site=site, + tenant=tenant, + tunnel_group=tunnel_group, + tunnel=tunnel, + tunnel_termination=tunnel_termination, + vlan_group=vlan_group, + vlan_translation_policy=vlan_translation_policy, + vlan_translation_rule=vlan_translation_rule, + vrf=vrf, + virtual_chassis=virtual_chassis, + virtual_circuit=virtual_circuit, + virtual_circuit_termination=virtual_circuit_termination, + virtual_circuit_type=virtual_circuit_type, + virtual_device_context=virtual_device_context, + virtual_disk=virtual_disk, + wireless_lan=wireless_lan, + ) + + +class CustomFieldValue: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.CustomFieldValue.""" + + def __new__( + cls, + text: str | None = None, + integer: int | None = None, + decimal: float | None = None, + boolean: bool | None = None, + timestamp: datetime.datetime | None = None, + object: str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None = None, + string_array: list[str] | None = None, + object_array: list[str | CustomFieldObjectReference | pb.CustomFieldObjectReference] | None = None, + ) -> pb.CustomFieldValue: + """Create a new CustomFieldValue.""" + object = convert_to_protobuf(object, pb.CustomFieldObjectReference) + object_array = convert_to_protobuf_list(object_array, pb.CustomFieldObjectReference) + return pb.CustomFieldValue( + text=text, + integer=integer, + decimal=decimal, + boolean=boolean, + timestamp=timestamp, + object=object, + string_array=string_array, + object_array=object_array, + ) + + +class Device: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Device.""" + + def __new__( + cls, + name: str | None = None, + device_type: str | DeviceType | pb.DeviceType | None = None, + role: str | DeviceRole | pb.DeviceRole | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + platform: str | Platform | pb.Platform | None = None, + serial: str | None = None, + asset_tag: str | None = None, + site: str | Site | pb.Site | None = None, + location: str | Location | pb.Location | None = None, + rack: str | Rack | pb.Rack | None = None, + position: float | None = None, + face: str | None = None, + latitude: float | None = None, + longitude: float | None = None, + status: str | None = None, + airflow: str | None = None, + primary_ip4: str | IPAddress | pb.IPAddress | None = None, + primary_ip6: str | IPAddress | pb.IPAddress | None = None, + oob_ip: str | IPAddress | pb.IPAddress | None = None, + cluster: str | Cluster | pb.Cluster | None = None, + virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + vc_position: int | None = None, + vc_priority: int | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + # shortcuts + manufacturer: str | Manufacturer | pb.Manufacturer = None, + ) -> pb.Device: + """Create a new Device.""" + device_type = convert_to_protobuf(device_type, pb.DeviceType) + role = convert_to_protobuf(role, pb.DeviceRole) + tenant = convert_to_protobuf(tenant, pb.Tenant) + platform = convert_to_protobuf(platform, pb.Platform) + site = convert_to_protobuf(site, pb.Site) + location = convert_to_protobuf(location, pb.Location) + rack = convert_to_protobuf(rack, pb.Rack) + primary_ip4 = convert_to_protobuf(primary_ip4, pb.IPAddress) + primary_ip6 = convert_to_protobuf(primary_ip6, pb.IPAddress) + oob_ip = convert_to_protobuf(oob_ip, pb.IPAddress) + cluster = convert_to_protobuf(cluster, pb.Cluster) + virtual_chassis = convert_to_protobuf(virtual_chassis, pb.VirtualChassis) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + + # shortcut types (not directly used) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + + # apply shortcuts + if manufacturer is not None: + if platform is not None and not platform.HasField('manufacturer'): + platform.manufacturer.CopyFrom(manufacturer) + if device_type is not None and not device_type.HasField('manufacturer'): + device_type.manufacturer.CopyFrom(manufacturer) + return pb.Device( + name=name, + device_type=device_type, + role=role, + tenant=tenant, + platform=platform, + serial=serial, + asset_tag=asset_tag, + site=site, + location=location, + rack=rack, + position=position, + face=face, + latitude=latitude, + longitude=longitude, + status=status, + airflow=airflow, + primary_ip4=primary_ip4, + primary_ip6=primary_ip6, + oob_ip=oob_ip, + cluster=cluster, + virtual_chassis=virtual_chassis, + vc_position=vc_position, + vc_priority=vc_priority, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class DeviceBay: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.DeviceBay.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + name: str | None = None, + label: str | None = None, + description: str | None = None, + installed_device: str | Device | pb.Device | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.DeviceBay: + """Create a new DeviceBay.""" + device = convert_to_protobuf(device, pb.Device) + installed_device = convert_to_protobuf(installed_device, pb.Device) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.DeviceBay( + device=device, + name=name, + label=label, + description=description, + installed_device=installed_device, + tags=tags, + custom_fields=custom_fields, + ) + + +class DeviceRole: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.DeviceRole.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + color: str | None = None, + vm_role: bool | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.DeviceRole: + """Create a new DeviceRole.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.DeviceRole( + name=name, + slug=slug, + color=color, + vm_role=vm_role, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class DeviceType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.DeviceType.""" + + def __new__( + cls, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + default_platform: str | Platform | pb.Platform | None = None, + model: str | None = None, + slug: str | None = None, + part_number: str | None = None, + u_height: float | None = None, + exclude_from_utilization: bool | None = None, + is_full_depth: bool | None = None, + subdevice_role: str | None = None, + airflow: str | None = None, + weight: float | None = None, + weight_unit: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.DeviceType: + """Create a new DeviceType.""" + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + default_platform = convert_to_protobuf(default_platform, pb.Platform) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.DeviceType( + manufacturer=manufacturer, + default_platform=default_platform, + model=model, + slug=slug, + part_number=part_number, + u_height=u_height, + exclude_from_utilization=exclude_from_utilization, + is_full_depth=is_full_depth, + subdevice_role=subdevice_role, + airflow=airflow, + weight=weight, + weight_unit=weight_unit, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class FHRPGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.FHRPGroup.""" + + def __new__( + cls, + name: str | None = None, + protocol: str | None = None, + group_id: int | None = None, + auth_type: str | None = None, + auth_key: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.FHRPGroup: + """Create a new FHRPGroup.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.FHRPGroup( + name=name, + protocol=protocol, + group_id=group_id, + auth_type=auth_type, + auth_key=auth_key, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class FHRPGroupAssignment: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.FHRPGroupAssignment.""" + + def __new__( + cls, + group: str | FHRPGroup | pb.FHRPGroup | None = None, + interface_asn: str | ASN | pb.ASN | None = None, + interface_asn_range: str | ASNRange | pb.ASNRange | None = None, + interface_aggregate: str | Aggregate | pb.Aggregate | None = None, + interface_cable: str | Cable | pb.Cable | None = None, + interface_cable_path: str | CablePath | pb.CablePath | None = None, + interface_cable_termination: str | CableTermination | pb.CableTermination | None = None, + interface_circuit: str | Circuit | pb.Circuit | None = None, + interface_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + interface_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + interface_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + interface_circuit_type: str | CircuitType | pb.CircuitType | None = None, + interface_cluster: str | Cluster | pb.Cluster | None = None, + interface_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + interface_cluster_type: str | ClusterType | pb.ClusterType | None = None, + interface_console_port: str | ConsolePort | pb.ConsolePort | None = None, + interface_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + interface_contact: str | Contact | pb.Contact | None = None, + interface_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + interface_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + interface_contact_role: str | ContactRole | pb.ContactRole | None = None, + interface_device: str | Device | pb.Device | None = None, + interface_device_bay: str | DeviceBay | pb.DeviceBay | None = None, + interface_device_role: str | DeviceRole | pb.DeviceRole | None = None, + interface_device_type: str | DeviceType | pb.DeviceType | None = None, + interface_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + interface_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + interface_front_port: str | FrontPort | pb.FrontPort | None = None, + interface_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + interface_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + interface_ip_address: str | IPAddress | pb.IPAddress | None = None, + interface_ip_range: str | IPRange | pb.IPRange | None = None, + interface_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + interface_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + interface_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + interface_interface: str | Interface | pb.Interface | None = None, + interface_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + interface_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + interface_l2vpn: str | L2VPN | pb.L2VPN | None = None, + interface_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + interface_location: str | Location | pb.Location | None = None, + interface_mac_address: str | MACAddress | pb.MACAddress | None = None, + interface_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + interface_module: str | Module | pb.Module | None = None, + interface_module_bay: str | ModuleBay | pb.ModuleBay | None = None, + interface_module_type: str | ModuleType | pb.ModuleType | None = None, + interface_platform: str | Platform | pb.Platform | None = None, + interface_power_feed: str | PowerFeed | pb.PowerFeed | None = None, + interface_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + interface_power_panel: str | PowerPanel | pb.PowerPanel | None = None, + interface_power_port: str | PowerPort | pb.PowerPort | None = None, + interface_prefix: str | Prefix | pb.Prefix | None = None, + interface_provider: str | Provider | pb.Provider | None = None, + interface_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + interface_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + interface_rir: str | RIR | pb.RIR | None = None, + interface_rack: str | Rack | pb.Rack | None = None, + interface_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + interface_rack_role: str | RackRole | pb.RackRole | None = None, + interface_rack_type: str | RackType | pb.RackType | None = None, + interface_rear_port: str | RearPort | pb.RearPort | None = None, + interface_region: str | Region | pb.Region | None = None, + interface_role: str | Role | pb.Role | None = None, + interface_route_target: str | RouteTarget | pb.RouteTarget | None = None, + interface_service: str | Service | pb.Service | None = None, + interface_site: str | Site | pb.Site | None = None, + interface_site_group: str | SiteGroup | pb.SiteGroup | None = None, + interface_tag: str | Tag | pb.Tag | None = None, + interface_tenant: str | Tenant | pb.Tenant | None = None, + interface_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + interface_tunnel: str | Tunnel | pb.Tunnel | None = None, + interface_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + interface_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + interface_vlan: str | VLAN | pb.VLAN | None = None, + interface_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + interface_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + interface_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + interface_vm_interface: str | VMInterface | pb.VMInterface | None = None, + interface_vrf: str | VRF | pb.VRF | None = None, + interface_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + interface_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + interface_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + interface_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + interface_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + interface_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + interface_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + interface_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + interface_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + interface_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + priority: int | None = None, + ) -> pb.FHRPGroupAssignment: + """Create a new FHRPGroupAssignment.""" + group = convert_to_protobuf(group, pb.FHRPGroup) + interface_asn = convert_to_protobuf(interface_asn, pb.ASN) + interface_asn_range = convert_to_protobuf(interface_asn_range, pb.ASNRange) + interface_aggregate = convert_to_protobuf(interface_aggregate, pb.Aggregate) + interface_cable = convert_to_protobuf(interface_cable, pb.Cable) + interface_cable_path = convert_to_protobuf(interface_cable_path, pb.CablePath) + interface_cable_termination = convert_to_protobuf(interface_cable_termination, pb.CableTermination) + interface_circuit = convert_to_protobuf(interface_circuit, pb.Circuit) + interface_circuit_group = convert_to_protobuf(interface_circuit_group, pb.CircuitGroup) + interface_circuit_group_assignment = convert_to_protobuf(interface_circuit_group_assignment, pb.CircuitGroupAssignment) + interface_circuit_termination = convert_to_protobuf(interface_circuit_termination, pb.CircuitTermination) + interface_circuit_type = convert_to_protobuf(interface_circuit_type, pb.CircuitType) + interface_cluster = convert_to_protobuf(interface_cluster, pb.Cluster) + interface_cluster_group = convert_to_protobuf(interface_cluster_group, pb.ClusterGroup) + interface_cluster_type = convert_to_protobuf(interface_cluster_type, pb.ClusterType) + interface_console_port = convert_to_protobuf(interface_console_port, pb.ConsolePort) + interface_console_server_port = convert_to_protobuf(interface_console_server_port, pb.ConsoleServerPort) + interface_contact = convert_to_protobuf(interface_contact, pb.Contact) + interface_contact_assignment = convert_to_protobuf(interface_contact_assignment, pb.ContactAssignment) + interface_contact_group = convert_to_protobuf(interface_contact_group, pb.ContactGroup) + interface_contact_role = convert_to_protobuf(interface_contact_role, pb.ContactRole) + interface_device = convert_to_protobuf(interface_device, pb.Device) + interface_device_bay = convert_to_protobuf(interface_device_bay, pb.DeviceBay) + interface_device_role = convert_to_protobuf(interface_device_role, pb.DeviceRole) + interface_device_type = convert_to_protobuf(interface_device_type, pb.DeviceType) + interface_fhrp_group = convert_to_protobuf(interface_fhrp_group, pb.FHRPGroup) + interface_fhrp_group_assignment = convert_to_protobuf(interface_fhrp_group_assignment, pb.FHRPGroupAssignment) + interface_front_port = convert_to_protobuf(interface_front_port, pb.FrontPort) + interface_ike_policy = convert_to_protobuf(interface_ike_policy, pb.IKEPolicy) + interface_ike_proposal = convert_to_protobuf(interface_ike_proposal, pb.IKEProposal) + interface_ip_address = convert_to_protobuf(interface_ip_address, pb.IPAddress) + interface_ip_range = convert_to_protobuf(interface_ip_range, pb.IPRange) + interface_ip_sec_policy = convert_to_protobuf(interface_ip_sec_policy, pb.IPSecPolicy) + interface_ip_sec_profile = convert_to_protobuf(interface_ip_sec_profile, pb.IPSecProfile) + interface_ip_sec_proposal = convert_to_protobuf(interface_ip_sec_proposal, pb.IPSecProposal) + interface_interface = convert_to_protobuf(interface_interface, pb.Interface) + interface_inventory_item = convert_to_protobuf(interface_inventory_item, pb.InventoryItem) + interface_inventory_item_role = convert_to_protobuf(interface_inventory_item_role, pb.InventoryItemRole) + interface_l2vpn = convert_to_protobuf(interface_l2vpn, pb.L2VPN) + interface_l2vpn_termination = convert_to_protobuf(interface_l2vpn_termination, pb.L2VPNTermination) + interface_location = convert_to_protobuf(interface_location, pb.Location) + interface_mac_address = convert_to_protobuf(interface_mac_address, pb.MACAddress) + interface_manufacturer = convert_to_protobuf(interface_manufacturer, pb.Manufacturer) + interface_module = convert_to_protobuf(interface_module, pb.Module) + interface_module_bay = convert_to_protobuf(interface_module_bay, pb.ModuleBay) + interface_module_type = convert_to_protobuf(interface_module_type, pb.ModuleType) + interface_platform = convert_to_protobuf(interface_platform, pb.Platform) + interface_power_feed = convert_to_protobuf(interface_power_feed, pb.PowerFeed) + interface_power_outlet = convert_to_protobuf(interface_power_outlet, pb.PowerOutlet) + interface_power_panel = convert_to_protobuf(interface_power_panel, pb.PowerPanel) + interface_power_port = convert_to_protobuf(interface_power_port, pb.PowerPort) + interface_prefix = convert_to_protobuf(interface_prefix, pb.Prefix) + interface_provider = convert_to_protobuf(interface_provider, pb.Provider) + interface_provider_account = convert_to_protobuf(interface_provider_account, pb.ProviderAccount) + interface_provider_network = convert_to_protobuf(interface_provider_network, pb.ProviderNetwork) + interface_rir = convert_to_protobuf(interface_rir, pb.RIR) + interface_rack = convert_to_protobuf(interface_rack, pb.Rack) + interface_rack_reservation = convert_to_protobuf(interface_rack_reservation, pb.RackReservation) + interface_rack_role = convert_to_protobuf(interface_rack_role, pb.RackRole) + interface_rack_type = convert_to_protobuf(interface_rack_type, pb.RackType) + interface_rear_port = convert_to_protobuf(interface_rear_port, pb.RearPort) + interface_region = convert_to_protobuf(interface_region, pb.Region) + interface_role = convert_to_protobuf(interface_role, pb.Role) + interface_route_target = convert_to_protobuf(interface_route_target, pb.RouteTarget) + interface_service = convert_to_protobuf(interface_service, pb.Service) + interface_site = convert_to_protobuf(interface_site, pb.Site) + interface_site_group = convert_to_protobuf(interface_site_group, pb.SiteGroup) + interface_tag = convert_to_protobuf(interface_tag, pb.Tag) + interface_tenant = convert_to_protobuf(interface_tenant, pb.Tenant) + interface_tenant_group = convert_to_protobuf(interface_tenant_group, pb.TenantGroup) + interface_tunnel = convert_to_protobuf(interface_tunnel, pb.Tunnel) + interface_tunnel_group = convert_to_protobuf(interface_tunnel_group, pb.TunnelGroup) + interface_tunnel_termination = convert_to_protobuf(interface_tunnel_termination, pb.TunnelTermination) + interface_vlan = convert_to_protobuf(interface_vlan, pb.VLAN) + interface_vlan_group = convert_to_protobuf(interface_vlan_group, pb.VLANGroup) + interface_vlan_translation_policy = convert_to_protobuf(interface_vlan_translation_policy, pb.VLANTranslationPolicy) + interface_vlan_translation_rule = convert_to_protobuf(interface_vlan_translation_rule, pb.VLANTranslationRule) + interface_vm_interface = convert_to_protobuf(interface_vm_interface, pb.VMInterface) + interface_vrf = convert_to_protobuf(interface_vrf, pb.VRF) + interface_virtual_chassis = convert_to_protobuf(interface_virtual_chassis, pb.VirtualChassis) + interface_virtual_circuit = convert_to_protobuf(interface_virtual_circuit, pb.VirtualCircuit) + interface_virtual_circuit_termination = convert_to_protobuf(interface_virtual_circuit_termination, pb.VirtualCircuitTermination) + interface_virtual_circuit_type = convert_to_protobuf(interface_virtual_circuit_type, pb.VirtualCircuitType) + interface_virtual_device_context = convert_to_protobuf(interface_virtual_device_context, pb.VirtualDeviceContext) + interface_virtual_disk = convert_to_protobuf(interface_virtual_disk, pb.VirtualDisk) + interface_virtual_machine = convert_to_protobuf(interface_virtual_machine, pb.VirtualMachine) + interface_wireless_lan = convert_to_protobuf(interface_wireless_lan, pb.WirelessLAN) + interface_wireless_lan_group = convert_to_protobuf(interface_wireless_lan_group, pb.WirelessLANGroup) + interface_wireless_link = convert_to_protobuf(interface_wireless_link, pb.WirelessLink) + return pb.FHRPGroupAssignment( + group=group, + interface_asn=interface_asn, + interface_asn_range=interface_asn_range, + interface_aggregate=interface_aggregate, + interface_cable=interface_cable, + interface_cable_path=interface_cable_path, + interface_cable_termination=interface_cable_termination, + interface_circuit=interface_circuit, + interface_circuit_group=interface_circuit_group, + interface_circuit_group_assignment=interface_circuit_group_assignment, + interface_circuit_termination=interface_circuit_termination, + interface_circuit_type=interface_circuit_type, + interface_cluster=interface_cluster, + interface_cluster_group=interface_cluster_group, + interface_cluster_type=interface_cluster_type, + interface_console_port=interface_console_port, + interface_console_server_port=interface_console_server_port, + interface_contact=interface_contact, + interface_contact_assignment=interface_contact_assignment, + interface_contact_group=interface_contact_group, + interface_contact_role=interface_contact_role, + interface_device=interface_device, + interface_device_bay=interface_device_bay, + interface_device_role=interface_device_role, + interface_device_type=interface_device_type, + interface_fhrp_group=interface_fhrp_group, + interface_fhrp_group_assignment=interface_fhrp_group_assignment, + interface_front_port=interface_front_port, + interface_ike_policy=interface_ike_policy, + interface_ike_proposal=interface_ike_proposal, + interface_ip_address=interface_ip_address, + interface_ip_range=interface_ip_range, + interface_ip_sec_policy=interface_ip_sec_policy, + interface_ip_sec_profile=interface_ip_sec_profile, + interface_ip_sec_proposal=interface_ip_sec_proposal, + interface_interface=interface_interface, + interface_inventory_item=interface_inventory_item, + interface_inventory_item_role=interface_inventory_item_role, + interface_l2vpn=interface_l2vpn, + interface_l2vpn_termination=interface_l2vpn_termination, + interface_location=interface_location, + interface_mac_address=interface_mac_address, + interface_manufacturer=interface_manufacturer, + interface_module=interface_module, + interface_module_bay=interface_module_bay, + interface_module_type=interface_module_type, + interface_platform=interface_platform, + interface_power_feed=interface_power_feed, + interface_power_outlet=interface_power_outlet, + interface_power_panel=interface_power_panel, + interface_power_port=interface_power_port, + interface_prefix=interface_prefix, + interface_provider=interface_provider, + interface_provider_account=interface_provider_account, + interface_provider_network=interface_provider_network, + interface_rir=interface_rir, + interface_rack=interface_rack, + interface_rack_reservation=interface_rack_reservation, + interface_rack_role=interface_rack_role, + interface_rack_type=interface_rack_type, + interface_rear_port=interface_rear_port, + interface_region=interface_region, + interface_role=interface_role, + interface_route_target=interface_route_target, + interface_service=interface_service, + interface_site=interface_site, + interface_site_group=interface_site_group, + interface_tag=interface_tag, + interface_tenant=interface_tenant, + interface_tenant_group=interface_tenant_group, + interface_tunnel=interface_tunnel, + interface_tunnel_group=interface_tunnel_group, + interface_tunnel_termination=interface_tunnel_termination, + interface_vlan=interface_vlan, + interface_vlan_group=interface_vlan_group, + interface_vlan_translation_policy=interface_vlan_translation_policy, + interface_vlan_translation_rule=interface_vlan_translation_rule, + interface_vm_interface=interface_vm_interface, + interface_vrf=interface_vrf, + interface_virtual_chassis=interface_virtual_chassis, + interface_virtual_circuit=interface_virtual_circuit, + interface_virtual_circuit_termination=interface_virtual_circuit_termination, + interface_virtual_circuit_type=interface_virtual_circuit_type, + interface_virtual_device_context=interface_virtual_device_context, + interface_virtual_disk=interface_virtual_disk, + interface_virtual_machine=interface_virtual_machine, + interface_wireless_lan=interface_wireless_lan, + interface_wireless_lan_group=interface_wireless_lan_group, + interface_wireless_link=interface_wireless_link, + priority=priority, + ) + + +class FrontPort: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.FrontPort.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + color: str | None = None, + rear_port: str | RearPort | pb.RearPort | None = None, + rear_port_position: int | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.FrontPort: + """Create a new FrontPort.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + rear_port = convert_to_protobuf(rear_port, pb.RearPort) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.FrontPort( + device=device, + module=module, + name=name, + label=label, + type=type, + color=color, + rear_port=rear_port, + rear_port_position=rear_port_position, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class GenericObject: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.GenericObject.""" + + def __new__( + cls, + object_asn: str | ASN | pb.ASN | None = None, + object_asn_range: str | ASNRange | pb.ASNRange | None = None, + object_aggregate: str | Aggregate | pb.Aggregate | None = None, + object_cable: str | Cable | pb.Cable | None = None, + object_cable_path: str | CablePath | pb.CablePath | None = None, + object_cable_termination: str | CableTermination | pb.CableTermination | None = None, + object_circuit: str | Circuit | pb.Circuit | None = None, + object_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + object_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + object_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + object_circuit_type: str | CircuitType | pb.CircuitType | None = None, + object_cluster: str | Cluster | pb.Cluster | None = None, + object_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + object_cluster_type: str | ClusterType | pb.ClusterType | None = None, + object_console_port: str | ConsolePort | pb.ConsolePort | None = None, + object_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + object_contact: str | Contact | pb.Contact | None = None, + object_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + object_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + object_contact_role: str | ContactRole | pb.ContactRole | None = None, + object_device: str | Device | pb.Device | None = None, + object_device_bay: str | DeviceBay | pb.DeviceBay | None = None, + object_device_role: str | DeviceRole | pb.DeviceRole | None = None, + object_device_type: str | DeviceType | pb.DeviceType | None = None, + object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + object_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + object_front_port: str | FrontPort | pb.FrontPort | None = None, + object_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + object_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + object_ip_address: str | IPAddress | pb.IPAddress | None = None, + object_ip_range: str | IPRange | pb.IPRange | None = None, + object_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + object_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + object_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + object_interface: str | Interface | pb.Interface | None = None, + object_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + object_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + object_l2vpn: str | L2VPN | pb.L2VPN | None = None, + object_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + object_location: str | Location | pb.Location | None = None, + object_mac_address: str | MACAddress | pb.MACAddress | None = None, + object_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + object_module: str | Module | pb.Module | None = None, + object_module_bay: str | ModuleBay | pb.ModuleBay | None = None, + object_module_type: str | ModuleType | pb.ModuleType | None = None, + object_platform: str | Platform | pb.Platform | None = None, + object_power_feed: str | PowerFeed | pb.PowerFeed | None = None, + object_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + object_power_panel: str | PowerPanel | pb.PowerPanel | None = None, + object_power_port: str | PowerPort | pb.PowerPort | None = None, + object_prefix: str | Prefix | pb.Prefix | None = None, + object_provider: str | Provider | pb.Provider | None = None, + object_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + object_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + object_rir: str | RIR | pb.RIR | None = None, + object_rack: str | Rack | pb.Rack | None = None, + object_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + object_rack_role: str | RackRole | pb.RackRole | None = None, + object_rack_type: str | RackType | pb.RackType | None = None, + object_rear_port: str | RearPort | pb.RearPort | None = None, + object_region: str | Region | pb.Region | None = None, + object_role: str | Role | pb.Role | None = None, + object_route_target: str | RouteTarget | pb.RouteTarget | None = None, + object_service: str | Service | pb.Service | None = None, + object_site: str | Site | pb.Site | None = None, + object_site_group: str | SiteGroup | pb.SiteGroup | None = None, + object_tag: str | Tag | pb.Tag | None = None, + object_tenant: str | Tenant | pb.Tenant | None = None, + object_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + object_tunnel: str | Tunnel | pb.Tunnel | None = None, + object_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + object_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + object_vlan: str | VLAN | pb.VLAN | None = None, + object_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + object_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + object_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + object_vm_interface: str | VMInterface | pb.VMInterface | None = None, + object_vrf: str | VRF | pb.VRF | None = None, + object_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + object_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + object_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + object_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + object_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + object_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + object_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + object_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + object_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + object_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + ) -> pb.GenericObject: + """Create a new GenericObject.""" + object_asn = convert_to_protobuf(object_asn, pb.ASN) + object_asn_range = convert_to_protobuf(object_asn_range, pb.ASNRange) + object_aggregate = convert_to_protobuf(object_aggregate, pb.Aggregate) + object_cable = convert_to_protobuf(object_cable, pb.Cable) + object_cable_path = convert_to_protobuf(object_cable_path, pb.CablePath) + object_cable_termination = convert_to_protobuf(object_cable_termination, pb.CableTermination) + object_circuit = convert_to_protobuf(object_circuit, pb.Circuit) + object_circuit_group = convert_to_protobuf(object_circuit_group, pb.CircuitGroup) + object_circuit_group_assignment = convert_to_protobuf(object_circuit_group_assignment, pb.CircuitGroupAssignment) + object_circuit_termination = convert_to_protobuf(object_circuit_termination, pb.CircuitTermination) + object_circuit_type = convert_to_protobuf(object_circuit_type, pb.CircuitType) + object_cluster = convert_to_protobuf(object_cluster, pb.Cluster) + object_cluster_group = convert_to_protobuf(object_cluster_group, pb.ClusterGroup) + object_cluster_type = convert_to_protobuf(object_cluster_type, pb.ClusterType) + object_console_port = convert_to_protobuf(object_console_port, pb.ConsolePort) + object_console_server_port = convert_to_protobuf(object_console_server_port, pb.ConsoleServerPort) + object_contact = convert_to_protobuf(object_contact, pb.Contact) + object_contact_assignment = convert_to_protobuf(object_contact_assignment, pb.ContactAssignment) + object_contact_group = convert_to_protobuf(object_contact_group, pb.ContactGroup) + object_contact_role = convert_to_protobuf(object_contact_role, pb.ContactRole) + object_device = convert_to_protobuf(object_device, pb.Device) + object_device_bay = convert_to_protobuf(object_device_bay, pb.DeviceBay) + object_device_role = convert_to_protobuf(object_device_role, pb.DeviceRole) + object_device_type = convert_to_protobuf(object_device_type, pb.DeviceType) + object_fhrp_group = convert_to_protobuf(object_fhrp_group, pb.FHRPGroup) + object_fhrp_group_assignment = convert_to_protobuf(object_fhrp_group_assignment, pb.FHRPGroupAssignment) + object_front_port = convert_to_protobuf(object_front_port, pb.FrontPort) + object_ike_policy = convert_to_protobuf(object_ike_policy, pb.IKEPolicy) + object_ike_proposal = convert_to_protobuf(object_ike_proposal, pb.IKEProposal) + object_ip_address = convert_to_protobuf(object_ip_address, pb.IPAddress) + object_ip_range = convert_to_protobuf(object_ip_range, pb.IPRange) + object_ip_sec_policy = convert_to_protobuf(object_ip_sec_policy, pb.IPSecPolicy) + object_ip_sec_profile = convert_to_protobuf(object_ip_sec_profile, pb.IPSecProfile) + object_ip_sec_proposal = convert_to_protobuf(object_ip_sec_proposal, pb.IPSecProposal) + object_interface = convert_to_protobuf(object_interface, pb.Interface) + object_inventory_item = convert_to_protobuf(object_inventory_item, pb.InventoryItem) + object_inventory_item_role = convert_to_protobuf(object_inventory_item_role, pb.InventoryItemRole) + object_l2vpn = convert_to_protobuf(object_l2vpn, pb.L2VPN) + object_l2vpn_termination = convert_to_protobuf(object_l2vpn_termination, pb.L2VPNTermination) + object_location = convert_to_protobuf(object_location, pb.Location) + object_mac_address = convert_to_protobuf(object_mac_address, pb.MACAddress) + object_manufacturer = convert_to_protobuf(object_manufacturer, pb.Manufacturer) + object_module = convert_to_protobuf(object_module, pb.Module) + object_module_bay = convert_to_protobuf(object_module_bay, pb.ModuleBay) + object_module_type = convert_to_protobuf(object_module_type, pb.ModuleType) + object_platform = convert_to_protobuf(object_platform, pb.Platform) + object_power_feed = convert_to_protobuf(object_power_feed, pb.PowerFeed) + object_power_outlet = convert_to_protobuf(object_power_outlet, pb.PowerOutlet) + object_power_panel = convert_to_protobuf(object_power_panel, pb.PowerPanel) + object_power_port = convert_to_protobuf(object_power_port, pb.PowerPort) + object_prefix = convert_to_protobuf(object_prefix, pb.Prefix) + object_provider = convert_to_protobuf(object_provider, pb.Provider) + object_provider_account = convert_to_protobuf(object_provider_account, pb.ProviderAccount) + object_provider_network = convert_to_protobuf(object_provider_network, pb.ProviderNetwork) + object_rir = convert_to_protobuf(object_rir, pb.RIR) + object_rack = convert_to_protobuf(object_rack, pb.Rack) + object_rack_reservation = convert_to_protobuf(object_rack_reservation, pb.RackReservation) + object_rack_role = convert_to_protobuf(object_rack_role, pb.RackRole) + object_rack_type = convert_to_protobuf(object_rack_type, pb.RackType) + object_rear_port = convert_to_protobuf(object_rear_port, pb.RearPort) + object_region = convert_to_protobuf(object_region, pb.Region) + object_role = convert_to_protobuf(object_role, pb.Role) + object_route_target = convert_to_protobuf(object_route_target, pb.RouteTarget) + object_service = convert_to_protobuf(object_service, pb.Service) + object_site = convert_to_protobuf(object_site, pb.Site) + object_site_group = convert_to_protobuf(object_site_group, pb.SiteGroup) + object_tag = convert_to_protobuf(object_tag, pb.Tag) + object_tenant = convert_to_protobuf(object_tenant, pb.Tenant) + object_tenant_group = convert_to_protobuf(object_tenant_group, pb.TenantGroup) + object_tunnel = convert_to_protobuf(object_tunnel, pb.Tunnel) + object_tunnel_group = convert_to_protobuf(object_tunnel_group, pb.TunnelGroup) + object_tunnel_termination = convert_to_protobuf(object_tunnel_termination, pb.TunnelTermination) + object_vlan = convert_to_protobuf(object_vlan, pb.VLAN) + object_vlan_group = convert_to_protobuf(object_vlan_group, pb.VLANGroup) + object_vlan_translation_policy = convert_to_protobuf(object_vlan_translation_policy, pb.VLANTranslationPolicy) + object_vlan_translation_rule = convert_to_protobuf(object_vlan_translation_rule, pb.VLANTranslationRule) + object_vm_interface = convert_to_protobuf(object_vm_interface, pb.VMInterface) + object_vrf = convert_to_protobuf(object_vrf, pb.VRF) + object_virtual_chassis = convert_to_protobuf(object_virtual_chassis, pb.VirtualChassis) + object_virtual_circuit = convert_to_protobuf(object_virtual_circuit, pb.VirtualCircuit) + object_virtual_circuit_termination = convert_to_protobuf(object_virtual_circuit_termination, pb.VirtualCircuitTermination) + object_virtual_circuit_type = convert_to_protobuf(object_virtual_circuit_type, pb.VirtualCircuitType) + object_virtual_device_context = convert_to_protobuf(object_virtual_device_context, pb.VirtualDeviceContext) + object_virtual_disk = convert_to_protobuf(object_virtual_disk, pb.VirtualDisk) + object_virtual_machine = convert_to_protobuf(object_virtual_machine, pb.VirtualMachine) + object_wireless_lan = convert_to_protobuf(object_wireless_lan, pb.WirelessLAN) + object_wireless_lan_group = convert_to_protobuf(object_wireless_lan_group, pb.WirelessLANGroup) + object_wireless_link = convert_to_protobuf(object_wireless_link, pb.WirelessLink) + return pb.GenericObject( + object_asn=object_asn, + object_asn_range=object_asn_range, + object_aggregate=object_aggregate, + object_cable=object_cable, + object_cable_path=object_cable_path, + object_cable_termination=object_cable_termination, + object_circuit=object_circuit, + object_circuit_group=object_circuit_group, + object_circuit_group_assignment=object_circuit_group_assignment, + object_circuit_termination=object_circuit_termination, + object_circuit_type=object_circuit_type, + object_cluster=object_cluster, + object_cluster_group=object_cluster_group, + object_cluster_type=object_cluster_type, + object_console_port=object_console_port, + object_console_server_port=object_console_server_port, + object_contact=object_contact, + object_contact_assignment=object_contact_assignment, + object_contact_group=object_contact_group, + object_contact_role=object_contact_role, + object_device=object_device, + object_device_bay=object_device_bay, + object_device_role=object_device_role, + object_device_type=object_device_type, + object_fhrp_group=object_fhrp_group, + object_fhrp_group_assignment=object_fhrp_group_assignment, + object_front_port=object_front_port, + object_ike_policy=object_ike_policy, + object_ike_proposal=object_ike_proposal, + object_ip_address=object_ip_address, + object_ip_range=object_ip_range, + object_ip_sec_policy=object_ip_sec_policy, + object_ip_sec_profile=object_ip_sec_profile, + object_ip_sec_proposal=object_ip_sec_proposal, + object_interface=object_interface, + object_inventory_item=object_inventory_item, + object_inventory_item_role=object_inventory_item_role, + object_l2vpn=object_l2vpn, + object_l2vpn_termination=object_l2vpn_termination, + object_location=object_location, + object_mac_address=object_mac_address, + object_manufacturer=object_manufacturer, + object_module=object_module, + object_module_bay=object_module_bay, + object_module_type=object_module_type, + object_platform=object_platform, + object_power_feed=object_power_feed, + object_power_outlet=object_power_outlet, + object_power_panel=object_power_panel, + object_power_port=object_power_port, + object_prefix=object_prefix, + object_provider=object_provider, + object_provider_account=object_provider_account, + object_provider_network=object_provider_network, + object_rir=object_rir, + object_rack=object_rack, + object_rack_reservation=object_rack_reservation, + object_rack_role=object_rack_role, + object_rack_type=object_rack_type, + object_rear_port=object_rear_port, + object_region=object_region, + object_role=object_role, + object_route_target=object_route_target, + object_service=object_service, + object_site=object_site, + object_site_group=object_site_group, + object_tag=object_tag, + object_tenant=object_tenant, + object_tenant_group=object_tenant_group, + object_tunnel=object_tunnel, + object_tunnel_group=object_tunnel_group, + object_tunnel_termination=object_tunnel_termination, + object_vlan=object_vlan, + object_vlan_group=object_vlan_group, + object_vlan_translation_policy=object_vlan_translation_policy, + object_vlan_translation_rule=object_vlan_translation_rule, + object_vm_interface=object_vm_interface, + object_vrf=object_vrf, + object_virtual_chassis=object_virtual_chassis, + object_virtual_circuit=object_virtual_circuit, + object_virtual_circuit_termination=object_virtual_circuit_termination, + object_virtual_circuit_type=object_virtual_circuit_type, + object_virtual_device_context=object_virtual_device_context, + object_virtual_disk=object_virtual_disk, + object_virtual_machine=object_virtual_machine, + object_wireless_lan=object_wireless_lan, + object_wireless_lan_group=object_wireless_lan_group, + object_wireless_link=object_wireless_link, + ) + + +class IKEPolicy: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IKEPolicy.""" + + def __new__( + cls, + name: str | None = None, + description: str | None = None, + version: int | None = None, + mode: str | None = None, + preshared_key: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IKEPolicy: + """Create a new IKEPolicy.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IKEPolicy( + name=name, + description=description, + version=version, + mode=mode, + preshared_key=preshared_key, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class IKEProposal: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IKEProposal.""" + + def __new__( + cls, + name: str | None = None, + description: str | None = None, + authentication_method: str | None = None, + encryption_algorithm: str | None = None, + authentication_algorithm: str | None = None, + group: int | None = None, + sa_lifetime: int | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IKEProposal: + """Create a new IKEProposal.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IKEProposal( + name=name, + description=description, + authentication_method=authentication_method, + encryption_algorithm=encryption_algorithm, + authentication_algorithm=authentication_algorithm, + group=group, + sa_lifetime=sa_lifetime, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class IPAddress: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IPAddress.""" + + def __new__( + cls, + address: str | None = None, + vrf: str | VRF | pb.VRF | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + status: str | None = None, + role: str | None = None, + assigned_object_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + assigned_object_interface: str | Interface | pb.Interface | None = None, + assigned_object_vm_interface: str | VMInterface | pb.VMInterface | None = None, + nat_inside: str | IPAddress | pb.IPAddress | None = None, + dns_name: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + # shortcuts + manufacturer: str | Manufacturer | pb.Manufacturer = None, + device_type: str | DeviceType | pb.DeviceType = None, + platform: str | Platform | pb.Platform = None, + site: str | Site | pb.Site = None, + device_role: str | DeviceRole | pb.DeviceRole = None, + device: str | Device | pb.Device = None, + ) -> pb.IPAddress: + """Create a new IPAddress.""" + vrf = convert_to_protobuf(vrf, pb.VRF) + tenant = convert_to_protobuf(tenant, pb.Tenant) + assigned_object_fhrp_group = convert_to_protobuf(assigned_object_fhrp_group, pb.FHRPGroup) + assigned_object_interface = convert_to_protobuf(assigned_object_interface, pb.Interface) + assigned_object_vm_interface = convert_to_protobuf(assigned_object_vm_interface, pb.VMInterface) + nat_inside = convert_to_protobuf(nat_inside, pb.IPAddress) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + + # shortcut types (not directly used) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + device_type = convert_to_protobuf(device_type, pb.DeviceType) + platform = convert_to_protobuf(platform, pb.Platform) + site = convert_to_protobuf(site, pb.Site) + device_role = convert_to_protobuf(device_role, pb.DeviceRole) + device = convert_to_protobuf(device, pb.Device) + + # apply shortcuts + if manufacturer is not None: + if platform is not None and not platform.HasField('manufacturer'): + platform.manufacturer.CopyFrom(manufacturer) + if device_type is not None and not device_type.HasField('manufacturer'): + device_type.manufacturer.CopyFrom(manufacturer) + if device_type is not None: + if device is not None and not device.HasField('device_type'): + device.device_type.CopyFrom(device_type) + if platform is not None: + if device is not None and not device.HasField('platform'): + device.platform.CopyFrom(platform) + if site is not None: + if device is not None and not device.HasField('site'): + device.site.CopyFrom(site) + if device_role is not None: + if device is not None and not device.HasField('role'): + device.role.CopyFrom(device_role) + if device is not None: + if assigned_object_interface is not None and not assigned_object_interface.HasField('device'): + assigned_object_interface.device.CopyFrom(device) + if assigned_object_vm_interface is not None and not assigned_object_vm_interface.HasField('device'): + assigned_object_vm_interface.device.CopyFrom(device) + return pb.IPAddress( + address=address, + vrf=vrf, + tenant=tenant, + status=status, + role=role, + assigned_object_fhrp_group=assigned_object_fhrp_group, + assigned_object_interface=assigned_object_interface, + assigned_object_vm_interface=assigned_object_vm_interface, + nat_inside=nat_inside, + dns_name=dns_name, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class IPRange: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IPRange.""" + + def __new__( + cls, + start_address: str | None = None, + end_address: str | None = None, + vrf: str | VRF | pb.VRF | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + status: str | None = None, + role: str | Role | pb.Role | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + mark_utilized: bool | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IPRange: + """Create a new IPRange.""" + vrf = convert_to_protobuf(vrf, pb.VRF) + tenant = convert_to_protobuf(tenant, pb.Tenant) + role = convert_to_protobuf(role, pb.Role) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IPRange( + start_address=start_address, + end_address=end_address, + vrf=vrf, + tenant=tenant, + status=status, + role=role, + description=description, + comments=comments, + tags=tags, + mark_utilized=mark_utilized, + custom_fields=custom_fields, + ) + + +class IPSecPolicy: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IPSecPolicy.""" + + def __new__( + cls, + name: str | None = None, + description: str | None = None, + pfs_group: int | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IPSecPolicy: + """Create a new IPSecPolicy.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IPSecPolicy( + name=name, + description=description, + pfs_group=pfs_group, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class IPSecProfile: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IPSecProfile.""" + + def __new__( + cls, + name: str | None = None, + description: str | None = None, + mode: str | None = None, + ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + ipsec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IPSecProfile: + """Create a new IPSecProfile.""" + ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) + ipsec_policy = convert_to_protobuf(ipsec_policy, pb.IPSecPolicy) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IPSecProfile( + name=name, + description=description, + mode=mode, + ike_policy=ike_policy, + ipsec_policy=ipsec_policy, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class IPSecProposal: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.IPSecProposal.""" + + def __new__( + cls, + name: str | None = None, + description: str | None = None, + encryption_algorithm: str | None = None, + authentication_algorithm: str | None = None, + sa_lifetime_seconds: int | None = None, + sa_lifetime_data: int | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.IPSecProposal: + """Create a new IPSecProposal.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.IPSecProposal( + name=name, + description=description, + encryption_algorithm=encryption_algorithm, + authentication_algorithm=authentication_algorithm, + sa_lifetime_seconds=sa_lifetime_seconds, + sa_lifetime_data=sa_lifetime_data, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Interface: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Interface.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + enabled: bool | None = None, + parent: str | Interface | pb.Interface | None = None, + bridge: str | Interface | pb.Interface | None = None, + lag: str | Interface | pb.Interface | None = None, + mtu: int | None = None, + primary_mac_address: str | MACAddress | pb.MACAddress | None = None, + speed: int | None = None, + duplex: str | None = None, + wwn: str | None = None, + mgmt_only: bool | None = None, + description: str | None = None, + mode: str | None = None, + rf_role: str | None = None, + rf_channel: str | None = None, + poe_mode: str | None = None, + poe_type: str | None = None, + rf_channel_frequency: float | None = None, + rf_channel_width: float | None = None, + tx_power: int | None = None, + untagged_vlan: str | VLAN | pb.VLAN | None = None, + qinq_svlan: str | VLAN | pb.VLAN | None = None, + vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + mark_connected: bool | None = None, + vrf: str | VRF | pb.VRF | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + # shortcuts + manufacturer: str | Manufacturer | pb.Manufacturer = None, + device_type: str | DeviceType | pb.DeviceType = None, + platform: str | Platform | pb.Platform = None, + site: str | Site | pb.Site = None, + role: str | DeviceRole | pb.DeviceRole = None, + ) -> pb.Interface: + """Create a new Interface.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + parent = convert_to_protobuf(parent, pb.Interface) + bridge = convert_to_protobuf(bridge, pb.Interface) + lag = convert_to_protobuf(lag, pb.Interface) + primary_mac_address = convert_to_protobuf(primary_mac_address, pb.MACAddress) + untagged_vlan = convert_to_protobuf(untagged_vlan, pb.VLAN) + qinq_svlan = convert_to_protobuf(qinq_svlan, pb.VLAN) + vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) + vrf = convert_to_protobuf(vrf, pb.VRF) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + + # shortcut types (not directly used) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + device_type = convert_to_protobuf(device_type, pb.DeviceType) + platform = convert_to_protobuf(platform, pb.Platform) + site = convert_to_protobuf(site, pb.Site) + role = convert_to_protobuf(role, pb.DeviceRole) + + # apply shortcuts + if manufacturer is not None: + if platform is not None and not platform.HasField('manufacturer'): + platform.manufacturer.CopyFrom(manufacturer) + if device_type is not None and not device_type.HasField('manufacturer'): + device_type.manufacturer.CopyFrom(manufacturer) + if device_type is not None: + if device is not None and not device.HasField('device_type'): + device.device_type.CopyFrom(device_type) + if platform is not None: + if device is not None and not device.HasField('platform'): + device.platform.CopyFrom(platform) + if site is not None: + if device is not None and not device.HasField('site'): + device.site.CopyFrom(site) + if role is not None: + if device is not None and not device.HasField('role'): + device.role.CopyFrom(role) + return pb.Interface( + device=device, + module=module, + name=name, + label=label, + type=type, + enabled=enabled, + parent=parent, + bridge=bridge, + lag=lag, + mtu=mtu, + primary_mac_address=primary_mac_address, + speed=speed, + duplex=duplex, + wwn=wwn, + mgmt_only=mgmt_only, + description=description, + mode=mode, + rf_role=rf_role, + rf_channel=rf_channel, + poe_mode=poe_mode, + poe_type=poe_type, + rf_channel_frequency=rf_channel_frequency, + rf_channel_width=rf_channel_width, + tx_power=tx_power, + untagged_vlan=untagged_vlan, + qinq_svlan=qinq_svlan, + vlan_translation_policy=vlan_translation_policy, + mark_connected=mark_connected, + vrf=vrf, + tags=tags, + custom_fields=custom_fields, + ) + + +class InventoryItem: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.InventoryItem.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + parent: str | InventoryItem | pb.InventoryItem | None = None, + name: str | None = None, + label: str | None = None, + status: str | None = None, + role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + part_id: str | None = None, + serial: str | None = None, + asset_tag: str | None = None, + discovered: bool | None = None, + description: str | None = None, + component_console_port: str | ConsolePort | pb.ConsolePort | None = None, + component_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + component_front_port: str | FrontPort | pb.FrontPort | None = None, + component_interface: str | Interface | pb.Interface | None = None, + component_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + component_power_port: str | PowerPort | pb.PowerPort | None = None, + component_rear_port: str | RearPort | pb.RearPort | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.InventoryItem: + """Create a new InventoryItem.""" + device = convert_to_protobuf(device, pb.Device) + parent = convert_to_protobuf(parent, pb.InventoryItem) + role = convert_to_protobuf(role, pb.InventoryItemRole) + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + component_console_port = convert_to_protobuf(component_console_port, pb.ConsolePort) + component_console_server_port = convert_to_protobuf(component_console_server_port, pb.ConsoleServerPort) + component_front_port = convert_to_protobuf(component_front_port, pb.FrontPort) + component_interface = convert_to_protobuf(component_interface, pb.Interface) + component_power_outlet = convert_to_protobuf(component_power_outlet, pb.PowerOutlet) + component_power_port = convert_to_protobuf(component_power_port, pb.PowerPort) + component_rear_port = convert_to_protobuf(component_rear_port, pb.RearPort) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.InventoryItem( + device=device, + parent=parent, + name=name, + label=label, + status=status, + role=role, + manufacturer=manufacturer, + part_id=part_id, + serial=serial, + asset_tag=asset_tag, + discovered=discovered, + description=description, + component_console_port=component_console_port, + component_console_server_port=component_console_server_port, + component_front_port=component_front_port, + component_interface=component_interface, + component_power_outlet=component_power_outlet, + component_power_port=component_power_port, + component_rear_port=component_rear_port, + tags=tags, + custom_fields=custom_fields, + ) + + +class InventoryItemRole: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.InventoryItemRole.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + color: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.InventoryItemRole: + """Create a new InventoryItemRole.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.InventoryItemRole( + name=name, + slug=slug, + color=color, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class L2VPN: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.L2VPN.""" + + def __new__( + cls, + identifier: int | None = None, + name: str | None = None, + slug: str | None = None, + type: str | None = None, + description: str | None = None, + comments: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.L2VPN: + """Create a new L2VPN.""" + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.L2VPN( + identifier=identifier, + name=name, + slug=slug, + type=type, + description=description, + comments=comments, + tenant=tenant, + tags=tags, + custom_fields=custom_fields, + ) + + +class L2VPNTermination: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.L2VPNTermination.""" + + def __new__( + cls, + l2vpn: str | L2VPN | pb.L2VPN | None = None, + assigned_object_interface: str | Interface | pb.Interface | None = None, + assigned_object_vlan: str | VLAN | pb.VLAN | None = None, + assigned_object_vm_interface: str | VMInterface | pb.VMInterface | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.L2VPNTermination: + """Create a new L2VPNTermination.""" + l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) + assigned_object_interface = convert_to_protobuf(assigned_object_interface, pb.Interface) + assigned_object_vlan = convert_to_protobuf(assigned_object_vlan, pb.VLAN) + assigned_object_vm_interface = convert_to_protobuf(assigned_object_vm_interface, pb.VMInterface) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.L2VPNTermination( + l2vpn=l2vpn, + assigned_object_interface=assigned_object_interface, + assigned_object_vlan=assigned_object_vlan, + assigned_object_vm_interface=assigned_object_vm_interface, + tags=tags, + custom_fields=custom_fields, + ) + + +class Location: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Location.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + site: str | Site | pb.Site | None = None, + parent: str | Location | pb.Location | None = None, + status: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + facility: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Location: + """Create a new Location.""" + site = convert_to_protobuf(site, pb.Site) + parent = convert_to_protobuf(parent, pb.Location) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Location( + name=name, + slug=slug, + site=site, + parent=parent, + status=status, + tenant=tenant, + facility=facility, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class MACAddress: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.MACAddress.""" + + def __new__( + cls, + mac_address: str | None = None, + assigned_object_interface: str | Interface | pb.Interface | None = None, + assigned_object_vm_interface: str | VMInterface | pb.VMInterface | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.MACAddress: + """Create a new MACAddress.""" + assigned_object_interface = convert_to_protobuf(assigned_object_interface, pb.Interface) + assigned_object_vm_interface = convert_to_protobuf(assigned_object_vm_interface, pb.VMInterface) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.MACAddress( + mac_address=mac_address, + assigned_object_interface=assigned_object_interface, + assigned_object_vm_interface=assigned_object_vm_interface, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Manufacturer: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Manufacturer.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Manufacturer: + """Create a new Manufacturer.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Manufacturer( + name=name, + slug=slug, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Module: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Module.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module_bay: str | ModuleBay | pb.ModuleBay | None = None, + module_type: str | ModuleType | pb.ModuleType | None = None, + status: str | None = None, + serial: str | None = None, + asset_tag: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Module: + """Create a new Module.""" + device = convert_to_protobuf(device, pb.Device) + module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) + module_type = convert_to_protobuf(module_type, pb.ModuleType) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Module( + device=device, + module_bay=module_bay, + module_type=module_type, + status=status, + serial=serial, + asset_tag=asset_tag, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ModuleBay: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ModuleBay.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + installed_module: str | Module | pb.Module | None = None, + label: str | None = None, + position: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ModuleBay: + """Create a new ModuleBay.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + installed_module = convert_to_protobuf(installed_module, pb.Module) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ModuleBay( + device=device, + module=module, + name=name, + installed_module=installed_module, + label=label, + position=position, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class ModuleType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ModuleType.""" + + def __new__( + cls, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + model: str | None = None, + part_number: str | None = None, + airflow: str | None = None, + weight: float | None = None, + weight_unit: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ModuleType: + """Create a new ModuleType.""" + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ModuleType( + manufacturer=manufacturer, + model=model, + part_number=part_number, + airflow=airflow, + weight=weight, + weight_unit=weight_unit, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Platform: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Platform.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Platform: + """Create a new Platform.""" + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Platform( + name=name, + slug=slug, + manufacturer=manufacturer, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class PowerFeed: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.PowerFeed.""" + + def __new__( + cls, + power_panel: str | PowerPanel | pb.PowerPanel | None = None, + rack: str | Rack | pb.Rack | None = None, + name: str | None = None, + status: str | None = None, + type: str | None = None, + supply: str | None = None, + phase: str | None = None, + voltage: int | None = None, + amperage: int | None = None, + max_utilization: int | None = None, + mark_connected: bool | None = None, + description: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.PowerFeed: + """Create a new PowerFeed.""" + power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) + rack = convert_to_protobuf(rack, pb.Rack) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.PowerFeed( + power_panel=power_panel, + rack=rack, + name=name, + status=status, + type=type, + supply=supply, + phase=phase, + voltage=voltage, + amperage=amperage, + max_utilization=max_utilization, + mark_connected=mark_connected, + description=description, + tenant=tenant, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class PowerOutlet: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.PowerOutlet.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + color: str | None = None, + power_port: str | PowerPort | pb.PowerPort | None = None, + feed_leg: str | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.PowerOutlet: + """Create a new PowerOutlet.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + power_port = convert_to_protobuf(power_port, pb.PowerPort) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.PowerOutlet( + device=device, + module=module, + name=name, + label=label, + type=type, + color=color, + power_port=power_port, + feed_leg=feed_leg, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class PowerPanel: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.PowerPanel.""" + + def __new__( + cls, + site: str | Site | pb.Site | None = None, + location: str | Location | pb.Location | None = None, + name: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.PowerPanel: + """Create a new PowerPanel.""" + site = convert_to_protobuf(site, pb.Site) + location = convert_to_protobuf(location, pb.Location) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.PowerPanel( + site=site, + location=location, + name=name, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class PowerPort: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.PowerPort.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + maximum_draw: int | None = None, + allocated_draw: int | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.PowerPort: + """Create a new PowerPort.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.PowerPort( + device=device, + module=module, + name=name, + label=label, + type=type, + maximum_draw=maximum_draw, + allocated_draw=allocated_draw, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class Prefix: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Prefix.""" + + def __new__( + cls, + prefix: str | None = None, + vrf: str | VRF | pb.VRF | None = None, + scope_location: str | Location | pb.Location | None = None, + scope_region: str | Region | pb.Region | None = None, + scope_site: str | Site | pb.Site | None = None, + scope_site_group: str | SiteGroup | pb.SiteGroup | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + vlan: str | VLAN | pb.VLAN | None = None, + status: str | None = None, + role: str | Role | pb.Role | None = None, + is_pool: bool | None = None, + mark_utilized: bool | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Prefix: + """Create a new Prefix.""" + vrf = convert_to_protobuf(vrf, pb.VRF) + scope_location = convert_to_protobuf(scope_location, pb.Location) + scope_region = convert_to_protobuf(scope_region, pb.Region) + scope_site = convert_to_protobuf(scope_site, pb.Site) + scope_site_group = convert_to_protobuf(scope_site_group, pb.SiteGroup) + tenant = convert_to_protobuf(tenant, pb.Tenant) + vlan = convert_to_protobuf(vlan, pb.VLAN) + role = convert_to_protobuf(role, pb.Role) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Prefix( + prefix=prefix, + vrf=vrf, + scope_location=scope_location, + scope_region=scope_region, + scope_site=scope_site, + scope_site_group=scope_site_group, + tenant=tenant, + vlan=vlan, + status=status, + role=role, + is_pool=is_pool, + mark_utilized=mark_utilized, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Provider: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Provider.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Provider: + """Create a new Provider.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Provider( + name=name, + slug=slug, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ProviderAccount: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ProviderAccount.""" + + def __new__( + cls, + provider: str | Provider | pb.Provider | None = None, + name: str | None = None, + account: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ProviderAccount: + """Create a new ProviderAccount.""" + provider = convert_to_protobuf(provider, pb.Provider) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ProviderAccount( + provider=provider, + name=name, + account=account, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class ProviderNetwork: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.ProviderNetwork.""" + + def __new__( + cls, + provider: str | Provider | pb.Provider | None = None, + name: str | None = None, + service_id: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.ProviderNetwork: + """Create a new ProviderNetwork.""" + provider = convert_to_protobuf(provider, pb.Provider) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.ProviderNetwork( + provider=provider, + name=name, + service_id=service_id, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class RIR: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RIR.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + is_private: bool | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RIR: + """Create a new RIR.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RIR( + name=name, + slug=slug, + is_private=is_private, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Rack: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Rack.""" + + def __new__( + cls, + name: str | None = None, + facility_id: str | None = None, + site: str | Site | pb.Site | None = None, + location: str | Location | pb.Location | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + status: str | None = None, + role: str | RackRole | pb.RackRole | None = None, + serial: str | None = None, + asset_tag: str | None = None, + rack_type: str | RackType | pb.RackType | None = None, + form_factor: str | None = None, + width: int | None = None, + u_height: int | None = None, + starting_unit: int | None = None, + weight: float | None = None, + max_weight: int | None = None, + weight_unit: str | None = None, + desc_units: bool | None = None, + outer_width: int | None = None, + outer_depth: int | None = None, + outer_unit: str | None = None, + mounting_depth: int | None = None, + airflow: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Rack: + """Create a new Rack.""" + site = convert_to_protobuf(site, pb.Site) + location = convert_to_protobuf(location, pb.Location) + tenant = convert_to_protobuf(tenant, pb.Tenant) + role = convert_to_protobuf(role, pb.RackRole) + rack_type = convert_to_protobuf(rack_type, pb.RackType) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Rack( + name=name, + facility_id=facility_id, + site=site, + location=location, + tenant=tenant, + status=status, + role=role, + serial=serial, + asset_tag=asset_tag, + rack_type=rack_type, + form_factor=form_factor, + width=width, + u_height=u_height, + starting_unit=starting_unit, + weight=weight, + max_weight=max_weight, + weight_unit=weight_unit, + desc_units=desc_units, + outer_width=outer_width, + outer_depth=outer_depth, + outer_unit=outer_unit, + mounting_depth=mounting_depth, + airflow=airflow, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class RackReservation: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RackReservation.""" + + def __new__( + cls, + rack: str | Rack | pb.Rack | None = None, + units: list[int] | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RackReservation: + """Create a new RackReservation.""" + rack = convert_to_protobuf(rack, pb.Rack) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RackReservation( + rack=rack, + units=units, + tenant=tenant, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class RackRole: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RackRole.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + color: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RackRole: + """Create a new RackRole.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RackRole( + name=name, + slug=slug, + color=color, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class RackType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RackType.""" + + def __new__( + cls, + manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + model: str | None = None, + slug: str | None = None, + description: str | None = None, + form_factor: str | None = None, + width: int | None = None, + u_height: int | None = None, + starting_unit: int | None = None, + desc_units: bool | None = None, + outer_width: int | None = None, + outer_depth: int | None = None, + outer_unit: str | None = None, + weight: float | None = None, + max_weight: int | None = None, + weight_unit: str | None = None, + mounting_depth: int | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RackType: + """Create a new RackType.""" + manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RackType( + manufacturer=manufacturer, + model=model, + slug=slug, + description=description, + form_factor=form_factor, + width=width, + u_height=u_height, + starting_unit=starting_unit, + desc_units=desc_units, + outer_width=outer_width, + outer_depth=outer_depth, + outer_unit=outer_unit, + weight=weight, + max_weight=max_weight, + weight_unit=weight_unit, + mounting_depth=mounting_depth, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class RearPort: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RearPort.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + module: str | Module | pb.Module | None = None, + name: str | None = None, + label: str | None = None, + type: str | None = None, + color: str | None = None, + positions: int | None = None, + description: str | None = None, + mark_connected: bool | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RearPort: + """Create a new RearPort.""" + device = convert_to_protobuf(device, pb.Device) + module = convert_to_protobuf(module, pb.Module) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RearPort( + device=device, + module=module, + name=name, + label=label, + type=type, + color=color, + positions=positions, + description=description, + mark_connected=mark_connected, + tags=tags, + custom_fields=custom_fields, + ) + + +class Region: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Region.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + parent: str | Region | pb.Region | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Region: + """Create a new Region.""" + parent = convert_to_protobuf(parent, pb.Region) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Region( + name=name, + slug=slug, + parent=parent, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Role: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Role.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + weight: int | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Role: + """Create a new Role.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Role( + name=name, + slug=slug, + weight=weight, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class RouteTarget: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.RouteTarget.""" + + def __new__( + cls, + name: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.RouteTarget: + """Create a new RouteTarget.""" + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.RouteTarget( + name=name, + tenant=tenant, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Service: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Service.""" + + def __new__( + cls, + device: str | Device | pb.Device | None = None, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + name: str | None = None, + protocol: str | None = None, + ports: list[int] | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Service: + """Create a new Service.""" + device = convert_to_protobuf(device, pb.Device) + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Service( + device=device, + virtual_machine=virtual_machine, + name=name, + protocol=protocol, + ports=ports, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class Site: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Site.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + status: str | None = None, + region: str | Region | pb.Region | None = None, + group: str | SiteGroup | pb.SiteGroup | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + facility: str | None = None, + time_zone: str | None = None, + description: str | None = None, + physical_address: str | None = None, + shipping_address: str | None = None, + latitude: float | None = None, + longitude: float | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Site: + """Create a new Site.""" + region = convert_to_protobuf(region, pb.Region) + group = convert_to_protobuf(group, pb.SiteGroup) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Site( + name=name, + slug=slug, + status=status, + region=region, + group=group, + tenant=tenant, + facility=facility, + time_zone=time_zone, + description=description, + physical_address=physical_address, + shipping_address=shipping_address, + latitude=latitude, + longitude=longitude, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class SiteGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.SiteGroup.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + parent: str | SiteGroup | pb.SiteGroup | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.SiteGroup: + """Create a new SiteGroup.""" + parent = convert_to_protobuf(parent, pb.SiteGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.SiteGroup( + name=name, + slug=slug, + parent=parent, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Tag: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Tag.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + color: str | None = None, + ) -> pb.Tag: + """Create a new Tag.""" + return pb.Tag( + name=name, + slug=slug, + color=color, + ) + + +class Tenant: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Tenant.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + group: str | TenantGroup | pb.TenantGroup | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Tenant: + """Create a new Tenant.""" + group = convert_to_protobuf(group, pb.TenantGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Tenant( + name=name, + slug=slug, + group=group, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class TenantGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.TenantGroup.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + parent: str | TenantGroup | pb.TenantGroup | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.TenantGroup: + """Create a new TenantGroup.""" + parent = convert_to_protobuf(parent, pb.TenantGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.TenantGroup( + name=name, + slug=slug, + parent=parent, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class Tunnel: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.Tunnel.""" + + def __new__( + cls, + name: str | None = None, + status: str | None = None, + group: str | TunnelGroup | pb.TunnelGroup | None = None, + encapsulation: str | None = None, + ipsec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + tunnel_id: int | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.Tunnel: + """Create a new Tunnel.""" + group = convert_to_protobuf(group, pb.TunnelGroup) + ipsec_profile = convert_to_protobuf(ipsec_profile, pb.IPSecProfile) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.Tunnel( + name=name, + status=status, + group=group, + encapsulation=encapsulation, + ipsec_profile=ipsec_profile, + tenant=tenant, + tunnel_id=tunnel_id, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) + + +class TunnelGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.TunnelGroup.""" + + def __new__( + cls, + name: str | None = None, + slug: str | None = None, + description: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.TunnelGroup: + """Create a new TunnelGroup.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.TunnelGroup( + name=name, + slug=slug, + description=description, + tags=tags, + custom_fields=custom_fields, + ) + + +class TunnelTermination: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.TunnelTermination.""" + + def __new__( + cls, + tunnel: str | Tunnel | pb.Tunnel | None = None, + role: str | None = None, + termination_asn: str | ASN | pb.ASN | None = None, + termination_asn_range: str | ASNRange | pb.ASNRange | None = None, + termination_aggregate: str | Aggregate | pb.Aggregate | None = None, + termination_cable: str | Cable | pb.Cable | None = None, + termination_cable_path: str | CablePath | pb.CablePath | None = None, + termination_cable_termination: str | CableTermination | pb.CableTermination | None = None, + termination_circuit: str | Circuit | pb.Circuit | None = None, + termination_circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + termination_circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + termination_circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, + termination_circuit_type: str | CircuitType | pb.CircuitType | None = None, + termination_cluster: str | Cluster | pb.Cluster | None = None, + termination_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + termination_cluster_type: str | ClusterType | pb.ClusterType | None = None, + termination_console_port: str | ConsolePort | pb.ConsolePort | None = None, + termination_console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + termination_contact: str | Contact | pb.Contact | None = None, + termination_contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, + termination_contact_group: str | ContactGroup | pb.ContactGroup | None = None, + termination_contact_role: str | ContactRole | pb.ContactRole | None = None, + termination_device: str | Device | pb.Device | None = None, + termination_device_bay: str | DeviceBay | pb.DeviceBay | None = None, + termination_device_role: str | DeviceRole | pb.DeviceRole | None = None, + termination_device_type: str | DeviceType | pb.DeviceType | None = None, + termination_fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, + termination_fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, + termination_front_port: str | FrontPort | pb.FrontPort | None = None, + termination_ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, + termination_ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, + termination_ip_address: str | IPAddress | pb.IPAddress | None = None, + termination_ip_range: str | IPRange | pb.IPRange | None = None, + termination_ip_sec_policy: str | IPSecPolicy | pb.IPSecPolicy | None = None, + termination_ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, + termination_ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, + termination_interface: str | Interface | pb.Interface | None = None, + termination_inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + termination_inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, + termination_l2vpn: str | L2VPN | pb.L2VPN | None = None, + termination_l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, + termination_location: str | Location | pb.Location | None = None, + termination_mac_address: str | MACAddress | pb.MACAddress | None = None, + termination_manufacturer: str | Manufacturer | pb.Manufacturer | None = None, + termination_module: str | Module | pb.Module | None = None, + termination_module_bay: str | ModuleBay | pb.ModuleBay | None = None, + termination_module_type: str | ModuleType | pb.ModuleType | None = None, + termination_platform: str | Platform | pb.Platform | None = None, + termination_power_feed: str | PowerFeed | pb.PowerFeed | None = None, + termination_power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, + termination_power_panel: str | PowerPanel | pb.PowerPanel | None = None, + termination_power_port: str | PowerPort | pb.PowerPort | None = None, + termination_prefix: str | Prefix | pb.Prefix | None = None, + termination_provider: str | Provider | pb.Provider | None = None, + termination_provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + termination_provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + termination_rir: str | RIR | pb.RIR | None = None, + termination_rack: str | Rack | pb.Rack | None = None, + termination_rack_reservation: str | RackReservation | pb.RackReservation | None = None, + termination_rack_role: str | RackRole | pb.RackRole | None = None, + termination_rack_type: str | RackType | pb.RackType | None = None, + termination_rear_port: str | RearPort | pb.RearPort | None = None, + termination_region: str | Region | pb.Region | None = None, + termination_role: str | Role | pb.Role | None = None, + termination_route_target: str | RouteTarget | pb.RouteTarget | None = None, + termination_service: str | Service | pb.Service | None = None, + termination_site: str | Site | pb.Site | None = None, + termination_site_group: str | SiteGroup | pb.SiteGroup | None = None, + termination_tag: str | Tag | pb.Tag | None = None, + termination_tenant: str | Tenant | pb.Tenant | None = None, + termination_tenant_group: str | TenantGroup | pb.TenantGroup | None = None, + termination_tunnel: str | Tunnel | pb.Tunnel | None = None, + termination_tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + termination_tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + termination_vlan: str | VLAN | pb.VLAN | None = None, + termination_vlan_group: str | VLANGroup | pb.VLANGroup | None = None, + termination_vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + termination_vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + termination_vm_interface: str | VMInterface | pb.VMInterface | None = None, + termination_vrf: str | VRF | pb.VRF | None = None, + termination_virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, + termination_virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + termination_virtual_circuit_termination: str | VirtualCircuitTermination | pb.VirtualCircuitTermination | None = None, + termination_virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, + termination_virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, + termination_virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + termination_virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + termination_wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + termination_wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + termination_wireless_link: str | WirelessLink | pb.WirelessLink | None = None, + outside_ip: str | IPAddress | pb.IPAddress | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.TunnelTermination: + """Create a new TunnelTermination.""" + tunnel = convert_to_protobuf(tunnel, pb.Tunnel) + termination_asn = convert_to_protobuf(termination_asn, pb.ASN) + termination_asn_range = convert_to_protobuf(termination_asn_range, pb.ASNRange) + termination_aggregate = convert_to_protobuf(termination_aggregate, pb.Aggregate) + termination_cable = convert_to_protobuf(termination_cable, pb.Cable) + termination_cable_path = convert_to_protobuf(termination_cable_path, pb.CablePath) + termination_cable_termination = convert_to_protobuf(termination_cable_termination, pb.CableTermination) + termination_circuit = convert_to_protobuf(termination_circuit, pb.Circuit) + termination_circuit_group = convert_to_protobuf(termination_circuit_group, pb.CircuitGroup) + termination_circuit_group_assignment = convert_to_protobuf(termination_circuit_group_assignment, pb.CircuitGroupAssignment) + termination_circuit_termination = convert_to_protobuf(termination_circuit_termination, pb.CircuitTermination) + termination_circuit_type = convert_to_protobuf(termination_circuit_type, pb.CircuitType) + termination_cluster = convert_to_protobuf(termination_cluster, pb.Cluster) + termination_cluster_group = convert_to_protobuf(termination_cluster_group, pb.ClusterGroup) + termination_cluster_type = convert_to_protobuf(termination_cluster_type, pb.ClusterType) + termination_console_port = convert_to_protobuf(termination_console_port, pb.ConsolePort) + termination_console_server_port = convert_to_protobuf(termination_console_server_port, pb.ConsoleServerPort) + termination_contact = convert_to_protobuf(termination_contact, pb.Contact) + termination_contact_assignment = convert_to_protobuf(termination_contact_assignment, pb.ContactAssignment) + termination_contact_group = convert_to_protobuf(termination_contact_group, pb.ContactGroup) + termination_contact_role = convert_to_protobuf(termination_contact_role, pb.ContactRole) + termination_device = convert_to_protobuf(termination_device, pb.Device) + termination_device_bay = convert_to_protobuf(termination_device_bay, pb.DeviceBay) + termination_device_role = convert_to_protobuf(termination_device_role, pb.DeviceRole) + termination_device_type = convert_to_protobuf(termination_device_type, pb.DeviceType) + termination_fhrp_group = convert_to_protobuf(termination_fhrp_group, pb.FHRPGroup) + termination_fhrp_group_assignment = convert_to_protobuf(termination_fhrp_group_assignment, pb.FHRPGroupAssignment) + termination_front_port = convert_to_protobuf(termination_front_port, pb.FrontPort) + termination_ike_policy = convert_to_protobuf(termination_ike_policy, pb.IKEPolicy) + termination_ike_proposal = convert_to_protobuf(termination_ike_proposal, pb.IKEProposal) + termination_ip_address = convert_to_protobuf(termination_ip_address, pb.IPAddress) + termination_ip_range = convert_to_protobuf(termination_ip_range, pb.IPRange) + termination_ip_sec_policy = convert_to_protobuf(termination_ip_sec_policy, pb.IPSecPolicy) + termination_ip_sec_profile = convert_to_protobuf(termination_ip_sec_profile, pb.IPSecProfile) + termination_ip_sec_proposal = convert_to_protobuf(termination_ip_sec_proposal, pb.IPSecProposal) + termination_interface = convert_to_protobuf(termination_interface, pb.Interface) + termination_inventory_item = convert_to_protobuf(termination_inventory_item, pb.InventoryItem) + termination_inventory_item_role = convert_to_protobuf(termination_inventory_item_role, pb.InventoryItemRole) + termination_l2vpn = convert_to_protobuf(termination_l2vpn, pb.L2VPN) + termination_l2vpn_termination = convert_to_protobuf(termination_l2vpn_termination, pb.L2VPNTermination) + termination_location = convert_to_protobuf(termination_location, pb.Location) + termination_mac_address = convert_to_protobuf(termination_mac_address, pb.MACAddress) + termination_manufacturer = convert_to_protobuf(termination_manufacturer, pb.Manufacturer) + termination_module = convert_to_protobuf(termination_module, pb.Module) + termination_module_bay = convert_to_protobuf(termination_module_bay, pb.ModuleBay) + termination_module_type = convert_to_protobuf(termination_module_type, pb.ModuleType) + termination_platform = convert_to_protobuf(termination_platform, pb.Platform) + termination_power_feed = convert_to_protobuf(termination_power_feed, pb.PowerFeed) + termination_power_outlet = convert_to_protobuf(termination_power_outlet, pb.PowerOutlet) + termination_power_panel = convert_to_protobuf(termination_power_panel, pb.PowerPanel) + termination_power_port = convert_to_protobuf(termination_power_port, pb.PowerPort) + termination_prefix = convert_to_protobuf(termination_prefix, pb.Prefix) + termination_provider = convert_to_protobuf(termination_provider, pb.Provider) + termination_provider_account = convert_to_protobuf(termination_provider_account, pb.ProviderAccount) + termination_provider_network = convert_to_protobuf(termination_provider_network, pb.ProviderNetwork) + termination_rir = convert_to_protobuf(termination_rir, pb.RIR) + termination_rack = convert_to_protobuf(termination_rack, pb.Rack) + termination_rack_reservation = convert_to_protobuf(termination_rack_reservation, pb.RackReservation) + termination_rack_role = convert_to_protobuf(termination_rack_role, pb.RackRole) + termination_rack_type = convert_to_protobuf(termination_rack_type, pb.RackType) + termination_rear_port = convert_to_protobuf(termination_rear_port, pb.RearPort) + termination_region = convert_to_protobuf(termination_region, pb.Region) + termination_role = convert_to_protobuf(termination_role, pb.Role) + termination_route_target = convert_to_protobuf(termination_route_target, pb.RouteTarget) + termination_service = convert_to_protobuf(termination_service, pb.Service) + termination_site = convert_to_protobuf(termination_site, pb.Site) + termination_site_group = convert_to_protobuf(termination_site_group, pb.SiteGroup) + termination_tag = convert_to_protobuf(termination_tag, pb.Tag) + termination_tenant = convert_to_protobuf(termination_tenant, pb.Tenant) + termination_tenant_group = convert_to_protobuf(termination_tenant_group, pb.TenantGroup) + termination_tunnel = convert_to_protobuf(termination_tunnel, pb.Tunnel) + termination_tunnel_group = convert_to_protobuf(termination_tunnel_group, pb.TunnelGroup) + termination_tunnel_termination = convert_to_protobuf(termination_tunnel_termination, pb.TunnelTermination) + termination_vlan = convert_to_protobuf(termination_vlan, pb.VLAN) + termination_vlan_group = convert_to_protobuf(termination_vlan_group, pb.VLANGroup) + termination_vlan_translation_policy = convert_to_protobuf(termination_vlan_translation_policy, pb.VLANTranslationPolicy) + termination_vlan_translation_rule = convert_to_protobuf(termination_vlan_translation_rule, pb.VLANTranslationRule) + termination_vm_interface = convert_to_protobuf(termination_vm_interface, pb.VMInterface) + termination_vrf = convert_to_protobuf(termination_vrf, pb.VRF) + termination_virtual_chassis = convert_to_protobuf(termination_virtual_chassis, pb.VirtualChassis) + termination_virtual_circuit = convert_to_protobuf(termination_virtual_circuit, pb.VirtualCircuit) + termination_virtual_circuit_termination = convert_to_protobuf(termination_virtual_circuit_termination, pb.VirtualCircuitTermination) + termination_virtual_circuit_type = convert_to_protobuf(termination_virtual_circuit_type, pb.VirtualCircuitType) + termination_virtual_device_context = convert_to_protobuf(termination_virtual_device_context, pb.VirtualDeviceContext) + termination_virtual_disk = convert_to_protobuf(termination_virtual_disk, pb.VirtualDisk) + termination_virtual_machine = convert_to_protobuf(termination_virtual_machine, pb.VirtualMachine) + termination_wireless_lan = convert_to_protobuf(termination_wireless_lan, pb.WirelessLAN) + termination_wireless_lan_group = convert_to_protobuf(termination_wireless_lan_group, pb.WirelessLANGroup) + termination_wireless_link = convert_to_protobuf(termination_wireless_link, pb.WirelessLink) + outside_ip = convert_to_protobuf(outside_ip, pb.IPAddress) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.TunnelTermination( + tunnel=tunnel, + role=role, + termination_asn=termination_asn, + termination_asn_range=termination_asn_range, + termination_aggregate=termination_aggregate, + termination_cable=termination_cable, + termination_cable_path=termination_cable_path, + termination_cable_termination=termination_cable_termination, + termination_circuit=termination_circuit, + termination_circuit_group=termination_circuit_group, + termination_circuit_group_assignment=termination_circuit_group_assignment, + termination_circuit_termination=termination_circuit_termination, + termination_circuit_type=termination_circuit_type, + termination_cluster=termination_cluster, + termination_cluster_group=termination_cluster_group, + termination_cluster_type=termination_cluster_type, + termination_console_port=termination_console_port, + termination_console_server_port=termination_console_server_port, + termination_contact=termination_contact, + termination_contact_assignment=termination_contact_assignment, + termination_contact_group=termination_contact_group, + termination_contact_role=termination_contact_role, + termination_device=termination_device, + termination_device_bay=termination_device_bay, + termination_device_role=termination_device_role, + termination_device_type=termination_device_type, + termination_fhrp_group=termination_fhrp_group, + termination_fhrp_group_assignment=termination_fhrp_group_assignment, + termination_front_port=termination_front_port, + termination_ike_policy=termination_ike_policy, + termination_ike_proposal=termination_ike_proposal, + termination_ip_address=termination_ip_address, + termination_ip_range=termination_ip_range, + termination_ip_sec_policy=termination_ip_sec_policy, + termination_ip_sec_profile=termination_ip_sec_profile, + termination_ip_sec_proposal=termination_ip_sec_proposal, + termination_interface=termination_interface, + termination_inventory_item=termination_inventory_item, + termination_inventory_item_role=termination_inventory_item_role, + termination_l2vpn=termination_l2vpn, + termination_l2vpn_termination=termination_l2vpn_termination, + termination_location=termination_location, + termination_mac_address=termination_mac_address, + termination_manufacturer=termination_manufacturer, + termination_module=termination_module, + termination_module_bay=termination_module_bay, + termination_module_type=termination_module_type, + termination_platform=termination_platform, + termination_power_feed=termination_power_feed, + termination_power_outlet=termination_power_outlet, + termination_power_panel=termination_power_panel, + termination_power_port=termination_power_port, + termination_prefix=termination_prefix, + termination_provider=termination_provider, + termination_provider_account=termination_provider_account, + termination_provider_network=termination_provider_network, + termination_rir=termination_rir, + termination_rack=termination_rack, + termination_rack_reservation=termination_rack_reservation, + termination_rack_role=termination_rack_role, + termination_rack_type=termination_rack_type, + termination_rear_port=termination_rear_port, + termination_region=termination_region, + termination_role=termination_role, + termination_route_target=termination_route_target, + termination_service=termination_service, + termination_site=termination_site, + termination_site_group=termination_site_group, + termination_tag=termination_tag, + termination_tenant=termination_tenant, + termination_tenant_group=termination_tenant_group, + termination_tunnel=termination_tunnel, + termination_tunnel_group=termination_tunnel_group, + termination_tunnel_termination=termination_tunnel_termination, + termination_vlan=termination_vlan, + termination_vlan_group=termination_vlan_group, + termination_vlan_translation_policy=termination_vlan_translation_policy, + termination_vlan_translation_rule=termination_vlan_translation_rule, + termination_vm_interface=termination_vm_interface, + termination_vrf=termination_vrf, + termination_virtual_chassis=termination_virtual_chassis, + termination_virtual_circuit=termination_virtual_circuit, + termination_virtual_circuit_termination=termination_virtual_circuit_termination, + termination_virtual_circuit_type=termination_virtual_circuit_type, + termination_virtual_device_context=termination_virtual_device_context, + termination_virtual_disk=termination_virtual_disk, + termination_virtual_machine=termination_virtual_machine, + termination_wireless_lan=termination_wireless_lan, + termination_wireless_lan_group=termination_wireless_lan_group, + termination_wireless_link=termination_wireless_link, + outside_ip=outside_ip, + tags=tags, + custom_fields=custom_fields, ) -class Role: - """Role message wrapper.""" +class VLAN: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VLAN.""" def __new__( cls, + site: str | Site | pb.Site | None = None, + group: str | VLANGroup | pb.VLANGroup | None = None, + vid: int | None = None, name: str | None = None, - slug: str | None = None, - color: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + status: str | None = None, + role: str | Role | pb.Role | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> RolePb: - """Create a new Role protobuf message.""" - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return RolePb( + qinq_role: str | None = None, + qinq_svlan: str | VLAN | pb.VLAN | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VLAN: + """Create a new VLAN.""" + site = convert_to_protobuf(site, pb.Site) + group = convert_to_protobuf(group, pb.VLANGroup) + tenant = convert_to_protobuf(tenant, pb.Tenant) + role = convert_to_protobuf(role, pb.Role) + qinq_svlan = convert_to_protobuf(qinq_svlan, pb.VLAN) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VLAN( + site=site, + group=group, + vid=vid, name=name, - slug=slug, - color=color, + tenant=tenant, + status=status, + role=role, description=description, + qinq_role=qinq_role, + qinq_svlan=qinq_svlan, + comments=comments, tags=tags, + custom_fields=custom_fields, ) -class DeviceType: - """DeviceType message wrapper.""" +class VLANGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VLANGroup.""" def __new__( cls, - model: str | None = None, + name: str | None = None, slug: str | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, + scope_cluster: str | Cluster | pb.Cluster | None = None, + scope_cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, + scope_location: str | Location | pb.Location | None = None, + scope_rack: str | Rack | pb.Rack | None = None, + scope_region: str | Region | pb.Region | None = None, + scope_site: str | Site | pb.Site | None = None, + scope_site_group: str | SiteGroup | pb.SiteGroup | None = None, + vid_ranges: list[int] | None = None, description: str | None = None, - comments: str | None = None, - part_number: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> DeviceTypePb: - """Create a new DeviceType protobuf message.""" - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer - ) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return DeviceTypePb( - model=model, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VLANGroup: + """Create a new VLANGroup.""" + scope_cluster = convert_to_protobuf(scope_cluster, pb.Cluster) + scope_cluster_group = convert_to_protobuf(scope_cluster_group, pb.ClusterGroup) + scope_location = convert_to_protobuf(scope_location, pb.Location) + scope_rack = convert_to_protobuf(scope_rack, pb.Rack) + scope_region = convert_to_protobuf(scope_region, pb.Region) + scope_site = convert_to_protobuf(scope_site, pb.Site) + scope_site_group = convert_to_protobuf(scope_site_group, pb.SiteGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VLANGroup( + name=name, slug=slug, - manufacturer=manufacturer, + scope_cluster=scope_cluster, + scope_cluster_group=scope_cluster_group, + scope_location=scope_location, + scope_rack=scope_rack, + scope_region=scope_region, + scope_site=scope_site, + scope_site_group=scope_site_group, + vid_ranges=vid_ranges, description=description, - comments=comments, - part_number=part_number, tags=tags, + custom_fields=custom_fields, ) -class Device: - """Device message wrapper.""" +class VLANTranslationPolicy: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VLANTranslationPolicy.""" def __new__( cls, name: str | None = None, - device_type: str | DeviceType | DeviceTypePb | None = None, - device_fqdn: str | None = None, - role: str | Role | RolePb | None = None, - platform: str | Platform | PlatformPb | None = None, - serial: str | None = None, - site: str | SitePb | None = None, - asset_tag: str | None = None, - status: str | None = None, description: str | None = None, - comments: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - primary_ip4: str | IPAddressPb | None = None, - primary_ip6: str | IPAddressPb | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, - ) -> DevicePb: - """Create a new Device protobuf message.""" - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer - ) - platform = convert_to_protobuf( - platform, PlatformPb, name=platform, manufacturer=manufacturer - ) - - if ( - isinstance(platform, PlatformPb) - and not platform.HasField("manufacturer") - and manufacturer is not None - ): - platform.manufacturer.CopyFrom(manufacturer) - - site = convert_to_protobuf(site, SitePb, name=site) - device_type = convert_to_protobuf( - device_type, DeviceTypePb, model=device_type, manufacturer=manufacturer + ) -> pb.VLANTranslationPolicy: + """Create a new VLANTranslationPolicy.""" + return pb.VLANTranslationPolicy( + name=name, + description=description, ) - if ( - isinstance(device_type, DeviceTypePb) - and not device_type.HasField("manufacturer") - and manufacturer is not None - ): - device_type.manufacturer.CopyFrom(manufacturer) - - role = convert_to_protobuf(role, RolePb, name=role) - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] +class VLANTranslationRule: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VLANTranslationRule.""" - primary_ip4 = convert_to_protobuf(primary_ip4, IPAddressPb, address=primary_ip4) - primary_ip6 = convert_to_protobuf(primary_ip6, IPAddressPb, address=primary_ip6) - - return DevicePb( - name=name, - device_fqdn=device_fqdn, - device_type=device_type, - role=role, - platform=platform, - serial=serial, - site=site, - asset_tag=asset_tag, - status=status, + def __new__( + cls, + policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + local_vid: int | None = None, + remote_vid: int | None = None, + description: str | None = None, + ) -> pb.VLANTranslationRule: + """Create a new VLANTranslationRule.""" + policy = convert_to_protobuf(policy, pb.VLANTranslationPolicy) + return pb.VLANTranslationRule( + policy=policy, + local_vid=local_vid, + remote_vid=remote_vid, description=description, - comments=comments, - primary_ip4=primary_ip4, - primary_ip6=primary_ip6, - tags=tags, ) -class Interface: - """Interface message wrapper.""" +class VMInterface: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VMInterface.""" def __new__( cls, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, name: str | None = None, - device: str | Device | DevicePb | None = None, - device_type: str | DeviceType | DeviceTypePb | None = None, - role: str | Role | RolePb | None = None, - platform: str | Platform | PlatformPb | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, - site: str | SitePb | None = None, - type: str | None = None, enabled: bool | None = None, + parent: str | VMInterface | pb.VMInterface | None = None, + bridge: str | VMInterface | pb.VMInterface | None = None, mtu: int | None = None, - mac_address: str | None = None, - speed: int | None = None, - wwn: str | None = None, - mgmt_only: bool | None = None, + primary_mac_address: str | MACAddress | pb.MACAddress | None = None, description: str | None = None, - mark_connected: bool | None = None, mode: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> InterfacePb: - """Create a new Interface protobuf message.""" - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer - ) - - platform = convert_to_protobuf( - platform, PlatformPb, name=platform, manufacturer=manufacturer - ) - - if ( - isinstance(platform, PlatformPb) - and not platform.HasField("manufacturer") - and manufacturer is not None - ): - platform.manufacturer.CopyFrom(manufacturer) - - site = convert_to_protobuf(site, SitePb, name=site) - - device_type = convert_to_protobuf( - device_type, DeviceTypePb, model=device_type, manufacturer=manufacturer - ) - - if ( - isinstance(device_type, DeviceTypePb) - and not device_type.HasField("manufacturer") - and manufacturer is not None - ): - device_type.manufacturer.CopyFrom(manufacturer) - - role = convert_to_protobuf(role, RolePb, name=role) - - device = convert_to_protobuf( - device, - DevicePb, - name=device, - device_type=device_type, - platform=platform, - site=site, - role=role, - ) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return InterfacePb( + untagged_vlan: str | VLAN | pb.VLAN | None = None, + qinq_svlan: str | VLAN | pb.VLAN | None = None, + vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, + vrf: str | VRF | pb.VRF | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VMInterface: + """Create a new VMInterface.""" + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) + parent = convert_to_protobuf(parent, pb.VMInterface) + bridge = convert_to_protobuf(bridge, pb.VMInterface) + primary_mac_address = convert_to_protobuf(primary_mac_address, pb.MACAddress) + untagged_vlan = convert_to_protobuf(untagged_vlan, pb.VLAN) + qinq_svlan = convert_to_protobuf(qinq_svlan, pb.VLAN) + vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) + vrf = convert_to_protobuf(vrf, pb.VRF) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VMInterface( + virtual_machine=virtual_machine, name=name, - device=device, - type=type, enabled=enabled, + parent=parent, + bridge=bridge, mtu=mtu, - mac_address=mac_address, - speed=speed, - wwn=wwn, - mgmt_only=mgmt_only, + primary_mac_address=primary_mac_address, description=description, - mark_connected=mark_connected, mode=mode, + untagged_vlan=untagged_vlan, + qinq_svlan=qinq_svlan, + vlan_translation_policy=vlan_translation_policy, + vrf=vrf, tags=tags, + custom_fields=custom_fields, ) -class IPAddress: - """IPAddress message wrapper.""" +class VRF: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VRF.""" def __new__( cls, - address: str | None = None, - interface: str | Interface | InterfacePb | None = None, - device: str | Device | DevicePb | None = None, - device_type: str | DeviceType | DeviceTypePb | None = None, - device_role: str | Role | RolePb | None = None, - platform: str | Platform | PlatformPb | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, - site: str | SitePb | None = None, - status: str | None = None, - role: str | None = None, - dns_name: str | None = None, + name: str | None = None, + rd: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + enforce_unique: bool | None = None, description: str | None = None, comments: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> IPAddressPb: - """Create a new IPAddress protobuf message.""" - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer - ) - - platform = convert_to_protobuf( - platform, PlatformPb, name=platform, manufacturer=manufacturer - ) - - if ( - isinstance(platform, PlatformPb) - and not platform.HasField("manufacturer") - and manufacturer is not None - ): - platform.manufacturer.CopyFrom(manufacturer) - - site = convert_to_protobuf(site, SitePb, name=site) - - device_type = convert_to_protobuf( - device_type, DeviceTypePb, model=device_type, manufacturer=manufacturer - ) - - if ( - isinstance(device_type, DeviceTypePb) - and not device_type.HasField("manufacturer") - and manufacturer is not None - ): - device_type.manufacturer.CopyFrom(manufacturer) - - device_role = convert_to_protobuf(device_role, RolePb, name=device_role) - - device = convert_to_protobuf( - device, - DevicePb, - name=device, - device_type=device_type, - platform=platform, - site=site, - role=device_role, - ) - - interface = convert_to_protobuf( - interface, - InterfacePb, - name=interface, - device=device, - ) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return IPAddressPb( - address=address, - interface=interface, - status=status, - role=role, - dns_name=dns_name, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VRF: + """Create a new VRF.""" + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VRF( + name=name, + rd=rd, + tenant=tenant, + enforce_unique=enforce_unique, description=description, comments=comments, tags=tags, + custom_fields=custom_fields, ) -class Prefix: - """Prefix message wrapper.""" +class VirtualChassis: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualChassis.""" def __new__( cls, - prefix: str | None = None, - site: str | SitePb | None = None, - status: str | None = None, - is_pool: bool | None = None, - mark_utilized: bool | None = None, + name: str | None = None, + domain: str | None = None, + master: str | Device | pb.Device | None = None, description: str | None = None, comments: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> PrefixPb: - """Create a new Prefix protobuf message.""" - site = convert_to_protobuf(site, SitePb, name=site) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return PrefixPb( - prefix=prefix, - site=site, - status=status, - is_pool=is_pool, - mark_utilized=mark_utilized, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualChassis: + """Create a new VirtualChassis.""" + master = convert_to_protobuf(master, pb.Device) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualChassis( + name=name, + domain=domain, + master=master, description=description, comments=comments, tags=tags, + custom_fields=custom_fields, ) -class Site: - """Site message wrapper.""" +class VirtualCircuit: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualCircuit.""" def __new__( cls, - name: str | None = None, - slug: str | None = None, + cid: str | None = None, + provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, + provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, + type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, status: str | None = None, - facility: str | None = None, - time_zone: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, description: str | None = None, comments: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> SitePb: - """Create a new Site protobuf message.""" - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return SitePb( - name=name, - slug=slug, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualCircuit: + """Create a new VirtualCircuit.""" + provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) + provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) + type = convert_to_protobuf(type, pb.VirtualCircuitType) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualCircuit( + cid=cid, + provider_network=provider_network, + provider_account=provider_account, + type=type, status=status, - facility=facility, - time_zone=time_zone, + tenant=tenant, description=description, comments=comments, tags=tags, + custom_fields=custom_fields, ) -class ClusterGroup: - """ClusterGroup message wrapper.""" +class VirtualCircuitTermination: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualCircuitTermination.""" def __new__( cls, - name: str | None = None, - slug: str | None = None, + virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, + role: str | None = None, + interface: str | Interface | pb.Interface | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> ClusterGroupPb: - """Create a new cluster group protobuf message.""" - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return ClusterGroupPb( - name=name, - slug=slug, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualCircuitTermination: + """Create a new VirtualCircuitTermination.""" + virtual_circuit = convert_to_protobuf(virtual_circuit, pb.VirtualCircuit) + interface = convert_to_protobuf(interface, pb.Interface) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualCircuitTermination( + virtual_circuit=virtual_circuit, + role=role, + interface=interface, description=description, tags=tags, + custom_fields=custom_fields, ) -class ClusterType: - """ClusterType message wrapper.""" +class VirtualCircuitType: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualCircuitType.""" def __new__( cls, name: str | None = None, slug: str | None = None, + color: str | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> ClusterTypePb: - """Create a new cluster type protobuf message.""" - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return ClusterTypePb( + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualCircuitType: + """Create a new VirtualCircuitType.""" + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualCircuitType( name=name, slug=slug, + color=color, description=description, tags=tags, + custom_fields=custom_fields, ) -class Cluster: - """Cluster message wrapper.""" +class VirtualDeviceContext: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualDeviceContext.""" def __new__( cls, name: str | None = None, - group: str | ClusterGroup | ClusterGroupPb | None = None, - type: str | ClusterType | ClusterTypePb | None = None, - site: str | Site | SitePb | None = None, + device: str | Device | pb.Device | None = None, + identifier: int | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + primary_ip4: str | IPAddress | pb.IPAddress | None = None, + primary_ip6: str | IPAddress | pb.IPAddress | None = None, status: str | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> ClusterPb: - """Create a new cluster protobuf message.""" - group = convert_to_protobuf(group, ClusterGroupPb, name=group) - - type = convert_to_protobuf(type, ClusterTypePb, name=type) + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualDeviceContext: + """Create a new VirtualDeviceContext.""" + device = convert_to_protobuf(device, pb.Device) + tenant = convert_to_protobuf(tenant, pb.Tenant) + primary_ip4 = convert_to_protobuf(primary_ip4, pb.IPAddress) + primary_ip6 = convert_to_protobuf(primary_ip6, pb.IPAddress) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualDeviceContext( + name=name, + device=device, + identifier=identifier, + tenant=tenant, + primary_ip4=primary_ip4, + primary_ip6=primary_ip6, + status=status, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, + ) - site = convert_to_protobuf(site, SitePb, name=site) - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] +class VirtualDisk: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualDisk.""" - return ClusterPb( + def __new__( + cls, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, + name: str | None = None, + description: str | None = None, + size: int | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualDisk: + """Create a new VirtualDisk.""" + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.VirtualDisk( + virtual_machine=virtual_machine, name=name, - group=group, - type=type, - site=site, - status=status, description=description, + size=size, tags=tags, + custom_fields=custom_fields, ) class VirtualMachine: - """VirtualMachine message wrapper.""" + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.VirtualMachine.""" def __new__( cls, name: str | None = None, status: str | None = None, - site: str | Site | SitePb | None = None, - cluster: str | Cluster | ClusterPb | None = None, - role: str | Role | RolePb | None = None, - device: str | Device | DevicePb | None = None, - platform: str | Platform | PlatformPb | None = None, - primary_ip4: str | IPAddressPb | None = None, - primary_ip6: str | IPAddressPb | None = None, - vcpus: int | None = None, + site: str | Site | pb.Site | None = None, + cluster: str | Cluster | pb.Cluster | None = None, + device: str | Device | pb.Device | None = None, + serial: str | None = None, + role: str | DeviceRole | pb.DeviceRole | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + platform: str | Platform | pb.Platform | None = None, + primary_ip4: str | IPAddress | pb.IPAddress | None = None, + primary_ip6: str | IPAddress | pb.IPAddress | None = None, + vcpus: float | None = None, memory: int | None = None, disk: int | None = None, description: str | None = None, comments: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> VirtualMachinePb: - """Create a new virtual machine protobuf message.""" - site = convert_to_protobuf(site, SitePb, name=site) - - cluster = convert_to_protobuf(cluster, ClusterPb, name=cluster, site=site) - - if ( - isinstance(cluster, ClusterPb) - and not cluster.HasField("site") - and site is not None - ): - cluster.site.CopyFrom(site) - - role = convert_to_protobuf(role, RolePb, name=role) - - platform = convert_to_protobuf(platform, PlatformPb, name=platform) - - device = convert_to_protobuf( - device, DevicePb, name=device, platform=platform, site=site, role=role - ) - - primary_ip4 = convert_to_protobuf(primary_ip4, IPAddressPb, address=primary_ip4) - primary_ip6 = convert_to_protobuf(primary_ip6, IPAddressPb, address=primary_ip6) + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.VirtualMachine: + """Create a new VirtualMachine.""" + site = convert_to_protobuf(site, pb.Site) + cluster = convert_to_protobuf(cluster, pb.Cluster) + device = convert_to_protobuf(device, pb.Device) + role = convert_to_protobuf(role, pb.DeviceRole) + tenant = convert_to_protobuf(tenant, pb.Tenant) + platform = convert_to_protobuf(platform, pb.Platform) + primary_ip4 = convert_to_protobuf(primary_ip4, pb.IPAddress) + primary_ip6 = convert_to_protobuf(primary_ip6, pb.IPAddress) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return VirtualMachinePb( + # apply shortcuts + if platform is not None: + if device is not None and not device.HasField('platform'): + device.platform.CopyFrom(platform) + if site is not None: + if device is not None and not device.HasField('site'): + device.site.CopyFrom(site) + if cluster is not None and not cluster.HasField('scope_site'): + cluster.scope_site.CopyFrom(site) + if role is not None: + if device is not None and not device.HasField('role'): + device.role.CopyFrom(role) + return pb.VirtualMachine( name=name, status=status, - cluster=cluster, site=site, - role=role, + cluster=cluster, device=device, + serial=serial, + role=role, + tenant=tenant, platform=platform, primary_ip4=primary_ip4, primary_ip6=primary_ip6, @@ -598,138 +4835,127 @@ def __new__( description=description, comments=comments, tags=tags, + custom_fields=custom_fields, ) -class VirtualDisk: - """VirtualDisk message wrapper.""" +class WirelessLAN: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.WirelessLAN.""" def __new__( cls, - name: str | None = None, - virtual_machine: str | VirtualMachine | VirtualMachinePb | None = None, - size: int | None = None, + ssid: str | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> VirtualDiskPb: - """Create a new virtual disk protobuf message.""" - virtual_machine = convert_to_protobuf( - virtual_machine, VirtualMachinePb, name=virtual_machine - ) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return VirtualDiskPb( - name=name, - virtual_machine=virtual_machine, - size=size, + group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + status: str | None = None, + vlan: str | VLAN | pb.VLAN | None = None, + scope_location: str | Location | pb.Location | None = None, + scope_region: str | Region | pb.Region | None = None, + scope_site: str | Site | pb.Site | None = None, + scope_site_group: str | SiteGroup | pb.SiteGroup | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + auth_type: str | None = None, + auth_cipher: str | None = None, + auth_psk: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.WirelessLAN: + """Create a new WirelessLAN.""" + group = convert_to_protobuf(group, pb.WirelessLANGroup) + vlan = convert_to_protobuf(vlan, pb.VLAN) + scope_location = convert_to_protobuf(scope_location, pb.Location) + scope_region = convert_to_protobuf(scope_region, pb.Region) + scope_site = convert_to_protobuf(scope_site, pb.Site) + scope_site_group = convert_to_protobuf(scope_site_group, pb.SiteGroup) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.WirelessLAN( + ssid=ssid, description=description, + group=group, + status=status, + vlan=vlan, + scope_location=scope_location, + scope_region=scope_region, + scope_site=scope_site, + scope_site_group=scope_site_group, + tenant=tenant, + auth_type=auth_type, + auth_cipher=auth_cipher, + auth_psk=auth_psk, + comments=comments, tags=tags, + custom_fields=custom_fields, ) -class VMInterface: - """VMInterface message wrapper.""" +class WirelessLANGroup: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.WirelessLANGroup.""" def __new__( cls, name: str | None = None, - virtual_machine: str | VirtualMachine | VirtualMachinePb | None = None, - enabled: bool | None = None, - mtu: int | None = None, - mac_address: str | None = None, + slug: str | None = None, + parent: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, description: str | None = None, - tags: list[str | Tag | TagPb] | None = None, - ) -> VMInterfacePb: - """Create a new virtual interface protobuf message.""" - virtual_machine = convert_to_protobuf( - virtual_machine, VirtualMachinePb, name=virtual_machine - ) - - if isinstance(tags, list) and all(isinstance(t, str) for t in tags): - tags = [TagPb(name=tag) for tag in tags] - - return VMInterfacePb( + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.WirelessLANGroup: + """Create a new WirelessLANGroup.""" + parent = convert_to_protobuf(parent, pb.WirelessLANGroup) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.WirelessLANGroup( name=name, - virtual_machine=virtual_machine, - enabled=enabled, - mtu=mtu, - mac_address=mac_address, + slug=slug, + parent=parent, description=description, tags=tags, + custom_fields=custom_fields, ) -class Entity: - """Entity message wrapper.""" - - def __new__( - cls, - site: str | Site | SitePb | None = None, - platform: str | Platform | PlatformPb | None = None, - manufacturer: str | Manufacturer | ManufacturerPb | None = None, - device: str | Device | DevicePb | None = None, - device_role: str | Role | RolePb | None = None, - device_type: str | DeviceType | DeviceTypePb | None = None, - interface: str | Interface | InterfacePb | None = None, - ip_address: str | IPAddress | IPAddressPb | None = None, - prefix: str | Prefix | PrefixPb | None = None, - cluster_group: str | ClusterGroup | ClusterGroupPb | None = None, - cluster_type: str | ClusterType | ClusterTypePb | None = None, - cluster: str | Cluster | ClusterPb | None = None, - virtual_disk: str | VirtualDisk | VirtualDiskPb | None = None, - vminterface: str | VMInterface | VMInterfacePb | None = None, - virtual_machine: str | VirtualMachine | VirtualMachinePb | None = None, - timestamp: _timestamp_pb2.Timestamp | None = None, - ): - """Create a new Entity protobuf message.""" - site = convert_to_protobuf(site, SitePb, name=site) - platform = convert_to_protobuf(platform, PlatformPb, name=platform) - manufacturer = convert_to_protobuf( - manufacturer, ManufacturerPb, name=manufacturer - ) - device = convert_to_protobuf(device, DevicePb, name=device) - device_role = convert_to_protobuf(device_role, RolePb, name=device_role) - device_type = convert_to_protobuf(device_type, DeviceTypePb, model=device_type) - ip_address = convert_to_protobuf(ip_address, IPAddressPb, address=ip_address) - interface = convert_to_protobuf(interface, InterfacePb, name=interface) - prefix = convert_to_protobuf(prefix, PrefixPb, prefix=prefix) - cluster_group = convert_to_protobuf( - cluster_group, ClusterGroupPb, name=cluster_group - ) - cluster_type = convert_to_protobuf( - cluster_type, ClusterTypePb, name=cluster_type - ) - cluster = convert_to_protobuf(cluster, ClusterPb, name=cluster) - virtual_disk = convert_to_protobuf( - virtual_disk, VirtualDiskPb, name=virtual_disk - ) - vminterface = convert_to_protobuf(vminterface, VMInterfacePb, name=vminterface) - virtual_machine = convert_to_protobuf( - virtual_machine, VirtualMachinePb, name=virtual_machine - ) - - if timestamp is None: - ts = _timestamp_pb2.Timestamp() - ts.GetCurrentTime() - timestamp = ts +class WirelessLink: + """wrapper for netboxlabs.diode.sdk.diode.v1.ingester_pb2.WirelessLink.""" - return EntityPb( - site=site, - platform=platform, - manufacturer=manufacturer, - device=device, - device_role=device_role, - device_type=device_type, - interface=interface, - ip_address=ip_address, - prefix=prefix, - cluster_group=cluster_group, - cluster_type=cluster_type, - cluster=cluster, - virtual_disk=virtual_disk, - vminterface=vminterface, - virtual_machine=virtual_machine, - timestamp=timestamp, + def __new__( + cls, + interface_a: str | Interface | pb.Interface | None = None, + interface_b: str | Interface | pb.Interface | None = None, + ssid: str | None = None, + status: str | None = None, + tenant: str | Tenant | pb.Tenant | None = None, + auth_type: str | None = None, + auth_cipher: str | None = None, + auth_psk: str | None = None, + distance: float | None = None, + distance_unit: str | None = None, + description: str | None = None, + comments: str | None = None, + tags: list[str | Tag | pb.Tag] | None = None, + custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ) -> pb.WirelessLink: + """Create a new WirelessLink.""" + interface_a = convert_to_protobuf(interface_a, pb.Interface) + interface_b = convert_to_protobuf(interface_b, pb.Interface) + tenant = convert_to_protobuf(tenant, pb.Tenant) + tags = convert_to_protobuf_list(tags, pb.Tag) + custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + return pb.WirelessLink( + interface_a=interface_a, + interface_b=interface_b, + ssid=ssid, + status=status, + tenant=tenant, + auth_type=auth_type, + auth_cipher=auth_cipher, + auth_psk=auth_psk, + distance=distance, + distance_unit=distance_unit, + description=description, + comments=comments, + tags=tags, + custom_fields=custom_fields, ) diff --git a/tests/test_ingester.py b/tests/test_ingester.py index 8d0d510..39b225a 100644 --- a/tests/test_ingester.py +++ b/tests/test_ingester.py @@ -9,6 +9,7 @@ ClusterGroup as ClusterGroupPb, ClusterType as ClusterTypePb, Device as DevicePb, + DeviceRole as DeviceRolePb, DeviceType as DeviceTypePb, Entity as EntityPb, IPAddress as IPAddressPb, @@ -28,6 +29,7 @@ ClusterGroup, ClusterType, Device, + DeviceRole, DeviceType, Entity, IPAddress, @@ -47,14 +49,10 @@ def test_convert_to_protobuf_returns_correct_class_when_value_is_string(): """Check convert_to_protobuf returns correct class when value is string.""" - - class MockProtobufClass: - def __init__(self, name=None): - self.name = name - - result = convert_to_protobuf("test", MockProtobufClass, name="test") - assert isinstance(result, MockProtobufClass) - assert result.name == "test" + result = convert_to_protobuf("Test Site", SitePb) + assert isinstance(result, SitePb) + assert result.name == "Test Site" + assert result.slug == "test-site" def test_convert_to_protobuf_returns_value_when_value_is_not_string(): @@ -174,14 +172,12 @@ def test_role_instantiation_with_all_fields(): role = Role( name="Admin", slug="admin", - color="blue", description="Administrator role", tags=["admin", "role"], ) assert isinstance(role, RolePb) assert role.name == "Admin" assert role.slug == "admin" - assert role.color == "blue" assert role.description == "Administrator role" assert len(role.tags) == 2 for tag in role.tags: @@ -217,7 +213,6 @@ def test_device_instantiation_with_all_fields(): device = Device( name="Device1", device_type="DeviceType1", - device_fqdn="device1.example.com", role="Role1", platform="Platform1", serial="123456", @@ -234,8 +229,7 @@ def test_device_instantiation_with_all_fields(): assert isinstance(device, DevicePb) assert device.name == "Device1" assert isinstance(device.device_type, DeviceTypePb) - assert device.device_fqdn == "device1.example.com" - assert isinstance(device.role, RolePb) + assert isinstance(device.role, DeviceRolePb) assert isinstance(device.platform, PlatformPb) assert device.serial == "123456" assert isinstance(device.site, SitePb) @@ -255,8 +249,7 @@ def test_device_instantiation_with_explicit_nested_object_types(): device = Device( name="Device1", device_type=DeviceType(model="DeviceType1"), - device_fqdn="device1.example.com", - role=Role(name="Role1"), + role=DeviceRole(name="Role1"), platform=Platform(name="Platform1"), serial="123456", site=Site(name="Site1"), @@ -270,7 +263,7 @@ def test_device_instantiation_with_explicit_nested_object_types(): ) assert isinstance(device, DevicePb) assert isinstance(device.device_type, DeviceTypePb) - assert isinstance(device.role, RolePb) + assert isinstance(device.role, DeviceRolePb) assert isinstance(device.platform, PlatformPb) assert isinstance(device.site, SitePb) assert isinstance(device.primary_ip4, IPAddressPb) @@ -292,7 +285,7 @@ def test_interface_instantiation_with_all_fields(): type="type1", enabled=True, mtu=1500, - mac_address="00:00:00:00:00:00", + primary_mac_address="00:00:00:00:00:00", speed=1000, wwn="wwn1", mgmt_only=True, @@ -307,7 +300,7 @@ def test_interface_instantiation_with_all_fields(): assert interface.device.name == "Device1" assert isinstance(interface.device.device_type, DeviceTypePb) assert interface.device.device_type.model == "DeviceType1" - assert isinstance(interface.device.role, RolePb) + assert isinstance(interface.device.role, DeviceRolePb) assert interface.device.role.name == "Role1" assert isinstance(interface.device.platform, PlatformPb) assert interface.device.platform.name == "Platform1" @@ -318,7 +311,7 @@ def test_interface_instantiation_with_all_fields(): assert interface.type == "type1" assert interface.enabled is True assert interface.mtu == 1500 - assert interface.mac_address == "00:00:00:00:00:00" + assert interface.primary_mac_address.mac_address == "00:00:00:00:00:00" assert interface.speed == 1000 assert interface.wwn == "wwn1" assert interface.mgmt_only is True @@ -336,14 +329,14 @@ def test_interface_instantiation_with_explicit_nested_object_types(): name="Interface1", device="Device1", device_type=DeviceType(model="DeviceType1"), - role=Role(name="Role1"), + role=DeviceRole(name="Role1"), platform=Platform(name="Platform1"), site=Site(name="Site1"), manufacturer=Manufacturer(name="Manufacturer1"), ) assert isinstance(interface, InterfacePb) assert isinstance(interface.device.device_type, DeviceTypePb) - assert isinstance(interface.device.role, RolePb) + assert isinstance(interface.device.role, DeviceRolePb) assert isinstance(interface.device.platform, PlatformPb) assert isinstance(interface.device.site, SitePb) assert interface.device.platform.manufacturer.name == "Manufacturer1" @@ -354,7 +347,7 @@ def test_ip_address_instantiation_with_all_fields(): """Check IPAddress instantiation with all fields.""" ip_address = IPAddress( address="192.168.0.1", - interface="Interface1", + assigned_object_interface="Interface1", device="Device1", device_type="DeviceType1", device_role="Role1", @@ -370,20 +363,20 @@ def test_ip_address_instantiation_with_all_fields(): ) assert isinstance(ip_address, IPAddressPb) assert ip_address.address == "192.168.0.1" - assert isinstance(ip_address.interface, InterfacePb) - assert ip_address.interface.name == "Interface1" - assert isinstance(ip_address.interface.device, DevicePb) - assert ip_address.interface.device.name == "Device1" - assert isinstance(ip_address.interface.device.device_type, DeviceTypePb) - assert ip_address.interface.device.device_type.model == "DeviceType1" - assert isinstance(ip_address.interface.device.role, RolePb) - assert ip_address.interface.device.role.name == "Role1" - assert isinstance(ip_address.interface.device.platform, PlatformPb) - assert ip_address.interface.device.platform.name == "Platform1" - assert isinstance(ip_address.interface.device.platform.manufacturer, ManufacturerPb) - assert ip_address.interface.device.platform.manufacturer.name == "Manufacturer1" - assert isinstance(ip_address.interface.device.site, SitePb) - assert ip_address.interface.device.site.name == "Site1" + assert isinstance(ip_address.assigned_object_interface, InterfacePb) + assert ip_address.assigned_object_interface.name == "Interface1" + assert isinstance(ip_address.assigned_object_interface.device, DevicePb) + assert ip_address.assigned_object_interface.device.name == "Device1" + assert isinstance(ip_address.assigned_object_interface.device.device_type, DeviceTypePb) + assert ip_address.assigned_object_interface.device.device_type.model == "DeviceType1" + assert isinstance(ip_address.assigned_object_interface.device.role, DeviceRolePb) + assert ip_address.assigned_object_interface.device.role.name == "Role1" + assert isinstance(ip_address.assigned_object_interface.device.platform, PlatformPb) + assert ip_address.assigned_object_interface.device.platform.name == "Platform1" + assert isinstance(ip_address.assigned_object_interface.device.platform.manufacturer, ManufacturerPb) + assert ip_address.assigned_object_interface.device.platform.manufacturer.name == "Manufacturer1" + assert isinstance(ip_address.assigned_object_interface.device.site, SitePb) + assert ip_address.assigned_object_interface.device.site.name == "Site1" assert ip_address.status == "active" assert ip_address.role == "admin" assert ip_address.dns_name == "dns.example.com" @@ -398,14 +391,14 @@ def test_ip_address_instantiation_with_explicit_nested_object_types(): """Check IPAddress instantiation with explicit nested object types.""" ip_address = IPAddress( address="192.168.0.1", - interface=Interface( + assigned_object_interface=Interface( name="Interface1", device=Device( name="Device1", device_type=DeviceType( model="DeviceType1", manufacturer="Manufacturer1" ), - role=Role(name="Role1"), + role=DeviceRole(name="Role1"), platform=Platform(name="Platform1", manufacturer="Manufacturer1"), site=Site(name="Site1"), ), @@ -417,14 +410,14 @@ def test_ip_address_instantiation_with_explicit_nested_object_types(): tags=["tag1", "tag2"], ) assert isinstance(ip_address, IPAddressPb) - assert isinstance(ip_address.interface, InterfacePb) - assert isinstance(ip_address.interface.device, DevicePb) - assert isinstance(ip_address.interface.device.device_type, DeviceTypePb) - assert isinstance(ip_address.interface.device.role, RolePb) - assert isinstance(ip_address.interface.device.platform, PlatformPb) - assert isinstance(ip_address.interface.device.site, SitePb) - assert ip_address.interface.device.platform.manufacturer.name == "Manufacturer1" - assert ip_address.interface.device.device_type.manufacturer.name == "Manufacturer1" + assert isinstance(ip_address.assigned_object_interface, InterfacePb) + assert isinstance(ip_address.assigned_object_interface.device, DevicePb) + assert isinstance(ip_address.assigned_object_interface.device.device_type, DeviceTypePb) + assert isinstance(ip_address.assigned_object_interface.device.role, DeviceRolePb) + assert isinstance(ip_address.assigned_object_interface.device.platform, PlatformPb) + assert isinstance(ip_address.assigned_object_interface.device.site, SitePb) + assert ip_address.assigned_object_interface.device.platform.manufacturer.name == "Manufacturer1" + assert ip_address.assigned_object_interface.device.device_type.manufacturer.name == "Manufacturer1" assert ip_address.status == "active" assert ip_address.dns_name == "dns.example.com" assert ip_address.description == "This is an IP address" @@ -436,7 +429,7 @@ def test_ip_address_instantiation_with_manufacturer_populated_to_device_type_and """Check IPAddress instantiation with manufacturer populated to DeviceType and Platform.""" ip_address = IPAddress( address="192.168.0.1", - interface="Interface1", + assigned_object_interface="Interface1", device="Device1", device_type=DeviceType(model="DeviceType1"), device_role="Role1", @@ -448,14 +441,14 @@ def test_ip_address_instantiation_with_manufacturer_populated_to_device_type_and dns_name="dns.example.com", ) assert isinstance(ip_address, IPAddressPb) - assert isinstance(ip_address.interface, InterfacePb) - assert isinstance(ip_address.interface.device, DevicePb) - assert isinstance(ip_address.interface.device.device_type, DeviceTypePb) - assert isinstance(ip_address.interface.device.role, RolePb) - assert isinstance(ip_address.interface.device.platform, PlatformPb) - assert isinstance(ip_address.interface.device.site, SitePb) - assert ip_address.interface.device.platform.manufacturer.name == "Manufacturer1" - assert ip_address.interface.device.device_type.manufacturer.name == "Manufacturer1" + assert isinstance(ip_address.assigned_object_interface, InterfacePb) + assert isinstance(ip_address.assigned_object_interface.device, DevicePb) + assert isinstance(ip_address.assigned_object_interface.device.device_type, DeviceTypePb) + assert isinstance(ip_address.assigned_object_interface.device.role, DeviceRolePb) + assert isinstance(ip_address.assigned_object_interface.device.platform, PlatformPb) + assert isinstance(ip_address.assigned_object_interface.device.site, SitePb) + assert ip_address.assigned_object_interface.device.platform.manufacturer.name == "Manufacturer1" + assert ip_address.assigned_object_interface.device.device_type.manufacturer.name == "Manufacturer1" assert ip_address.status == "active" assert ip_address.dns_name == "dns.example.com" @@ -464,7 +457,7 @@ def test_prefix_instantiation_with_all_fields(): """Check Prefix instantiation with all fields.""" prefix = Prefix( prefix="192.168.0.0/24", - site="Site1", + scope_site="Site1", status="active", is_pool=True, mark_utilized=False, @@ -473,8 +466,8 @@ def test_prefix_instantiation_with_all_fields(): ) assert isinstance(prefix, PrefixPb) assert prefix.prefix == "192.168.0.0/24" - assert isinstance(prefix.site, SitePb) - assert prefix.site.name == "Site1" + assert isinstance(prefix.scope_site, SitePb) + assert prefix.scope_site.name == "Site1" assert prefix.status == "active" assert prefix.is_pool is True assert prefix.mark_utilized is False @@ -525,17 +518,17 @@ def test_cluster_instantiation_with_all_fields(): status="active", group=ClusterGroup(name="North America"), type="Google Cloud", - site="Site1", + scope_site="Site1", description="Cluster on gc us east", tags=["us", "gc"], ) assert isinstance(cluster, ClusterPb) assert isinstance(cluster.group, ClusterGroupPb) assert isinstance(cluster.type, ClusterTypePb) - assert isinstance(cluster.site, SitePb) + assert isinstance(cluster.scope_site, SitePb) assert cluster.name == "gc-us-east1" assert cluster.status == "active" - assert cluster.site.name == "Site1" + assert cluster.scope_site.name == "Site1" assert cluster.description == "Cluster on gc us east" assert len(cluster.tags) == 2 for tag in cluster.tags: @@ -563,7 +556,7 @@ def test_virtual_machine_instantiation_with_all_fields(): assert isinstance(virtual_machine, VirtualMachinePb) assert isinstance(virtual_machine.cluster, ClusterPb) assert isinstance(virtual_machine.site, SitePb) - assert isinstance(virtual_machine.role, RolePb) + assert isinstance(virtual_machine.role, DeviceRolePb) assert isinstance(virtual_machine.device, DevicePb) assert isinstance(virtual_machine.platform, PlatformPb) assert isinstance(virtual_machine.primary_ip4, IPAddressPb) @@ -591,11 +584,11 @@ def test_virtual_machine_instantiation_with_cluster_without_site(): assert isinstance(virtual_machine, VirtualMachinePb) assert isinstance(virtual_machine.cluster, ClusterPb) assert isinstance(virtual_machine.site, SitePb) - assert isinstance(virtual_machine.role, RolePb) + assert isinstance(virtual_machine.role, DeviceRolePb) assert virtual_machine.name == "vm1" assert virtual_machine.status == "active" assert virtual_machine.site.name == "Site1" - assert virtual_machine.cluster.site.name == "Site1" + assert virtual_machine.cluster.scope_site.name == "Site1" def test_virtual_disk_instantiation_with_all_fields(): @@ -617,26 +610,26 @@ def test_virtual_disk_instantiation_with_all_fields(): assert isinstance(tag, TagPb) -def test_vminterface_instantiation_with_all_fields(): +def test_vm_interface_instantiation_with_all_fields(): """Check VMInterface instantiation with all fields.""" - vminterface = VMInterface( + vm_interface = VMInterface( name="eth01", virtual_machine="vm1", enabled=True, mtu=1500, - mac_address="00:00:00:00:00:00", + primary_mac_address="00:00:00:01:02:03", description="Virtual interface", - tags=["vm", "ifce"], - ) - assert isinstance(vminterface, VMInterfacePb) - assert isinstance(vminterface.virtual_machine, VirtualMachinePb) - assert vminterface.name == "eth01" - assert vminterface.virtual_machine.name == "vm1" - assert vminterface.mtu == 1500 - assert vminterface.mac_address == "00:00:00:00:00:00" - assert vminterface.description == "Virtual interface" - assert len(vminterface.tags) == 2 - for tag in vminterface.tags: + tags=["vm", "interface"], + ) + assert isinstance(vm_interface, VMInterfacePb) + assert isinstance(vm_interface.virtual_machine, VirtualMachinePb) + assert vm_interface.name == "eth01" + assert vm_interface.virtual_machine.name == "vm1" + assert vm_interface.mtu == 1500 + assert vm_interface.primary_mac_address.mac_address == "00:00:00:01:02:03" + assert vm_interface.description == "Virtual interface" + assert len(vm_interface.tags) == 2 + for tag in vm_interface.tags: assert isinstance(tag, TagPb) @@ -747,7 +740,7 @@ def test_entity_instantiation_with_role(): device_role="Role1", ) assert isinstance(entity, EntityPb) - assert isinstance(entity.device_role, RolePb) + assert isinstance(entity.device_role, DeviceRolePb) assert entity.device_role.name == "Role1" @@ -831,11 +824,11 @@ def test_entity_instantiation_with_virtual_disk(): assert entity.virtual_disk.name == "VirtualDisk1" -def test_entity_instantiation_with_vminterface(): +def test_entity_instantiation_with_vm_interface(): """Check Entity instantiation with virtual interface.""" entity = Entity( - vminterface="VMInterface1", + vm_interface="VMInterface1", ) assert isinstance(entity, EntityPb) - assert isinstance(entity.vminterface, VMInterfacePb) - assert entity.vminterface.name == "VMInterface1" + assert isinstance(entity.vm_interface, VMInterfacePb) + assert entity.vm_interface.name == "VMInterface1" From 838965fd1bfbf18ff7dfc8c0d2d4527659a2b966 Mon Sep 17 00:00:00 2001 From: Luke Tucker Date: Thu, 3 Apr 2025 09:54:23 -0400 Subject: [PATCH 02/24] fix: include several missing many-many references --- netboxlabs/diode/sdk/diode/v1/ingester_pb2.py | 248 +++++++++--------- .../diode/sdk/diode/v1/ingester_pb2.pyi | 64 +++-- netboxlabs/diode/sdk/ingester.py | 44 +++- 3 files changed, 213 insertions(+), 143 deletions(-) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py index 4ea8138..4ea678e 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py @@ -16,7 +16,7 @@ from netboxlabs.diode.sdk.validate import validate_pb2 as validate_dot_validate__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xd3)\n\x06\x45ntity\x12\x44\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestamp\x12\x31\n\tasn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x08 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\x0b \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x15 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x16 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x19 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1d \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1e \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1f \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18 \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18! \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\" \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18# \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18$ \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18% \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18& \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18\' \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18( \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18) \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18* \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18+ \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18, \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18- \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18. \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18\x30 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x31 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x32 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x33 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x34 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x35 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x36 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x37 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x38 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x39 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18: \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18; \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18< \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18= \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18> \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18? \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x41 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x42 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x43 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x44 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x45 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x46 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18G \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18H \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18I \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18J \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18K \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18L \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18M \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18N \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18O \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18P \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18Q \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18R \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18S \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18T \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18U \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18V \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18W \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18X \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18Y \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xaa\x03\n\x03\x41SN\x12\x10\n\x03\x61sn\x18\x01 \x01(\x03R\x03\x61sn\x12$\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x07 \x03(\x0b\x32\x1f.diode.v1.ASN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x06\n\x04_rirB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb7\x03\n\x08\x41SNRange\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1f\n\x03rir\x18\x03 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\t \x03(\x0b\x32$.diode.v1.ASNRange.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\x0e\n\x0c_description\"\xfe\x03\n\tAggregate\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1f\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12>\n\ndate_added\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tdateAdded\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.Aggregate.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\r\n\x0b_date_addedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf1\x07\n\x05\x43\x61\x62le\x12\xdd\x01\n\x04type\x18\x01 \x01(\tB\xc3\x01\xfa\x42\xbf\x01r\xbc\x01R\x03\x61ocR\x04\x63\x61t3R\x04\x63\x61t5R\x05\x63\x61t5eR\x04\x63\x61t6R\x05\x63\x61t6aR\x04\x63\x61t7R\x05\x63\x61t7aR\x04\x63\x61t8R\x07\x63oaxialR\ndac-activeR\x0b\x64\x61\x63-passiveR\x03mmfR\x07mmf-om1R\x07mmf-om2R\x07mmf-om3R\x07mmf-om4R\x07mmf-om5R\x0bmrj21-trunkR\x05powerR\x03smfR\x07smf-os1R\x07smf-os2R\x03usbH\x00R\x04type\x88\x01\x01\x12>\n\x0e\x61_terminations\x18\x02 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\raTerminations\x12>\n\x0e\x62_terminations\x18\x03 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\rbTerminations\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x19\n\x05label\x18\x06 \x01(\tH\x03R\x05label\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x07 \x01(\tH\x04R\x05\x63olor\x88\x01\x01\x12\x1b\n\x06length\x18\x08 \x01(\x01H\x05R\x06length\x88\x01\x01\x12\x42\n\x0blength_unit\x18\t \x01(\tB\x1c\xfa\x42\x19r\x17R\x02\x63mR\x02\x66tR\x02inR\x02kmR\x01mR\x02miH\x06R\nlengthUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x07R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x46\n\rcustom_fields\x18\r \x03(\x0b\x32!.diode.v1.Cable.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_typeB\t\n\x07_statusB\t\n\x07_tenantB\x08\n\x06_labelB\x08\n\x06_colorB\t\n\x07_lengthB\x0e\n\x0c_length_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9e\x01\n\tCablePath\x12 \n\tis_active\x18\x01 \x01(\x08H\x00R\x08isActive\x88\x01\x01\x12$\n\x0bis_complete\x18\x02 \x01(\x08H\x01R\nisComplete\x88\x01\x01\x12\x1e\n\x08is_split\x18\x03 \x01(\x08H\x02R\x07isSplit\x88\x01\x01\x42\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\xe3\x06\n\x10\x43\x61\x62leTermination\x12%\n\x05\x63\x61\x62le\x18\x01 \x01(\x0b\x32\x0f.diode.v1.CableR\x05\x63\x61\x62le\x12(\n\tcable_end\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01\x42R\x08\x63\x61\x62leEnd\x12\x66\n\x1ftermination_circuit_termination\x18\x03 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_console_port\x18\x04 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x05 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12K\n\x16termination_front_port\x18\x06 \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12J\n\x15termination_interface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12K\n\x16termination_power_feed\x18\x08 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\t \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12K\n\x16termination_power_port\x18\n \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12H\n\x15termination_rear_port\x18\x0b \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPortB\r\n\x0btermination\"\xe6\x08\n\x07\x43ircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12.\n\x08provider\x18\x02 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12)\n\x04type\x18\x04 \x01(\x0b\x32\x15.diode.v1.CircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x42\n\x0cinstall_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x0binstallDate\x88\x01\x01\x12J\n\x10termination_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04R\x0fterminationDate\x88\x01\x01\x12$\n\x0b\x63ommit_rate\x18\t \x01(\x03H\x05R\ncommitRate\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\x0b \x01(\x01H\x07R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x08R\x0c\x64istanceUnit\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\r \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x42\n\x0b\x61ssignments\x18\x0f \x03(\x0b\x32 .diode.v1.CircuitGroupAssignmentR\x0b\x61ssignments\x12H\n\rcustom_fields\x18\x10 \x03(\x0b\x32#.diode.v1.Circuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0f\n\r_install_dateB\x13\n\x11_termination_dateB\x0e\n\x0c_commit_rateB\x0e\n\x0c_descriptionB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0b\n\t_comments\"\xf6\x02\n\x0c\x43ircuitGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.CircuitGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_tenant\"\xde\x02\n\x16\x43ircuitGroupAssignment\x12,\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.CircuitGroupR\x05group\x12:\n\x0emember_circuit\x18\x02 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\rmemberCircuit\x12P\n\x16member_virtual_circuit\x18\x03 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14memberVirtualCircuit\x12N\n\x08priority\x18\x04 \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x01R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06memberB\x0b\n\t_priority\"\x8c\x08\n\x12\x43ircuitTermination\x12+\n\x07\x63ircuit\x18\x01 \x01(\x0b\x32\x11.diode.v1.CircuitR\x07\x63ircuit\x12(\n\tterm_side\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01ZR\x08termSide\x12G\n\x14termination_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12]\n\x1ctermination_provider_network\x18\x04 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x41\n\x12termination_region\x18\x05 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_site\x18\x06 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x07 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\"\n\nport_speed\x18\x08 \x01(\x03H\x01R\tportSpeed\x88\x01\x01\x12*\n\x0eupstream_speed\x18\t \x01(\x03H\x02R\rupstreamSpeed\x88\x01\x01\x12$\n\x0bxconnect_id\x18\n \x01(\tH\x03R\nxconnectId\x88\x01\x01\x12\x1c\n\x07pp_info\x18\x0b \x01(\tH\x04R\x06ppInfo\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\r \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x0f \x03(\x0b\x32..diode.v1.CircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_port_speedB\x11\n\x0f_upstream_speedB\x0e\n\x0c_xconnect_idB\n\n\x08_pp_infoB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xdf\x02\n\x0b\x43ircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.CircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xc0\x06\n\x07\x43luster\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12\x31\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x01R\x05group\x88\x01\x01\x12V\n\x06status\x18\x04 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07offlineR\x07plannedR\x07stagingH\x02R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\r \x03(\x0b\x32#.diode.v1.Cluster.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x08\n\x06_groupB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0c\x43lusterGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x05 \x03(\x0b\x32(.diode.v1.ClusterGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xba\x02\n\x0b\x43lusterType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ClusterType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xed\x05\n\x0b\x43onsolePort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\n \x03(\x0b\x32\'.diode.v1.ConsolePort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xf9\x05\n\x11\x43onsoleServerPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\n \x03(\x0b\x32-.diode.v1.ConsoleServerPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc5\x04\n\x07\x43ontact\x12\x31\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x05group\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05title\x18\x03 \x01(\tH\x01R\x05title\x88\x01\x01\x12\x19\n\x05phone\x18\x04 \x01(\tH\x02R\x05phone\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x03R\x05\x65mail\x88\x01\x01\x12\x1d\n\x07\x61\x64\x64ress\x18\x06 \x01(\tH\x04R\x07\x61\x64\x64ress\x88\x01\x01\x12\x17\n\x04link\x18\x07 \x01(\tH\x05R\x04link\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x07R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\x0b \x03(\x0b\x32#.diode.v1.Contact.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_groupB\x08\n\x06_titleB\x08\n\x06_phoneB\x08\n\x06_emailB\n\n\x08_addressB\x07\n\x05_linkB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe5\x34\n\x11\x43ontactAssignment\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLink\x12+\n\x07\x63ontact\x18Y \x01(\x0b\x32\x11.diode.v1.ContactR\x07\x63ontact\x12.\n\x04role\x18Z \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x01R\x04role\x88\x01\x01\x12N\n\x08priority\x18[ \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x02R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.ContactAssignment.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06objectB\x07\n\x05_roleB\x0b\n\t_priority\"\xfc\x02\n\x0c\x43ontactGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x33\n\x06parent\x18\x03 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.ContactGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xba\x02\n\x0b\x43ontactRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ContactRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xa1)\n\x1a\x43ustomFieldObjectReference\x12\x31\n\tasn_range\x18\x01 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x04 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x07 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\x08 \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\n \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\x0c \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x12 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x13 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x14 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x15 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x18 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1c \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1e \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18\x1f \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18 \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18! \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18\" \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18# \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18$ \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18% \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18& \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18( \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18/ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x31 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x32 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x33 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x34 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x35 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x36 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x37 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x38 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18\x39 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18: \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18; \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18< \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18= \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18> \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18? \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x41 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x42 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x43 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x45 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18\x46 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18K \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18L \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18M \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18N \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18O \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18P \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18Q \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Y \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06object\"\xed\x02\n\x10\x43ustomFieldValue\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x1a\n\x07integer\x18\x02 \x01(\x03H\x00R\x07integer\x12\x1a\n\x07\x64\x65\x63imal\x18\x03 \x01(\x01H\x00R\x07\x64\x65\x63imal\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12:\n\ttimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x12>\n\x06object\x18\x06 \x01(\x0b\x32$.diode.v1.CustomFieldObjectReferenceH\x00R\x06object\x12!\n\x0cstring_array\x18\x07 \x03(\tR\x0bstringArray\x12G\n\x0cobject_array\x18\x08 \x03(\x0b\x32$.diode.v1.CustomFieldObjectReferenceR\x0bobjectArrayB\x07\n\x05value\"\xf1\r\n\x06\x44\x65vice\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12(\n\x04role\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceRoleR\x04role\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x08platform\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x03R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x07 \x01(\tH\x04R\x08\x61ssetTag\x88\x01\x01\x12\"\n\x04site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\t \x01(\x0b\x32\x12.diode.v1.LocationH\x05R\x08location\x88\x01\x01\x12\'\n\x04rack\x18\n \x01(\x0b\x32\x0e.diode.v1.RackH\x06R\x04rack\x88\x01\x01\x12\x1f\n\x08position\x18\x0b \x01(\x01H\x07R\x08position\x88\x01\x01\x12+\n\x04\x66\x61\x63\x65\x18\x0c \x01(\tB\x12\xfa\x42\x0fr\rR\x05\x66rontR\x04rearH\x08R\x04\x66\x61\x63\x65\x88\x01\x01\x12\x1f\n\x08latitude\x18\r \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\x0e \x01(\x01H\nR\tlongitude\x88\x01\x01\x12h\n\x06status\x18\x0f \x01(\tBK\xfa\x42HrFR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\tinventoryR\x07offlineR\x07plannedR\x06stagedH\x0bR\x06status\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\x10 \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x0cR\x07\x61irflow\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x11 \x01(\x0b\x32\x13.diode.v1.IPAddressH\rR\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x12 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0eR\nprimaryIp6\x88\x01\x01\x12/\n\x06oob_ip\x18\x13 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0fR\x05oobIp\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x14 \x01(\x0b\x32\x11.diode.v1.ClusterH\x10R\x07\x63luster\x88\x01\x01\x12\x46\n\x0fvirtual_chassis\x18\x15 \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x11R\x0evirtualChassis\x88\x01\x01\x12$\n\x0bvc_position\x18\x16 \x01(\x03H\x12R\nvcPosition\x88\x01\x01\x12$\n\x0bvc_priority\x18\x17 \x01(\x03H\x13R\nvcPriority\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x14R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x15R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x1b \x03(\x0b\x32\".diode.v1.Device.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\t\n\x07_tenantB\x0b\n\t_platformB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0b\n\t_locationB\x07\n\x05_rackB\x0b\n\t_positionB\x07\n\x05_faceB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\t\n\x07_statusB\n\n\x08_airflowB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\t\n\x07_oob_ipB\n\n\x08_clusterB\x12\n\x10_virtual_chassisB\x0e\n\x0c_vc_positionB\x0e\n\x0c_vc_priorityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc8\x03\n\tDeviceBay\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05label\x18\x03 \x01(\tH\x00R\x05label\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12@\n\x10installed_device\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x02R\x0finstalledDevice\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x07 \x03(\x0b\x32%.diode.v1.DeviceBay.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_labelB\x0e\n\x0c_descriptionB\x13\n\x11_installed_device\"\x87\x03\n\nDeviceRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12\x1c\n\x07vm_role\x18\x04 \x01(\x08H\x01R\x06vmRole\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x07 \x03(\x0b\x32&.diode.v1.DeviceRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\n\n\x08_vm_roleB\x0e\n\x0c_description\"\xfc\x08\n\nDeviceType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x42\n\x10\x64\x65\x66\x61ult_platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0f\x64\x65\x66\x61ultPlatform\x88\x01\x01\x12\x14\n\x05model\x18\x03 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x04 \x01(\tR\x04slug\x12$\n\x0bpart_number\x18\x05 \x01(\tH\x01R\npartNumber\x88\x01\x01\x12\x1e\n\x08u_height\x18\x06 \x01(\x01H\x02R\x07uHeight\x88\x01\x01\x12=\n\x18\x65xclude_from_utilization\x18\x07 \x01(\x08H\x03R\x16\x65xcludeFromUtilization\x88\x01\x01\x12\'\n\ris_full_depth\x18\x08 \x01(\x08H\x04R\x0bisFullDepth\x88\x01\x01\x12@\n\x0esubdevice_role\x18\t \x01(\tB\x14\xfa\x42\x11r\x0fR\x05\x63hildR\x06parentH\x05R\rsubdeviceRole\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\n \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x06R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x0b \x01(\x01H\x07R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x08R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\nR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x10 \x03(\x0b\x32&.diode.v1.DeviceType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_default_platformB\x0e\n\x0c_part_numberB\x0b\n\t_u_heightB\x1b\n\x19_exclude_from_utilizationB\x10\n\x0e_is_full_depthB\x11\n\x0f_subdevice_roleB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc2\x04\n\tFHRPGroup\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12S\n\x08protocol\x18\x02 \x01(\tB7\xfa\x42\x34r2R\x04\x63\x61rpR\tclusterxlR\x04glbpR\x04hsrpR\x05otherR\x05vrrp2R\x05vrrp3R\x08protocol\x12\x19\n\x08group_id\x18\x03 \x01(\x03R\x07groupId\x12\x37\n\tauth_type\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x03md5R\tplaintextH\x01R\x08\x61uthType\x88\x01\x01\x12\x1e\n\x08\x61uth_key\x18\x05 \x01(\tH\x02R\x07\x61uthKey\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\t \x03(\x0b\x32%.diode.v1.FHRPGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0c\n\n_auth_typeB\x0b\n\t_auth_keyB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xaa\x36\n\x13\x46HRPGroupAssignment\x12)\n\x05group\x18\x01 \x01(\x0b\x32\x13.diode.v1.FHRPGroupR\x05group\x12\x34\n\rinterface_asn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0cinterfaceAsn\x12\x44\n\x13interface_asn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x11interfaceAsnRange\x12\x46\n\x13interface_aggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x12interfaceAggregate\x12:\n\x0finterface_cable\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0einterfaceCable\x12G\n\x14interface_cable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x12interfaceCablePath\x12\\\n\x1binterface_cable_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x19interfaceCableTermination\x12@\n\x11interface_circuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x10interfaceCircuit\x12P\n\x17interface_circuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x15interfaceCircuitGroup\x12o\n\"interface_circuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1finterfaceCircuitGroupAssignment\x12\x62\n\x1dinterface_circuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1binterfaceCircuitTermination\x12M\n\x16interface_circuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x14interfaceCircuitType\x12@\n\x11interface_cluster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x10interfaceCluster\x12P\n\x17interface_cluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x15interfaceClusterGroup\x12M\n\x16interface_cluster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x14interfaceClusterType\x12M\n\x16interface_console_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x14interfaceConsolePort\x12`\n\x1dinterface_console_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1ainterfaceConsoleServerPort\x12@\n\x11interface_contact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x10interfaceContact\x12_\n\x1cinterface_contact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1ainterfaceContactAssignment\x12P\n\x17interface_contact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x15interfaceContactGroup\x12M\n\x16interface_contact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x14interfaceContactRole\x12=\n\x10interface_device\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0finterfaceDevice\x12G\n\x14interface_device_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x12interfaceDeviceBay\x12J\n\x15interface_device_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x13interfaceDeviceRole\x12J\n\x15interface_device_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x13interfaceDeviceType\x12G\n\x14interface_fhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x12interfaceFhrpGroup\x12\x66\n\x1finterface_fhrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1cinterfaceFhrpGroupAssignment\x12G\n\x14interface_front_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x12interfaceFrontPort\x12G\n\x14interface_ike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x12interfaceIkePolicy\x12M\n\x16interface_ike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x14interfaceIkeProposal\x12G\n\x14interface_ip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x12interfaceIpAddress\x12\x41\n\x12interface_ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x10interfaceIpRange\x12N\n\x17interface_ip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x14interfaceIpSecPolicy\x12Q\n\x18interface_ip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x15interfaceIpSecProfile\x12T\n\x19interface_ip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x16interfaceIpSecProposal\x12\x46\n\x13interface_interface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x12interfaceInterface\x12S\n\x18interface_inventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x16interfaceInventoryItem\x12`\n\x1dinterface_inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1ainterfaceInventoryItemRole\x12:\n\x0finterface_l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0einterfaceL2vpn\x12\\\n\x1binterface_l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x19interfaceL2vpnTermination\x12\x43\n\x12interface_location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x11interfaceLocation\x12J\n\x15interface_mac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x13interfaceMacAddress\x12O\n\x16interface_manufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x15interfaceManufacturer\x12=\n\x10interface_module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0finterfaceModule\x12G\n\x14interface_module_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x12interfaceModuleBay\x12J\n\x15interface_module_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x13interfaceModuleType\x12\x43\n\x12interface_platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x11interfacePlatform\x12G\n\x14interface_power_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x12interfacePowerFeed\x12M\n\x16interface_power_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x14interfacePowerOutlet\x12J\n\x15interface_power_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x13interfacePowerPanel\x12G\n\x14interface_power_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x12interfacePowerPort\x12=\n\x10interface_prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0finterfacePrefix\x12\x43\n\x12interface_provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x11interfaceProvider\x12Y\n\x1ainterface_provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x18interfaceProviderAccount\x12Y\n\x1ainterface_provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x18interfaceProviderNetwork\x12\x34\n\rinterface_rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0cinterfaceRir\x12\x37\n\x0einterface_rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\rinterfaceRack\x12Y\n\x1ainterface_rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x18interfaceRackReservation\x12\x44\n\x13interface_rack_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x11interfaceRackRole\x12\x44\n\x13interface_rack_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x11interfaceRackType\x12\x44\n\x13interface_rear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x11interfaceRearPort\x12=\n\x10interface_region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0finterfaceRegion\x12\x37\n\x0einterface_role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\rinterfaceRole\x12M\n\x16interface_route_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x14interfaceRouteTarget\x12@\n\x11interface_service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x10interfaceService\x12\x37\n\x0einterface_site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\rinterfaceSite\x12G\n\x14interface_site_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x12interfaceSiteGroup\x12\x34\n\rinterface_tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0cinterfaceTag\x12=\n\x10interface_tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0finterfaceTenant\x12M\n\x16interface_tenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x14interfaceTenantGroup\x12=\n\x10interface_tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0finterfaceTunnel\x12M\n\x16interface_tunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x14interfaceTunnelGroup\x12_\n\x1cinterface_tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1ainterfaceTunnelTermination\x12\x37\n\x0einterface_vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\rinterfaceVlan\x12G\n\x14interface_vlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x12interfaceVlanGroup\x12l\n!interface_vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1einterfaceVlanTranslationPolicy\x12\x66\n\x1finterface_vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1cinterfaceVlanTranslationRule\x12M\n\x16interface_vm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x14interfaceVmInterface\x12\x34\n\rinterface_vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0cinterfaceVrf\x12V\n\x19interface_virtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x17interfaceVirtualChassis\x12V\n\x19interface_virtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x17interfaceVirtualCircuit\x12x\n%interface_virtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\"interfaceVirtualCircuitTermination\x12\x63\n\x1einterface_virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1binterfaceVirtualCircuitType\x12i\n interface_virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1dinterfaceVirtualDeviceContext\x12M\n\x16interface_virtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x14interfaceVirtualDisk\x12V\n\x19interface_virtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x17interfaceVirtualMachine\x12M\n\x16interface_wireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x14interfaceWirelessLan\x12]\n\x1cinterface_wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x19interfaceWirelessLanGroup\x12P\n\x17interface_wireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x15interfaceWirelessLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xba\x08\n\tFrontPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xad\x03\n\x04type\x18\x05 \x01(\tB\x98\x03\xfa\x42\x94\x03r\x91\x03R\t110-punchR\x04\x34p2cR\x04\x34p4cR\x04\x36p2cR\x04\x36p4cR\x04\x36p6cR\x04\x38p2cR\x04\x38p4cR\x04\x38p6cR\x04\x38p8cR\x03\x62ncR\x02\x63sR\x01\x66R\x02\x66\x63R\x04gg45R\x02lcR\x06lc-apcR\x05lc-pcR\x06lc-upcR\x03lshR\x07lsh-apcR\x06lsh-pcR\x07lsh-upcR\x03lx5R\x07lx5-apcR\x06lx5-pcR\x07lx5-upcR\x03mpoR\x05mrj21R\x04mtrjR\x01nR\x05otherR\x02scR\x06sc-apcR\x05sc-pcR\x06sc-upcR\x07sma-905R\x07sma-906R\x02snR\x06spliceR\x02stR\x07tera-1pR\x07tera-2pR\x07tera-4pR\x06urm-p2R\x06urm-p4R\x06urm-p8R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bR\x04type\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x02R\x05\x63olor\x88\x01\x01\x12/\n\trear_port\x18\x07 \x01(\x0b\x32\x12.diode.v1.RearPortR\x08rearPort\x12\x31\n\x12rear_port_position\x18\x08 \x01(\x03H\x03R\x10rearPortPosition\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0c \x03(\x0b\x32%.diode.v1.FrontPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x08\n\x06_colorB\x15\n\x13_rear_port_positionB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xca\x31\n\rGenericObject\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLinkB\x08\n\x06object\"\xec\x03\n\tIKEPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12#\n\x07version\x18\x03 \x01(\x03\x42\t\xfa\x42\x06\"\x04\x30\x01\x30\x02R\x07version\x12\x30\n\x04mode\x18\x04 \x01(\tB\x17\xfa\x42\x14r\x12R\naggressiveR\x04mainH\x01R\x04mode\x88\x01\x01\x12(\n\rpreshared_key\x18\x05 \x01(\tH\x02R\x0cpresharedKey\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.IKEPolicy.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_preshared_keyB\x0b\n\t_comments\"\x8e\x07\n\x0bIKEProposal\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12x\n\x15\x61uthentication_method\x18\x03 \x01(\tBC\xfa\x42@r>R\x0c\x63\x65rtificatesR\x0e\x64sa-signaturesR\x0epreshared-keysR\x0ersa-signaturesR\x14\x61uthenticationMethod\x12\x99\x01\n\x14\x65ncryption_algorithm\x18\x04 \x01(\tBf\xfa\x42\x63raR\x08\x33\x64\x65s-cbcR\x0b\x61\x65s-128-cbcR\x0b\x61\x65s-128-gcmR\x0b\x61\x65s-192-cbcR\x0b\x61\x65s-192-gcmR\x0b\x61\x65s-256-cbcR\x0b\x61\x65s-256-gcmR\x07\x64\x65s-cbcR\x13\x65ncryptionAlgorithm\x12\x81\x01\n\x18\x61uthentication_algorithm\x18\x05 \x01(\tBA\xfa\x42>rr\n\x11termination_cable\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x10terminationCable\x12K\n\x16termination_cable_path\x18\x07 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x14terminationCablePath\x12`\n\x1dtermination_cable_termination\x18\x08 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1bterminationCableTermination\x12\x44\n\x13termination_circuit\x18\t \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x12terminationCircuit\x12T\n\x19termination_circuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x17terminationCircuitGroup\x12s\n$termination_circuit_group_assignment\x18\x0b \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R!terminationCircuitGroupAssignment\x12\x66\n\x1ftermination_circuit_termination\x18\x0c \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_circuit_type\x18\r \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x16terminationCircuitType\x12\x44\n\x13termination_cluster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x12terminationCluster\x12T\n\x19termination_cluster_group\x18\x0f \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x17terminationClusterGroup\x12Q\n\x18termination_cluster_type\x18\x10 \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x16terminationClusterType\x12Q\n\x18termination_console_port\x18\x11 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12\x44\n\x13termination_contact\x18\x13 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x12terminationContact\x12\x63\n\x1etermination_contact_assignment\x18\x14 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1cterminationContactAssignment\x12T\n\x19termination_contact_group\x18\x15 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x17terminationContactGroup\x12Q\n\x18termination_contact_role\x18\x16 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x16terminationContactRole\x12\x41\n\x12termination_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x11terminationDevice\x12K\n\x16termination_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x14terminationDeviceBay\x12N\n\x17termination_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x15terminationDeviceRole\x12N\n\x17termination_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x15terminationDeviceType\x12K\n\x16termination_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x14terminationFhrpGroup\x12j\n!termination_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1eterminationFhrpGroupAssignment\x12K\n\x16termination_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12K\n\x16termination_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x14terminationIkePolicy\x12Q\n\x18termination_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x16terminationIkeProposal\x12K\n\x16termination_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x14terminationIpAddress\x12\x45\n\x14termination_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x12terminationIpRange\x12R\n\x19termination_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x16terminationIpSecPolicy\x12U\n\x1atermination_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x17terminationIpSecProfile\x12X\n\x1btermination_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x18terminationIpSecProposal\x12J\n\x15termination_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12W\n\x1atermination_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x18terminationInventoryItem\x12\x64\n\x1ftermination_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1cterminationInventoryItemRole\x12>\n\x11termination_l2vpn\x18( \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x10terminationL2vpn\x12`\n\x1dtermination_l2vpn_termination\x18) \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1bterminationL2vpnTermination\x12G\n\x14termination_location\x18* \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12N\n\x17termination_mac_address\x18+ \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x15terminationMacAddress\x12S\n\x18termination_manufacturer\x18, \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x17terminationManufacturer\x12\x41\n\x12termination_module\x18- \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x11terminationModule\x12K\n\x16termination_module_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x14terminationModuleBay\x12N\n\x17termination_module_type\x18/ \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x15terminationModuleType\x12G\n\x14termination_platform\x18\x30 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x13terminationPlatform\x12K\n\x16termination_power_feed\x18\x31 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\x32 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12N\n\x17termination_power_panel\x18\x33 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x15terminationPowerPanel\x12K\n\x16termination_power_port\x18\x34 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12\x41\n\x12termination_prefix\x18\x35 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x11terminationPrefix\x12G\n\x14termination_provider\x18\x36 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x13terminationProvider\x12]\n\x1ctermination_provider_account\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1aterminationProviderAccount\x12]\n\x1ctermination_provider_network\x18\x38 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x38\n\x0ftermination_rir\x18\x39 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0eterminationRir\x12;\n\x10termination_rack\x18: \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x0fterminationRack\x12]\n\x1ctermination_rack_reservation\x18; \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1aterminationRackReservation\x12H\n\x15termination_rack_role\x18< \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x13terminationRackRole\x12H\n\x15termination_rack_type\x18= \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x13terminationRackType\x12H\n\x15termination_rear_port\x18> \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPort\x12\x41\n\x12termination_region\x18? \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_role\x18@ \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x0fterminationRole\x12Q\n\x18termination_route_target\x18\x41 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x16terminationRouteTarget\x12\x44\n\x13termination_service\x18\x42 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x12terminationService\x12;\n\x10termination_site\x18\x43 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x44 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\x38\n\x0ftermination_tag\x18\x45 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0eterminationTag\x12\x41\n\x12termination_tenant\x18\x46 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x11terminationTenant\x12Q\n\x18termination_tenant_group\x18G \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x16terminationTenantGroup\x12\x41\n\x12termination_tunnel\x18H \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x11terminationTunnel\x12Q\n\x18termination_tunnel_group\x18I \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x16terminationTunnelGroup\x12\x63\n\x1etermination_tunnel_termination\x18J \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1cterminationTunnelTermination\x12;\n\x10termination_vlan\x18K \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x0fterminationVlan\x12K\n\x16termination_vlan_group\x18L \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x14terminationVlanGroup\x12p\n#termination_vlan_translation_policy\x18M \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R terminationVlanTranslationPolicy\x12j\n!termination_vlan_translation_rule\x18N \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1eterminationVlanTranslationRule\x12Q\n\x18termination_vm_interface\x18O \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x16terminationVmInterface\x12\x38\n\x0ftermination_vrf\x18P \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0eterminationVrf\x12Z\n\x1btermination_virtual_chassis\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x19terminationVirtualChassis\x12Z\n\x1btermination_virtual_circuit\x18R \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x19terminationVirtualCircuit\x12|\n\'termination_virtual_circuit_termination\x18S \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R$terminationVirtualCircuitTermination\x12g\n termination_virtual_circuit_type\x18T \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1dterminationVirtualCircuitType\x12m\n\"termination_virtual_device_context\x18U \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1fterminationVirtualDeviceContext\x12Q\n\x18termination_virtual_disk\x18V \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x16terminationVirtualDisk\x12Z\n\x1btermination_virtual_machine\x18W \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x19terminationVirtualMachine\x12Q\n\x18termination_wireless_lan\x18X \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x16terminationWirelessLan\x12\x61\n\x1etermination_wireless_lan_group\x18Y \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1bterminationWirelessLanGroup\x12T\n\x19termination_wireless_link\x18Z \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x17terminationWirelessLink\x12\x37\n\noutside_ip\x18[ \x01(\x0b\x32\x13.diode.v1.IPAddressH\x01R\toutsideIp\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.TunnelTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_outside_ip\"\x85\x06\n\x04VLAN\x12\'\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x88\x01\x01\x12.\n\x05group\x18\x02 \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x01R\x05group\x88\x01\x01\x12\x10\n\x03vid\x18\x03 \x01(\x03R\x03vid\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12@\n\x06status\x18\x06 \x01(\tB#\xfa\x42 r\x1eR\x06\x61\x63tiveR\ndeprecatedR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04role\x18\x07 \x01(\x0b\x32\x0e.diode.v1.RoleH\x04R\x04role\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\tqinq_role\x18\t \x01(\tB\x13\xfa\x42\x10r\x0eR\x05\x63vlanR\x05svlanH\x06R\x08qinqRole\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\tqinqSvlan\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\r \x03(\x0b\x32 .diode.v1.VLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_siteB\x08\n\x06_groupB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\x0e\n\x0c_descriptionB\x0c\n\n_qinq_roleB\r\n\x0b_qinq_svlanB\x0b\n\t_comments\"\xf9\x05\n\tVLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x38\n\rscope_cluster\x18\x03 \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x0cscopeCluster\x12H\n\x13scope_cluster_group\x18\x04 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x11scopeClusterGroup\x12;\n\x0escope_location\x18\x05 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12/\n\nscope_rack\x18\x06 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\tscopeRack\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12\x1d\n\nvid_ranges\x18\n \x03(\x03R\tvidRanges\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\r \x03(\x0b\x32%.diode.v1.VLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_description\"b\n\x15VLANTranslationPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xc1\x01\n\x13VLANTranslationRule\x12\x37\n\x06policy\x18\x01 \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyR\x06policy\x12\x1b\n\tlocal_vid\x18\x02 \x01(\x03R\x08localVid\x12\x1d\n\nremote_vid\x18\x03 \x01(\x03R\tremoteVid\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\x98\x08\n\x0bVMInterface\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x32\n\x06parent\x18\x04 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x01R\x06parent\x88\x01\x01\x12\x32\n\x06\x62ridge\x18\x05 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x02R\x06\x62ridge\x88\x01\x01\x12\x15\n\x03mtu\x18\x06 \x01(\x03H\x03R\x03mtu\x88\x01\x01\x12I\n\x13primary_mac_address\x18\x07 \x01(\x0b\x32\x14.diode.v1.MACAddressH\x04R\x11primaryMacAddress\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x42\n\x04mode\x18\t \x01(\tB)\xfa\x42&r$R\x06\x61\x63\x63\x65ssR\x06q-in-qR\x06taggedR\ntagged-allH\x06R\x04mode\x88\x01\x01\x12\x38\n\runtagged_vlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\x0cuntaggedVlan\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\x0b \x01(\x0b\x32\x0e.diode.v1.VLANH\x08R\tqinqSvlan\x88\x01\x01\x12\\\n\x17vlan_translation_policy\x18\x0c \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\tR\x15vlanTranslationPolicy\x88\x01\x01\x12$\n\x03vrf\x18\r \x01(\x0b\x32\r.diode.v1.VRFH\nR\x03vrf\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0f \x03(\x0b\x32\'.diode.v1.VMInterface.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\n\n\x08_enabledB\t\n\x07_parentB\t\n\x07_bridgeB\x06\n\x04_mtuB\x16\n\x14_primary_mac_addressB\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_untagged_vlanB\r\n\x0b_qinq_svlanB\x1a\n\x18_vlan_translation_policyB\x06\n\x04_vrf\"\xd9\x03\n\x03VRF\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x13\n\x02rd\x18\x02 \x01(\tH\x00R\x02rd\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12*\n\x0e\x65nforce_unique\x18\x04 \x01(\x08H\x02R\renforceUnique\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x08 \x03(\x0b\x32\x1f.diode.v1.VRF.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x05\n\x03_rdB\t\n\x07_tenantB\x11\n\x0f_enforce_uniqueB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x0eVirtualChassis\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\x06\x64omain\x18\x02 \x01(\tH\x00R\x06\x64omain\x88\x01\x01\x12-\n\x06master\x18\x03 \x01(\x0b\x32\x10.diode.v1.DeviceH\x01R\x06master\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x07 \x03(\x0b\x32*.diode.v1.VirtualChassis.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_domainB\t\n\x07_masterB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe1\x05\n\x0eVirtualCircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x44\n\x10provider_network\x18\x02 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkR\x0fproviderNetwork\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12\x30\n\x04type\x18\x04 \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\n \x03(\x0b\x32*.diode.v1.VirtualCircuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdf\x03\n\x19VirtualCircuitTermination\x12\x41\n\x0fvirtual_circuit\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitR\x0evirtualCircuit\x12\x30\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeH\x00R\x04role\x88\x01\x01\x12\x31\n\tinterface\x18\x03 \x01(\x0b\x32\x13.diode.v1.InterfaceR\tinterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Z\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x35.diode.v1.VirtualCircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_roleB\x0e\n\x0c_description\"\xed\x02\n\x12VirtualCircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x06 \x03(\x0b\x32..diode.v1.VirtualCircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xcd\x05\n\x14VirtualDeviceContext\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12#\n\nidentifier\x18\x03 \x01(\x03H\x00R\nidentifier\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x05 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x02R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x06 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x03R\nprimaryIp6\x88\x01\x01\x12\x37\n\x06status\x18\x07 \x01(\tB\x1f\xfa\x42\x1cr\x1aR\x06\x61\x63tiveR\x07offlineR\x07plannedR\x06status\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12U\n\rcustom_fields\x18\x0b \x03(\x0b\x32\x30.diode.v1.VirtualDeviceContext.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0b_identifierB\t\n\x07_tenantB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfd\x02\n\x0bVirtualDisk\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x12\n\x04size\x18\x04 \x01(\x03R\x04size\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.VirtualDisk.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xcf\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12]\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x07plannedR\x06stagedH\x00R\x06status\x88\x01\x01\x12\'\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteH\x01R\x04site\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterH\x02R\x07\x63luster\x88\x01\x01\x12-\n\x06\x64\x65vice\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x03R\x06\x64\x65vice\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x04R\x06serial\x88\x01\x01\x12-\n\x04role\x18\x07 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x05R\x04role\x88\x01\x01\x12-\n\x06tenant\x18\x08 \x01(\x0b\x32\x10.diode.v1.TenantH\x06R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\t \x01(\x0b\x32\x12.diode.v1.PlatformH\x07R\x08platform\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\n \x01(\x0b\x32\x13.diode.v1.IPAddressH\x08R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x0b \x01(\x0b\x32\x13.diode.v1.IPAddressH\tR\nprimaryIp6\x88\x01\x01\x12\x19\n\x05vcpus\x18\x0c \x01(\x01H\nR\x05vcpus\x88\x01\x01\x12\x1b\n\x06memory\x18\r \x01(\x03H\x0bR\x06memory\x88\x01\x01\x12\x17\n\x04\x64isk\x18\x0e \x01(\x03H\x0cR\x04\x64isk\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0f \x01(\tH\rR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x10 \x01(\tH\x0eR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x11 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x12 \x03(\x0b\x32*.diode.v1.VirtualMachine.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\x07\n\x05_siteB\n\n\x08_clusterB\t\n\x07_deviceB\t\n\x07_serialB\x07\n\x05_roleB\t\n\x07_tenantB\x0b\n\t_platformB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa2\x08\n\x0bWirelessLAN\x12\x12\n\x04ssid\x18\x01 \x01(\tR\x04ssid\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\x05group\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x02R\x05group\x88\x01\x01\x12J\n\x06status\x18\x04 \x01(\tB-\xfa\x42*r(R\x06\x61\x63tiveR\ndeprecatedR\x08\x64isabledR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04vlan\x18\x05 \x01(\x0b\x32\x0e.diode.v1.VLANH\x04R\x04vlan\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\n \x01(\x0b\x32\x10.diode.v1.TenantH\x05R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x0b \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x06R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x07R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\r \x01(\tH\x08R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x10 \x03(\x0b\x32\'.diode.v1.WirelessLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_descriptionB\x08\n\x06_groupB\t\n\x07_statusB\x07\n\x05_vlanB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_comments\"\x88\x03\n\x10WirelessLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x37\n\x06parent\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.WirelessLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xb9\x07\n\x0cWirelessLink\x12\x34\n\x0binterface_a\x18\x01 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceA\x12\x34\n\x0binterface_b\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceB\x12\x17\n\x04ssid\x18\x03 \x01(\tH\x00R\x04ssid\x88\x01\x01\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x06 \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x03R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x07 \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x04R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\x08 \x01(\tH\x05R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\t \x01(\x01H\x06R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\n \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x07R\x0c\x64istanceUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x08R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0c \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\r \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x0e \x03(\x0b\x32(.diode.v1.WirelessLink.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_ssidB\t\n\x07_statusB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponseB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xd3)\n\x06\x45ntity\x12\x44\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestamp\x12\x31\n\tasn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x08 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\x0b \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x15 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x16 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x19 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1d \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1e \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1f \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18 \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18! \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\" \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18# \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18$ \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18% \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18& \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18\' \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18( \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18) \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18* \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18+ \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18, \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18- \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18. \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18\x30 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x31 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x32 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x33 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x34 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x35 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x36 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x37 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x38 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x39 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18: \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18; \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18< \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18= \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18> \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18? \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x41 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x42 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x43 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x44 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x45 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x46 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18G \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18H \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18I \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18J \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18K \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18L \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18M \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18N \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18O \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18P \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18Q \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18R \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18S \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18T \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18U \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18V \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18W \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18X \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18Y \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xaa\x03\n\x03\x41SN\x12\x10\n\x03\x61sn\x18\x01 \x01(\x03R\x03\x61sn\x12$\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x07 \x03(\x0b\x32\x1f.diode.v1.ASN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x06\n\x04_rirB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb7\x03\n\x08\x41SNRange\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1f\n\x03rir\x18\x03 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\t \x03(\x0b\x32$.diode.v1.ASNRange.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\x0e\n\x0c_description\"\xfe\x03\n\tAggregate\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1f\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12>\n\ndate_added\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tdateAdded\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.Aggregate.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\r\n\x0b_date_addedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf1\x07\n\x05\x43\x61\x62le\x12\xdd\x01\n\x04type\x18\x01 \x01(\tB\xc3\x01\xfa\x42\xbf\x01r\xbc\x01R\x03\x61ocR\x04\x63\x61t3R\x04\x63\x61t5R\x05\x63\x61t5eR\x04\x63\x61t6R\x05\x63\x61t6aR\x04\x63\x61t7R\x05\x63\x61t7aR\x04\x63\x61t8R\x07\x63oaxialR\ndac-activeR\x0b\x64\x61\x63-passiveR\x03mmfR\x07mmf-om1R\x07mmf-om2R\x07mmf-om3R\x07mmf-om4R\x07mmf-om5R\x0bmrj21-trunkR\x05powerR\x03smfR\x07smf-os1R\x07smf-os2R\x03usbH\x00R\x04type\x88\x01\x01\x12>\n\x0e\x61_terminations\x18\x02 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\raTerminations\x12>\n\x0e\x62_terminations\x18\x03 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\rbTerminations\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x19\n\x05label\x18\x06 \x01(\tH\x03R\x05label\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x07 \x01(\tH\x04R\x05\x63olor\x88\x01\x01\x12\x1b\n\x06length\x18\x08 \x01(\x01H\x05R\x06length\x88\x01\x01\x12\x42\n\x0blength_unit\x18\t \x01(\tB\x1c\xfa\x42\x19r\x17R\x02\x63mR\x02\x66tR\x02inR\x02kmR\x01mR\x02miH\x06R\nlengthUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x07R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x46\n\rcustom_fields\x18\r \x03(\x0b\x32!.diode.v1.Cable.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_typeB\t\n\x07_statusB\t\n\x07_tenantB\x08\n\x06_labelB\x08\n\x06_colorB\t\n\x07_lengthB\x0e\n\x0c_length_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9e\x01\n\tCablePath\x12 \n\tis_active\x18\x01 \x01(\x08H\x00R\x08isActive\x88\x01\x01\x12$\n\x0bis_complete\x18\x02 \x01(\x08H\x01R\nisComplete\x88\x01\x01\x12\x1e\n\x08is_split\x18\x03 \x01(\x08H\x02R\x07isSplit\x88\x01\x01\x42\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\xe3\x06\n\x10\x43\x61\x62leTermination\x12%\n\x05\x63\x61\x62le\x18\x01 \x01(\x0b\x32\x0f.diode.v1.CableR\x05\x63\x61\x62le\x12(\n\tcable_end\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01\x42R\x08\x63\x61\x62leEnd\x12\x66\n\x1ftermination_circuit_termination\x18\x03 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_console_port\x18\x04 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x05 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12K\n\x16termination_front_port\x18\x06 \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12J\n\x15termination_interface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12K\n\x16termination_power_feed\x18\x08 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\t \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12K\n\x16termination_power_port\x18\n \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12H\n\x15termination_rear_port\x18\x0b \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPortB\r\n\x0btermination\"\xe6\x08\n\x07\x43ircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12.\n\x08provider\x18\x02 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12)\n\x04type\x18\x04 \x01(\x0b\x32\x15.diode.v1.CircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x42\n\x0cinstall_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x0binstallDate\x88\x01\x01\x12J\n\x10termination_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04R\x0fterminationDate\x88\x01\x01\x12$\n\x0b\x63ommit_rate\x18\t \x01(\x03H\x05R\ncommitRate\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\x0b \x01(\x01H\x07R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x08R\x0c\x64istanceUnit\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\r \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x42\n\x0b\x61ssignments\x18\x0f \x03(\x0b\x32 .diode.v1.CircuitGroupAssignmentR\x0b\x61ssignments\x12H\n\rcustom_fields\x18\x10 \x03(\x0b\x32#.diode.v1.Circuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0f\n\r_install_dateB\x13\n\x11_termination_dateB\x0e\n\x0c_commit_rateB\x0e\n\x0c_descriptionB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0b\n\t_comments\"\xf6\x02\n\x0c\x43ircuitGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.CircuitGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_tenant\"\xde\x02\n\x16\x43ircuitGroupAssignment\x12,\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.CircuitGroupR\x05group\x12:\n\x0emember_circuit\x18\x02 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\rmemberCircuit\x12P\n\x16member_virtual_circuit\x18\x03 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14memberVirtualCircuit\x12N\n\x08priority\x18\x04 \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x01R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06memberB\x0b\n\t_priority\"\x8c\x08\n\x12\x43ircuitTermination\x12+\n\x07\x63ircuit\x18\x01 \x01(\x0b\x32\x11.diode.v1.CircuitR\x07\x63ircuit\x12(\n\tterm_side\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01ZR\x08termSide\x12G\n\x14termination_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12]\n\x1ctermination_provider_network\x18\x04 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x41\n\x12termination_region\x18\x05 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_site\x18\x06 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x07 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\"\n\nport_speed\x18\x08 \x01(\x03H\x01R\tportSpeed\x88\x01\x01\x12*\n\x0eupstream_speed\x18\t \x01(\x03H\x02R\rupstreamSpeed\x88\x01\x01\x12$\n\x0bxconnect_id\x18\n \x01(\tH\x03R\nxconnectId\x88\x01\x01\x12\x1c\n\x07pp_info\x18\x0b \x01(\tH\x04R\x06ppInfo\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\r \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x0f \x03(\x0b\x32..diode.v1.CircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_port_speedB\x11\n\x0f_upstream_speedB\x0e\n\x0c_xconnect_idB\n\n\x08_pp_infoB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xdf\x02\n\x0b\x43ircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.CircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xc0\x06\n\x07\x43luster\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12\x31\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x01R\x05group\x88\x01\x01\x12V\n\x06status\x18\x04 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07offlineR\x07plannedR\x07stagingH\x02R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\r \x03(\x0b\x32#.diode.v1.Cluster.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x08\n\x06_groupB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0c\x43lusterGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x05 \x03(\x0b\x32(.diode.v1.ClusterGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xba\x02\n\x0b\x43lusterType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ClusterType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xed\x05\n\x0b\x43onsolePort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\n \x03(\x0b\x32\'.diode.v1.ConsolePort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xf9\x05\n\x11\x43onsoleServerPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\n \x03(\x0b\x32-.diode.v1.ConsoleServerPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc5\x04\n\x07\x43ontact\x12\x31\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x05group\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05title\x18\x03 \x01(\tH\x01R\x05title\x88\x01\x01\x12\x19\n\x05phone\x18\x04 \x01(\tH\x02R\x05phone\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x03R\x05\x65mail\x88\x01\x01\x12\x1d\n\x07\x61\x64\x64ress\x18\x06 \x01(\tH\x04R\x07\x61\x64\x64ress\x88\x01\x01\x12\x17\n\x04link\x18\x07 \x01(\tH\x05R\x04link\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x07R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\x0b \x03(\x0b\x32#.diode.v1.Contact.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_groupB\x08\n\x06_titleB\x08\n\x06_phoneB\x08\n\x06_emailB\n\n\x08_addressB\x07\n\x05_linkB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe5\x34\n\x11\x43ontactAssignment\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLink\x12+\n\x07\x63ontact\x18Y \x01(\x0b\x32\x11.diode.v1.ContactR\x07\x63ontact\x12.\n\x04role\x18Z \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x01R\x04role\x88\x01\x01\x12N\n\x08priority\x18[ \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x02R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.ContactAssignment.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06objectB\x07\n\x05_roleB\x0b\n\t_priority\"\xfc\x02\n\x0c\x43ontactGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x33\n\x06parent\x18\x03 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.ContactGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xba\x02\n\x0b\x43ontactRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ContactRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xa1)\n\x1a\x43ustomFieldObjectReference\x12\x31\n\tasn_range\x18\x01 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x04 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x07 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\x08 \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\n \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\x0c \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x12 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x13 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x14 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x15 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x18 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1c \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1e \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18\x1f \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18 \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18! \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18\" \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18# \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18$ \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18% \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18& \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18( \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18/ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x31 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x32 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x33 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x34 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x35 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x36 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x37 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x38 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18\x39 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18: \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18; \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18< \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18= \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18> \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18? \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x41 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x42 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x43 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x45 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18\x46 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18K \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18L \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18M \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18N \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18O \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18P \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18Q \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Y \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06object\"\xed\x02\n\x10\x43ustomFieldValue\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x1a\n\x07integer\x18\x02 \x01(\x03H\x00R\x07integer\x12\x1a\n\x07\x64\x65\x63imal\x18\x03 \x01(\x01H\x00R\x07\x64\x65\x63imal\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12:\n\ttimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x12>\n\x06object\x18\x06 \x01(\x0b\x32$.diode.v1.CustomFieldObjectReferenceH\x00R\x06object\x12!\n\x0cstring_array\x18\x07 \x03(\tR\x0bstringArray\x12G\n\x0cobject_array\x18\x08 \x03(\x0b\x32$.diode.v1.CustomFieldObjectReferenceR\x0bobjectArrayB\x07\n\x05value\"\xf1\r\n\x06\x44\x65vice\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12(\n\x04role\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceRoleR\x04role\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x08platform\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x03R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x07 \x01(\tH\x04R\x08\x61ssetTag\x88\x01\x01\x12\"\n\x04site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\t \x01(\x0b\x32\x12.diode.v1.LocationH\x05R\x08location\x88\x01\x01\x12\'\n\x04rack\x18\n \x01(\x0b\x32\x0e.diode.v1.RackH\x06R\x04rack\x88\x01\x01\x12\x1f\n\x08position\x18\x0b \x01(\x01H\x07R\x08position\x88\x01\x01\x12+\n\x04\x66\x61\x63\x65\x18\x0c \x01(\tB\x12\xfa\x42\x0fr\rR\x05\x66rontR\x04rearH\x08R\x04\x66\x61\x63\x65\x88\x01\x01\x12\x1f\n\x08latitude\x18\r \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\x0e \x01(\x01H\nR\tlongitude\x88\x01\x01\x12h\n\x06status\x18\x0f \x01(\tBK\xfa\x42HrFR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\tinventoryR\x07offlineR\x07plannedR\x06stagedH\x0bR\x06status\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\x10 \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x0cR\x07\x61irflow\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x11 \x01(\x0b\x32\x13.diode.v1.IPAddressH\rR\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x12 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0eR\nprimaryIp6\x88\x01\x01\x12/\n\x06oob_ip\x18\x13 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0fR\x05oobIp\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x14 \x01(\x0b\x32\x11.diode.v1.ClusterH\x10R\x07\x63luster\x88\x01\x01\x12\x46\n\x0fvirtual_chassis\x18\x15 \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x11R\x0evirtualChassis\x88\x01\x01\x12$\n\x0bvc_position\x18\x16 \x01(\x03H\x12R\nvcPosition\x88\x01\x01\x12$\n\x0bvc_priority\x18\x17 \x01(\x03H\x13R\nvcPriority\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x14R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x15R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x1b \x03(\x0b\x32\".diode.v1.Device.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\t\n\x07_tenantB\x0b\n\t_platformB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0b\n\t_locationB\x07\n\x05_rackB\x0b\n\t_positionB\x07\n\x05_faceB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\t\n\x07_statusB\n\n\x08_airflowB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\t\n\x07_oob_ipB\n\n\x08_clusterB\x12\n\x10_virtual_chassisB\x0e\n\x0c_vc_positionB\x0e\n\x0c_vc_priorityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc8\x03\n\tDeviceBay\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05label\x18\x03 \x01(\tH\x00R\x05label\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12@\n\x10installed_device\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x02R\x0finstalledDevice\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x07 \x03(\x0b\x32%.diode.v1.DeviceBay.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_labelB\x0e\n\x0c_descriptionB\x13\n\x11_installed_device\"\x87\x03\n\nDeviceRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12\x1c\n\x07vm_role\x18\x04 \x01(\x08H\x01R\x06vmRole\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x07 \x03(\x0b\x32&.diode.v1.DeviceRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\n\n\x08_vm_roleB\x0e\n\x0c_description\"\xfc\x08\n\nDeviceType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x42\n\x10\x64\x65\x66\x61ult_platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0f\x64\x65\x66\x61ultPlatform\x88\x01\x01\x12\x14\n\x05model\x18\x03 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x04 \x01(\tR\x04slug\x12$\n\x0bpart_number\x18\x05 \x01(\tH\x01R\npartNumber\x88\x01\x01\x12\x1e\n\x08u_height\x18\x06 \x01(\x01H\x02R\x07uHeight\x88\x01\x01\x12=\n\x18\x65xclude_from_utilization\x18\x07 \x01(\x08H\x03R\x16\x65xcludeFromUtilization\x88\x01\x01\x12\'\n\ris_full_depth\x18\x08 \x01(\x08H\x04R\x0bisFullDepth\x88\x01\x01\x12@\n\x0esubdevice_role\x18\t \x01(\tB\x14\xfa\x42\x11r\x0fR\x05\x63hildR\x06parentH\x05R\rsubdeviceRole\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\n \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x06R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x0b \x01(\x01H\x07R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x08R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\nR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x10 \x03(\x0b\x32&.diode.v1.DeviceType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_default_platformB\x0e\n\x0c_part_numberB\x0b\n\t_u_heightB\x1b\n\x19_exclude_from_utilizationB\x10\n\x0e_is_full_depthB\x11\n\x0f_subdevice_roleB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc2\x04\n\tFHRPGroup\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12S\n\x08protocol\x18\x02 \x01(\tB7\xfa\x42\x34r2R\x04\x63\x61rpR\tclusterxlR\x04glbpR\x04hsrpR\x05otherR\x05vrrp2R\x05vrrp3R\x08protocol\x12\x19\n\x08group_id\x18\x03 \x01(\x03R\x07groupId\x12\x37\n\tauth_type\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x03md5R\tplaintextH\x01R\x08\x61uthType\x88\x01\x01\x12\x1e\n\x08\x61uth_key\x18\x05 \x01(\tH\x02R\x07\x61uthKey\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\t \x03(\x0b\x32%.diode.v1.FHRPGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0c\n\n_auth_typeB\x0b\n\t_auth_keyB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xaa\x36\n\x13\x46HRPGroupAssignment\x12)\n\x05group\x18\x01 \x01(\x0b\x32\x13.diode.v1.FHRPGroupR\x05group\x12\x34\n\rinterface_asn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0cinterfaceAsn\x12\x44\n\x13interface_asn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x11interfaceAsnRange\x12\x46\n\x13interface_aggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x12interfaceAggregate\x12:\n\x0finterface_cable\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0einterfaceCable\x12G\n\x14interface_cable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x12interfaceCablePath\x12\\\n\x1binterface_cable_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x19interfaceCableTermination\x12@\n\x11interface_circuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x10interfaceCircuit\x12P\n\x17interface_circuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x15interfaceCircuitGroup\x12o\n\"interface_circuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1finterfaceCircuitGroupAssignment\x12\x62\n\x1dinterface_circuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1binterfaceCircuitTermination\x12M\n\x16interface_circuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x14interfaceCircuitType\x12@\n\x11interface_cluster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x10interfaceCluster\x12P\n\x17interface_cluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x15interfaceClusterGroup\x12M\n\x16interface_cluster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x14interfaceClusterType\x12M\n\x16interface_console_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x14interfaceConsolePort\x12`\n\x1dinterface_console_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1ainterfaceConsoleServerPort\x12@\n\x11interface_contact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x10interfaceContact\x12_\n\x1cinterface_contact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1ainterfaceContactAssignment\x12P\n\x17interface_contact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x15interfaceContactGroup\x12M\n\x16interface_contact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x14interfaceContactRole\x12=\n\x10interface_device\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0finterfaceDevice\x12G\n\x14interface_device_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x12interfaceDeviceBay\x12J\n\x15interface_device_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x13interfaceDeviceRole\x12J\n\x15interface_device_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x13interfaceDeviceType\x12G\n\x14interface_fhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x12interfaceFhrpGroup\x12\x66\n\x1finterface_fhrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1cinterfaceFhrpGroupAssignment\x12G\n\x14interface_front_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x12interfaceFrontPort\x12G\n\x14interface_ike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x12interfaceIkePolicy\x12M\n\x16interface_ike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x14interfaceIkeProposal\x12G\n\x14interface_ip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x12interfaceIpAddress\x12\x41\n\x12interface_ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x10interfaceIpRange\x12N\n\x17interface_ip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x14interfaceIpSecPolicy\x12Q\n\x18interface_ip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x15interfaceIpSecProfile\x12T\n\x19interface_ip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x16interfaceIpSecProposal\x12\x46\n\x13interface_interface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x12interfaceInterface\x12S\n\x18interface_inventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x16interfaceInventoryItem\x12`\n\x1dinterface_inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1ainterfaceInventoryItemRole\x12:\n\x0finterface_l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0einterfaceL2vpn\x12\\\n\x1binterface_l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x19interfaceL2vpnTermination\x12\x43\n\x12interface_location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x11interfaceLocation\x12J\n\x15interface_mac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x13interfaceMacAddress\x12O\n\x16interface_manufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x15interfaceManufacturer\x12=\n\x10interface_module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0finterfaceModule\x12G\n\x14interface_module_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x12interfaceModuleBay\x12J\n\x15interface_module_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x13interfaceModuleType\x12\x43\n\x12interface_platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x11interfacePlatform\x12G\n\x14interface_power_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x12interfacePowerFeed\x12M\n\x16interface_power_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x14interfacePowerOutlet\x12J\n\x15interface_power_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x13interfacePowerPanel\x12G\n\x14interface_power_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x12interfacePowerPort\x12=\n\x10interface_prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0finterfacePrefix\x12\x43\n\x12interface_provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x11interfaceProvider\x12Y\n\x1ainterface_provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x18interfaceProviderAccount\x12Y\n\x1ainterface_provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x18interfaceProviderNetwork\x12\x34\n\rinterface_rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0cinterfaceRir\x12\x37\n\x0einterface_rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\rinterfaceRack\x12Y\n\x1ainterface_rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x18interfaceRackReservation\x12\x44\n\x13interface_rack_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x11interfaceRackRole\x12\x44\n\x13interface_rack_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x11interfaceRackType\x12\x44\n\x13interface_rear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x11interfaceRearPort\x12=\n\x10interface_region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0finterfaceRegion\x12\x37\n\x0einterface_role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\rinterfaceRole\x12M\n\x16interface_route_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x14interfaceRouteTarget\x12@\n\x11interface_service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x10interfaceService\x12\x37\n\x0einterface_site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\rinterfaceSite\x12G\n\x14interface_site_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x12interfaceSiteGroup\x12\x34\n\rinterface_tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0cinterfaceTag\x12=\n\x10interface_tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0finterfaceTenant\x12M\n\x16interface_tenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x14interfaceTenantGroup\x12=\n\x10interface_tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0finterfaceTunnel\x12M\n\x16interface_tunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x14interfaceTunnelGroup\x12_\n\x1cinterface_tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1ainterfaceTunnelTermination\x12\x37\n\x0einterface_vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\rinterfaceVlan\x12G\n\x14interface_vlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x12interfaceVlanGroup\x12l\n!interface_vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1einterfaceVlanTranslationPolicy\x12\x66\n\x1finterface_vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1cinterfaceVlanTranslationRule\x12M\n\x16interface_vm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x14interfaceVmInterface\x12\x34\n\rinterface_vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0cinterfaceVrf\x12V\n\x19interface_virtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x17interfaceVirtualChassis\x12V\n\x19interface_virtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x17interfaceVirtualCircuit\x12x\n%interface_virtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\"interfaceVirtualCircuitTermination\x12\x63\n\x1einterface_virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1binterfaceVirtualCircuitType\x12i\n interface_virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1dinterfaceVirtualDeviceContext\x12M\n\x16interface_virtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x14interfaceVirtualDisk\x12V\n\x19interface_virtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x17interfaceVirtualMachine\x12M\n\x16interface_wireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x14interfaceWirelessLan\x12]\n\x1cinterface_wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x19interfaceWirelessLanGroup\x12P\n\x17interface_wireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x15interfaceWirelessLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xba\x08\n\tFrontPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xad\x03\n\x04type\x18\x05 \x01(\tB\x98\x03\xfa\x42\x94\x03r\x91\x03R\t110-punchR\x04\x34p2cR\x04\x34p4cR\x04\x36p2cR\x04\x36p4cR\x04\x36p6cR\x04\x38p2cR\x04\x38p4cR\x04\x38p6cR\x04\x38p8cR\x03\x62ncR\x02\x63sR\x01\x66R\x02\x66\x63R\x04gg45R\x02lcR\x06lc-apcR\x05lc-pcR\x06lc-upcR\x03lshR\x07lsh-apcR\x06lsh-pcR\x07lsh-upcR\x03lx5R\x07lx5-apcR\x06lx5-pcR\x07lx5-upcR\x03mpoR\x05mrj21R\x04mtrjR\x01nR\x05otherR\x02scR\x06sc-apcR\x05sc-pcR\x06sc-upcR\x07sma-905R\x07sma-906R\x02snR\x06spliceR\x02stR\x07tera-1pR\x07tera-2pR\x07tera-4pR\x06urm-p2R\x06urm-p4R\x06urm-p8R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bR\x04type\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x02R\x05\x63olor\x88\x01\x01\x12/\n\trear_port\x18\x07 \x01(\x0b\x32\x12.diode.v1.RearPortR\x08rearPort\x12\x31\n\x12rear_port_position\x18\x08 \x01(\x03H\x03R\x10rearPortPosition\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0c \x03(\x0b\x32%.diode.v1.FrontPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x08\n\x06_colorB\x15\n\x13_rear_port_positionB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xca\x31\n\rGenericObject\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLinkB\x08\n\x06object\"\xa1\x04\n\tIKEPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12#\n\x07version\x18\x03 \x01(\x03\x42\t\xfa\x42\x06\"\x04\x30\x01\x30\x02R\x07version\x12\x30\n\x04mode\x18\x04 \x01(\tB\x17\xfa\x42\x14r\x12R\naggressiveR\x04mainH\x01R\x04mode\x88\x01\x01\x12(\n\rpreshared_key\x18\x05 \x01(\tH\x02R\x0cpresharedKey\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.IKEPolicy.CustomFieldsEntryR\x0c\x63ustomFields\x12\x33\n\tproposals\x18\t \x03(\x0b\x32\x15.diode.v1.IKEProposalR\tproposals\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_preshared_keyB\x0b\n\t_comments\"\x8e\x07\n\x0bIKEProposal\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12x\n\x15\x61uthentication_method\x18\x03 \x01(\tBC\xfa\x42@r>R\x0c\x63\x65rtificatesR\x0e\x64sa-signaturesR\x0epreshared-keysR\x0ersa-signaturesR\x14\x61uthenticationMethod\x12\x99\x01\n\x14\x65ncryption_algorithm\x18\x04 \x01(\tBf\xfa\x42\x63raR\x08\x33\x64\x65s-cbcR\x0b\x61\x65s-128-cbcR\x0b\x61\x65s-128-gcmR\x0b\x61\x65s-192-cbcR\x0b\x61\x65s-192-gcmR\x0b\x61\x65s-256-cbcR\x0b\x61\x65s-256-gcmR\x07\x64\x65s-cbcR\x13\x65ncryptionAlgorithm\x12\x81\x01\n\x18\x61uthentication_algorithm\x18\x05 \x01(\tBA\xfa\x42>rr\n\x11termination_cable\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x10terminationCable\x12K\n\x16termination_cable_path\x18\x07 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x14terminationCablePath\x12`\n\x1dtermination_cable_termination\x18\x08 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1bterminationCableTermination\x12\x44\n\x13termination_circuit\x18\t \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x12terminationCircuit\x12T\n\x19termination_circuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x17terminationCircuitGroup\x12s\n$termination_circuit_group_assignment\x18\x0b \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R!terminationCircuitGroupAssignment\x12\x66\n\x1ftermination_circuit_termination\x18\x0c \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_circuit_type\x18\r \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x16terminationCircuitType\x12\x44\n\x13termination_cluster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x12terminationCluster\x12T\n\x19termination_cluster_group\x18\x0f \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x17terminationClusterGroup\x12Q\n\x18termination_cluster_type\x18\x10 \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x16terminationClusterType\x12Q\n\x18termination_console_port\x18\x11 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12\x44\n\x13termination_contact\x18\x13 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x12terminationContact\x12\x63\n\x1etermination_contact_assignment\x18\x14 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1cterminationContactAssignment\x12T\n\x19termination_contact_group\x18\x15 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x17terminationContactGroup\x12Q\n\x18termination_contact_role\x18\x16 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x16terminationContactRole\x12\x41\n\x12termination_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x11terminationDevice\x12K\n\x16termination_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x14terminationDeviceBay\x12N\n\x17termination_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x15terminationDeviceRole\x12N\n\x17termination_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x15terminationDeviceType\x12K\n\x16termination_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x14terminationFhrpGroup\x12j\n!termination_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1eterminationFhrpGroupAssignment\x12K\n\x16termination_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12K\n\x16termination_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x14terminationIkePolicy\x12Q\n\x18termination_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x16terminationIkeProposal\x12K\n\x16termination_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x14terminationIpAddress\x12\x45\n\x14termination_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x12terminationIpRange\x12R\n\x19termination_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x16terminationIpSecPolicy\x12U\n\x1atermination_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x17terminationIpSecProfile\x12X\n\x1btermination_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x18terminationIpSecProposal\x12J\n\x15termination_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12W\n\x1atermination_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x18terminationInventoryItem\x12\x64\n\x1ftermination_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1cterminationInventoryItemRole\x12>\n\x11termination_l2vpn\x18( \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x10terminationL2vpn\x12`\n\x1dtermination_l2vpn_termination\x18) \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1bterminationL2vpnTermination\x12G\n\x14termination_location\x18* \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12N\n\x17termination_mac_address\x18+ \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x15terminationMacAddress\x12S\n\x18termination_manufacturer\x18, \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x17terminationManufacturer\x12\x41\n\x12termination_module\x18- \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x11terminationModule\x12K\n\x16termination_module_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x14terminationModuleBay\x12N\n\x17termination_module_type\x18/ \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x15terminationModuleType\x12G\n\x14termination_platform\x18\x30 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x13terminationPlatform\x12K\n\x16termination_power_feed\x18\x31 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\x32 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12N\n\x17termination_power_panel\x18\x33 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x15terminationPowerPanel\x12K\n\x16termination_power_port\x18\x34 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12\x41\n\x12termination_prefix\x18\x35 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x11terminationPrefix\x12G\n\x14termination_provider\x18\x36 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x13terminationProvider\x12]\n\x1ctermination_provider_account\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1aterminationProviderAccount\x12]\n\x1ctermination_provider_network\x18\x38 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x38\n\x0ftermination_rir\x18\x39 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0eterminationRir\x12;\n\x10termination_rack\x18: \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x0fterminationRack\x12]\n\x1ctermination_rack_reservation\x18; \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1aterminationRackReservation\x12H\n\x15termination_rack_role\x18< \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x13terminationRackRole\x12H\n\x15termination_rack_type\x18= \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x13terminationRackType\x12H\n\x15termination_rear_port\x18> \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPort\x12\x41\n\x12termination_region\x18? \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_role\x18@ \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x0fterminationRole\x12Q\n\x18termination_route_target\x18\x41 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x16terminationRouteTarget\x12\x44\n\x13termination_service\x18\x42 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x12terminationService\x12;\n\x10termination_site\x18\x43 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x44 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\x38\n\x0ftermination_tag\x18\x45 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0eterminationTag\x12\x41\n\x12termination_tenant\x18\x46 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x11terminationTenant\x12Q\n\x18termination_tenant_group\x18G \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x16terminationTenantGroup\x12\x41\n\x12termination_tunnel\x18H \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x11terminationTunnel\x12Q\n\x18termination_tunnel_group\x18I \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x16terminationTunnelGroup\x12\x63\n\x1etermination_tunnel_termination\x18J \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1cterminationTunnelTermination\x12;\n\x10termination_vlan\x18K \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x0fterminationVlan\x12K\n\x16termination_vlan_group\x18L \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x14terminationVlanGroup\x12p\n#termination_vlan_translation_policy\x18M \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R terminationVlanTranslationPolicy\x12j\n!termination_vlan_translation_rule\x18N \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1eterminationVlanTranslationRule\x12Q\n\x18termination_vm_interface\x18O \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x16terminationVmInterface\x12\x38\n\x0ftermination_vrf\x18P \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0eterminationVrf\x12Z\n\x1btermination_virtual_chassis\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x19terminationVirtualChassis\x12Z\n\x1btermination_virtual_circuit\x18R \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x19terminationVirtualCircuit\x12|\n\'termination_virtual_circuit_termination\x18S \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R$terminationVirtualCircuitTermination\x12g\n termination_virtual_circuit_type\x18T \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1dterminationVirtualCircuitType\x12m\n\"termination_virtual_device_context\x18U \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1fterminationVirtualDeviceContext\x12Q\n\x18termination_virtual_disk\x18V \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x16terminationVirtualDisk\x12Z\n\x1btermination_virtual_machine\x18W \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x19terminationVirtualMachine\x12Q\n\x18termination_wireless_lan\x18X \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x16terminationWirelessLan\x12\x61\n\x1etermination_wireless_lan_group\x18Y \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1bterminationWirelessLanGroup\x12T\n\x19termination_wireless_link\x18Z \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x17terminationWirelessLink\x12\x37\n\noutside_ip\x18[ \x01(\x0b\x32\x13.diode.v1.IPAddressH\x01R\toutsideIp\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.TunnelTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_outside_ip\"\x85\x06\n\x04VLAN\x12\'\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x88\x01\x01\x12.\n\x05group\x18\x02 \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x01R\x05group\x88\x01\x01\x12\x10\n\x03vid\x18\x03 \x01(\x03R\x03vid\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12@\n\x06status\x18\x06 \x01(\tB#\xfa\x42 r\x1eR\x06\x61\x63tiveR\ndeprecatedR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04role\x18\x07 \x01(\x0b\x32\x0e.diode.v1.RoleH\x04R\x04role\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\tqinq_role\x18\t \x01(\tB\x13\xfa\x42\x10r\x0eR\x05\x63vlanR\x05svlanH\x06R\x08qinqRole\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\tqinqSvlan\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\r \x03(\x0b\x32 .diode.v1.VLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_siteB\x08\n\x06_groupB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\x0e\n\x0c_descriptionB\x0c\n\n_qinq_roleB\r\n\x0b_qinq_svlanB\x0b\n\t_comments\"\xf9\x05\n\tVLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x38\n\rscope_cluster\x18\x03 \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x0cscopeCluster\x12H\n\x13scope_cluster_group\x18\x04 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x11scopeClusterGroup\x12;\n\x0escope_location\x18\x05 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12/\n\nscope_rack\x18\x06 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\tscopeRack\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12\x1d\n\nvid_ranges\x18\n \x03(\x03R\tvidRanges\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\r \x03(\x0b\x32%.diode.v1.VLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_description\"b\n\x15VLANTranslationPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xc1\x01\n\x13VLANTranslationRule\x12\x37\n\x06policy\x18\x01 \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyR\x06policy\x12\x1b\n\tlocal_vid\x18\x02 \x01(\x03R\x08localVid\x12\x1d\n\nremote_vid\x18\x03 \x01(\x03R\tremoteVid\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xcb\x08\n\x0bVMInterface\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x32\n\x06parent\x18\x04 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x01R\x06parent\x88\x01\x01\x12\x32\n\x06\x62ridge\x18\x05 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x02R\x06\x62ridge\x88\x01\x01\x12\x15\n\x03mtu\x18\x06 \x01(\x03H\x03R\x03mtu\x88\x01\x01\x12I\n\x13primary_mac_address\x18\x07 \x01(\x0b\x32\x14.diode.v1.MACAddressH\x04R\x11primaryMacAddress\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x42\n\x04mode\x18\t \x01(\tB)\xfa\x42&r$R\x06\x61\x63\x63\x65ssR\x06q-in-qR\x06taggedR\ntagged-allH\x06R\x04mode\x88\x01\x01\x12\x38\n\runtagged_vlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\x0cuntaggedVlan\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\x0b \x01(\x0b\x32\x0e.diode.v1.VLANH\x08R\tqinqSvlan\x88\x01\x01\x12\\\n\x17vlan_translation_policy\x18\x0c \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\tR\x15vlanTranslationPolicy\x88\x01\x01\x12$\n\x03vrf\x18\r \x01(\x0b\x32\r.diode.v1.VRFH\nR\x03vrf\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0f \x03(\x0b\x32\'.diode.v1.VMInterface.CustomFieldsEntryR\x0c\x63ustomFields\x12\x31\n\x0ctagged_vlans\x18\x10 \x03(\x0b\x32\x0e.diode.v1.VLANR\x0btaggedVlans\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\n\n\x08_enabledB\t\n\x07_parentB\t\n\x07_bridgeB\x06\n\x04_mtuB\x16\n\x14_primary_mac_addressB\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_untagged_vlanB\r\n\x0b_qinq_svlanB\x1a\n\x18_vlan_translation_policyB\x06\n\x04_vrf\"\xd5\x04\n\x03VRF\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x13\n\x02rd\x18\x02 \x01(\tH\x00R\x02rd\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12*\n\x0e\x65nforce_unique\x18\x04 \x01(\x08H\x02R\renforceUnique\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x08 \x03(\x0b\x32\x1f.diode.v1.VRF.CustomFieldsEntryR\x0c\x63ustomFields\x12<\n\x0eimport_targets\x18\t \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rimportTargets\x12<\n\x0e\x65xport_targets\x18\n \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rexportTargets\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x05\n\x03_rdB\t\n\x07_tenantB\x11\n\x0f_enforce_uniqueB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x0eVirtualChassis\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\x06\x64omain\x18\x02 \x01(\tH\x00R\x06\x64omain\x88\x01\x01\x12-\n\x06master\x18\x03 \x01(\x0b\x32\x10.diode.v1.DeviceH\x01R\x06master\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x07 \x03(\x0b\x32*.diode.v1.VirtualChassis.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_domainB\t\n\x07_masterB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe1\x05\n\x0eVirtualCircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x44\n\x10provider_network\x18\x02 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkR\x0fproviderNetwork\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12\x30\n\x04type\x18\x04 \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\n \x03(\x0b\x32*.diode.v1.VirtualCircuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdf\x03\n\x19VirtualCircuitTermination\x12\x41\n\x0fvirtual_circuit\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitR\x0evirtualCircuit\x12\x30\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeH\x00R\x04role\x88\x01\x01\x12\x31\n\tinterface\x18\x03 \x01(\x0b\x32\x13.diode.v1.InterfaceR\tinterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Z\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x35.diode.v1.VirtualCircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_roleB\x0e\n\x0c_description\"\xed\x02\n\x12VirtualCircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x06 \x03(\x0b\x32..diode.v1.VirtualCircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xcd\x05\n\x14VirtualDeviceContext\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12#\n\nidentifier\x18\x03 \x01(\x03H\x00R\nidentifier\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x05 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x02R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x06 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x03R\nprimaryIp6\x88\x01\x01\x12\x37\n\x06status\x18\x07 \x01(\tB\x1f\xfa\x42\x1cr\x1aR\x06\x61\x63tiveR\x07offlineR\x07plannedR\x06status\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12U\n\rcustom_fields\x18\x0b \x03(\x0b\x32\x30.diode.v1.VirtualDeviceContext.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0b_identifierB\t\n\x07_tenantB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfd\x02\n\x0bVirtualDisk\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x12\n\x04size\x18\x04 \x01(\x03R\x04size\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.VirtualDisk.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xcf\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12]\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x07plannedR\x06stagedH\x00R\x06status\x88\x01\x01\x12\'\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteH\x01R\x04site\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterH\x02R\x07\x63luster\x88\x01\x01\x12-\n\x06\x64\x65vice\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x03R\x06\x64\x65vice\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x04R\x06serial\x88\x01\x01\x12-\n\x04role\x18\x07 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x05R\x04role\x88\x01\x01\x12-\n\x06tenant\x18\x08 \x01(\x0b\x32\x10.diode.v1.TenantH\x06R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\t \x01(\x0b\x32\x12.diode.v1.PlatformH\x07R\x08platform\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\n \x01(\x0b\x32\x13.diode.v1.IPAddressH\x08R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x0b \x01(\x0b\x32\x13.diode.v1.IPAddressH\tR\nprimaryIp6\x88\x01\x01\x12\x19\n\x05vcpus\x18\x0c \x01(\x01H\nR\x05vcpus\x88\x01\x01\x12\x1b\n\x06memory\x18\r \x01(\x03H\x0bR\x06memory\x88\x01\x01\x12\x17\n\x04\x64isk\x18\x0e \x01(\x03H\x0cR\x04\x64isk\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0f \x01(\tH\rR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x10 \x01(\tH\x0eR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x11 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x12 \x03(\x0b\x32*.diode.v1.VirtualMachine.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\x07\n\x05_siteB\n\n\x08_clusterB\t\n\x07_deviceB\t\n\x07_serialB\x07\n\x05_roleB\t\n\x07_tenantB\x0b\n\t_platformB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa2\x08\n\x0bWirelessLAN\x12\x12\n\x04ssid\x18\x01 \x01(\tR\x04ssid\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\x05group\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x02R\x05group\x88\x01\x01\x12J\n\x06status\x18\x04 \x01(\tB-\xfa\x42*r(R\x06\x61\x63tiveR\ndeprecatedR\x08\x64isabledR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04vlan\x18\x05 \x01(\x0b\x32\x0e.diode.v1.VLANH\x04R\x04vlan\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\n \x01(\x0b\x32\x10.diode.v1.TenantH\x05R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x0b \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x06R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x07R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\r \x01(\tH\x08R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x10 \x03(\x0b\x32\'.diode.v1.WirelessLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_descriptionB\x08\n\x06_groupB\t\n\x07_statusB\x07\n\x05_vlanB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_comments\"\x88\x03\n\x10WirelessLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x37\n\x06parent\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.WirelessLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xb9\x07\n\x0cWirelessLink\x12\x34\n\x0binterface_a\x18\x01 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceA\x12\x34\n\x0binterface_b\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceB\x12\x17\n\x04ssid\x18\x03 \x01(\tH\x00R\x04ssid\x88\x01\x01\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x06 \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x03R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x07 \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x04R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\x08 \x01(\tH\x05R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\t \x01(\x01H\x06R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\n \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x07R\x0c\x64istanceUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x08R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0c \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\r \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x0e \x03(\x0b\x32(.diode.v1.WirelessLink.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_ssidB\t\n\x07_statusB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponseB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -489,243 +489,243 @@ _globals['_GENERICOBJECT']._serialized_start=41600 _globals['_GENERICOBJECT']._serialized_end=47946 _globals['_IKEPOLICY']._serialized_start=47949 - _globals['_IKEPOLICY']._serialized_end=48441 + _globals['_IKEPOLICY']._serialized_end=48494 _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IKEPROPOSAL']._serialized_start=48444 - _globals['_IKEPROPOSAL']._serialized_end=49354 + _globals['_IKEPROPOSAL']._serialized_start=48497 + _globals['_IKEPROPOSAL']._serialized_end=49407 _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPADDRESS']._serialized_start=49357 - _globals['_IPADDRESS']._serialized_end=50386 + _globals['_IPADDRESS']._serialized_start=49410 + _globals['_IPADDRESS']._serialized_end=50439 _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPRANGE']._serialized_start=50389 - _globals['_IPRANGE']._serialized_end=51062 + _globals['_IPRANGE']._serialized_start=50442 + _globals['_IPRANGE']._serialized_end=51115 _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPOLICY']._serialized_start=51065 - _globals['_IPSECPOLICY']._serialized_end=51508 + _globals['_IPSECPOLICY']._serialized_start=51118 + _globals['_IPSECPOLICY']._serialized_end=51616 _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPROFILE']._serialized_start=51511 - _globals['_IPSECPROFILE']._serialized_end=51999 + _globals['_IPSECPROFILE']._serialized_start=51619 + _globals['_IPSECPROFILE']._serialized_end=52107 _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPROPOSAL']._serialized_start=52002 - _globals['_IPSECPROPOSAL']._serialized_end=52838 + _globals['_IPSECPROPOSAL']._serialized_start=52110 + _globals['_IPSECPROPOSAL']._serialized_end=52946 _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INTERFACE']._serialized_start=52841 - _globals['_INTERFACE']._serialized_end=59801 + _globals['_INTERFACE']._serialized_start=52949 + _globals['_INTERFACE']._serialized_end=60072 _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INVENTORYITEM']._serialized_start=59804 - _globals['_INVENTORYITEM']._serialized_end=61236 + _globals['_INVENTORYITEM']._serialized_start=60075 + _globals['_INVENTORYITEM']._serialized_end=61507 _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INVENTORYITEMROLE']._serialized_start=61239 - _globals['_INVENTORYITEMROLE']._serialized_end=61602 + _globals['_INVENTORYITEMROLE']._serialized_start=61510 + _globals['_INVENTORYITEMROLE']._serialized_end=61873 _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_L2VPN']._serialized_start=61605 - _globals['_L2VPN']._serialized_end=62215 + _globals['_L2VPN']._serialized_start=61876 + _globals['_L2VPN']._serialized_end=62610 _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_L2VPNTERMINATION']._serialized_start=62218 - _globals['_L2VPNTERMINATION']._serialized_end=62746 + _globals['_L2VPNTERMINATION']._serialized_start=62613 + _globals['_L2VPNTERMINATION']._serialized_end=63141 _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_LOCATION']._serialized_start=62749 - _globals['_LOCATION']._serialized_end=63356 + _globals['_LOCATION']._serialized_start=63144 + _globals['_LOCATION']._serialized_end=63751 _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MACADDRESS']._serialized_start=63359 - _globals['_MACADDRESS']._serialized_end=63902 + _globals['_MACADDRESS']._serialized_start=63754 + _globals['_MACADDRESS']._serialized_end=64297 _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MANUFACTURER']._serialized_start=63905 - _globals['_MANUFACTURER']._serialized_end=64221 + _globals['_MANUFACTURER']._serialized_start=64300 + _globals['_MANUFACTURER']._serialized_end=64616 _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULE']._serialized_start=64224 - _globals['_MODULE']._serialized_end=64877 + _globals['_MODULE']._serialized_start=64619 + _globals['_MODULE']._serialized_end=65272 _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULEBAY']._serialized_start=64880 - _globals['_MODULEBAY']._serialized_end=65440 + _globals['_MODULEBAY']._serialized_start=65275 + _globals['_MODULEBAY']._serialized_end=65835 _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULETYPE']._serialized_start=65443 - _globals['_MODULETYPE']._serialized_end=66146 + _globals['_MODULETYPE']._serialized_start=65838 + _globals['_MODULETYPE']._serialized_end=66541 _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PLATFORM']._serialized_start=66149 - _globals['_PLATFORM']._serialized_end=66539 + _globals['_PLATFORM']._serialized_start=66544 + _globals['_PLATFORM']._serialized_end=66934 _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERFEED']._serialized_start=66542 - _globals['_POWERFEED']._serialized_end=67527 + _globals['_POWERFEED']._serialized_start=66937 + _globals['_POWERFEED']._serialized_end=67922 _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWEROUTLET']._serialized_start=67530 - _globals['_POWEROUTLET']._serialized_end=69577 + _globals['_POWEROUTLET']._serialized_start=67925 + _globals['_POWEROUTLET']._serialized_end=69972 _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERPANEL']._serialized_start=69580 - _globals['_POWERPANEL']._serialized_end=70020 + _globals['_POWERPANEL']._serialized_start=69975 + _globals['_POWERPANEL']._serialized_end=70415 _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERPORT']._serialized_start=70023 - _globals['_POWERPORT']._serialized_end=72072 + _globals['_POWERPORT']._serialized_start=70418 + _globals['_POWERPORT']._serialized_end=72467 _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PREFIX']._serialized_start=72075 - _globals['_PREFIX']._serialized_end=73042 + _globals['_PREFIX']._serialized_start=72470 + _globals['_PREFIX']._serialized_end=73437 _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDER']._serialized_start=73045 - _globals['_PROVIDER']._serialized_end=73399 + _globals['_PROVIDER']._serialized_start=73440 + _globals['_PROVIDER']._serialized_end=73884 _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDERACCOUNT']._serialized_start=73402 - _globals['_PROVIDERACCOUNT']._serialized_end=73838 + _globals['_PROVIDERACCOUNT']._serialized_start=73887 + _globals['_PROVIDERACCOUNT']._serialized_end=74323 _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDERNETWORK']._serialized_start=73841 - _globals['_PROVIDERNETWORK']._serialized_end=74288 + _globals['_PROVIDERNETWORK']._serialized_start=74326 + _globals['_PROVIDERNETWORK']._serialized_end=74773 _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RIR']._serialized_start=74291 - _globals['_RIR']._serialized_end=74640 + _globals['_RIR']._serialized_start=74776 + _globals['_RIR']._serialized_end=75125 _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACK']._serialized_start=74643 - _globals['_RACK']._serialized_end=76358 + _globals['_RACK']._serialized_start=75128 + _globals['_RACK']._serialized_end=76843 _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKRESERVATION']._serialized_start=76361 - _globals['_RACKRESERVATION']._serialized_end=76784 + _globals['_RACKRESERVATION']._serialized_start=76846 + _globals['_RACKRESERVATION']._serialized_end=77269 _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKROLE']._serialized_start=76787 - _globals['_RACKROLE']._serialized_end=77132 + _globals['_RACKROLE']._serialized_start=77272 + _globals['_RACKROLE']._serialized_end=77617 _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKTYPE']._serialized_start=77135 - _globals['_RACKTYPE']._serialized_end=78339 + _globals['_RACKTYPE']._serialized_start=77620 + _globals['_RACKTYPE']._serialized_end=78824 _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_REARPORT']._serialized_start=78342 - _globals['_REARPORT']._serialized_end=79348 + _globals['_REARPORT']._serialized_start=78827 + _globals['_REARPORT']._serialized_end=79833 _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_REGION']._serialized_start=79351 - _globals['_REGION']._serialized_end=79713 + _globals['_REGION']._serialized_start=79836 + _globals['_REGION']._serialized_end=80198 _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_ROLE']._serialized_start=79716 - _globals['_ROLE']._serialized_end=80056 + _globals['_ROLE']._serialized_start=80201 + _globals['_ROLE']._serialized_end=80541 _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_ROUTETARGET']._serialized_start=80059 - _globals['_ROUTETARGET']._serialized_end=80457 + _globals['_ROUTETARGET']._serialized_start=80544 + _globals['_ROUTETARGET']._serialized_end=80942 _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SERVICE']._serialized_start=80460 - _globals['_SERVICE']._serialized_end=81033 + _globals['_SERVICE']._serialized_start=80945 + _globals['_SERVICE']._serialized_end=81573 _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SITE']._serialized_start=81036 - _globals['_SITE']._serialized_end=81982 + _globals['_SITE']._serialized_start=81576 + _globals['_SITE']._serialized_end=82557 _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SITEGROUP']._serialized_start=81985 - _globals['_SITEGROUP']._serialized_end=82356 + _globals['_SITEGROUP']._serialized_start=82560 + _globals['_SITEGROUP']._serialized_end=82931 _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TAG']._serialized_start=82358 - _globals['_TAG']._serialized_end=82440 - _globals['_TENANT']._serialized_start=82443 - _globals['_TENANT']._serialized_end=82853 + _globals['_TAG']._serialized_start=82933 + _globals['_TAG']._serialized_end=83015 + _globals['_TENANT']._serialized_start=83018 + _globals['_TENANT']._serialized_end=83428 _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TENANTGROUP']._serialized_start=82856 - _globals['_TENANTGROUP']._serialized_end=83233 + _globals['_TENANTGROUP']._serialized_start=83431 + _globals['_TENANTGROUP']._serialized_end=83808 _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNEL']._serialized_start=83236 - _globals['_TUNNEL']._serialized_end=83994 + _globals['_TUNNEL']._serialized_start=83811 + _globals['_TUNNEL']._serialized_end=84569 _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNELGROUP']._serialized_start=83997 - _globals['_TUNNELGROUP']._serialized_end=84311 + _globals['_TUNNELGROUP']._serialized_start=84572 + _globals['_TUNNELGROUP']._serialized_end=84886 _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNELTERMINATION']._serialized_start=84314 - _globals['_TUNNELTERMINATION']._serialized_end=91920 + _globals['_TUNNELTERMINATION']._serialized_start=84889 + _globals['_TUNNELTERMINATION']._serialized_end=92495 _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLAN']._serialized_start=91923 - _globals['_VLAN']._serialized_end=92696 + _globals['_VLAN']._serialized_start=92498 + _globals['_VLAN']._serialized_end=93271 _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLANGROUP']._serialized_start=92699 - _globals['_VLANGROUP']._serialized_end=93460 + _globals['_VLANGROUP']._serialized_start=93274 + _globals['_VLANGROUP']._serialized_end=94035 _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLANTRANSLATIONPOLICY']._serialized_start=93462 - _globals['_VLANTRANSLATIONPOLICY']._serialized_end=93560 - _globals['_VLANTRANSLATIONRULE']._serialized_start=93563 - _globals['_VLANTRANSLATIONRULE']._serialized_end=93756 - _globals['_VMINTERFACE']._serialized_start=93759 - _globals['_VMINTERFACE']._serialized_end=94807 + _globals['_VLANTRANSLATIONPOLICY']._serialized_start=94037 + _globals['_VLANTRANSLATIONPOLICY']._serialized_end=94135 + _globals['_VLANTRANSLATIONRULE']._serialized_start=94138 + _globals['_VLANTRANSLATIONRULE']._serialized_end=94331 + _globals['_VMINTERFACE']._serialized_start=94334 + _globals['_VMINTERFACE']._serialized_end=95433 _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VRF']._serialized_start=94810 - _globals['_VRF']._serialized_end=95283 + _globals['_VRF']._serialized_start=95436 + _globals['_VRF']._serialized_end=96033 _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCHASSIS']._serialized_start=95286 - _globals['_VIRTUALCHASSIS']._serialized_end=95730 + _globals['_VIRTUALCHASSIS']._serialized_start=96036 + _globals['_VIRTUALCHASSIS']._serialized_end=96480 _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUIT']._serialized_start=95733 - _globals['_VIRTUALCIRCUIT']._serialized_end=96470 + _globals['_VIRTUALCIRCUIT']._serialized_start=96483 + _globals['_VIRTUALCIRCUIT']._serialized_end=97220 _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=96473 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=96952 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=97223 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=97702 _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUITTYPE']._serialized_start=96955 - _globals['_VIRTUALCIRCUITTYPE']._serialized_end=97320 + _globals['_VIRTUALCIRCUITTYPE']._serialized_start=97705 + _globals['_VIRTUALCIRCUITTYPE']._serialized_end=98070 _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALDEVICECONTEXT']._serialized_start=97323 - _globals['_VIRTUALDEVICECONTEXT']._serialized_end=98040 + _globals['_VIRTUALDEVICECONTEXT']._serialized_start=98073 + _globals['_VIRTUALDEVICECONTEXT']._serialized_end=98790 _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALDISK']._serialized_start=98043 - _globals['_VIRTUALDISK']._serialized_end=98424 + _globals['_VIRTUALDISK']._serialized_start=98793 + _globals['_VIRTUALDISK']._serialized_end=99174 _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALMACHINE']._serialized_start=98427 - _globals['_VIRTUALMACHINE']._serialized_end=99530 + _globals['_VIRTUALMACHINE']._serialized_start=99177 + _globals['_VIRTUALMACHINE']._serialized_end=100280 _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLAN']._serialized_start=99533 - _globals['_WIRELESSLAN']._serialized_end=100591 + _globals['_WIRELESSLAN']._serialized_start=100283 + _globals['_WIRELESSLAN']._serialized_end=101341 _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLANGROUP']._serialized_start=100594 - _globals['_WIRELESSLANGROUP']._serialized_end=100986 + _globals['_WIRELESSLANGROUP']._serialized_start=101344 + _globals['_WIRELESSLANGROUP']._serialized_end=101736 _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLINK']._serialized_start=100989 - _globals['_WIRELESSLINK']._serialized_end=101942 + _globals['_WIRELESSLINK']._serialized_start=101739 + _globals['_WIRELESSLINK']._serialized_end=102692 _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_start=6118 _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INGESTERSERVICE']._serialized_start=101944 - _globals['_INGESTERSERVICE']._serialized_end=102022 + _globals['_INGESTERSERVICE']._serialized_start=102694 + _globals['_INGESTERSERVICE']._serialized_end=102772 # @@protoc_insertion_point(module_scope) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi index 0250f7a..61a8182 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi @@ -1717,7 +1717,7 @@ class GenericObject(_message.Message): def __init__(self, object_asn: _Optional[_Union[ASN, _Mapping]] = ..., object_asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., object_aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., object_cable: _Optional[_Union[Cable, _Mapping]] = ..., object_cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., object_cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., object_circuit: _Optional[_Union[Circuit, _Mapping]] = ..., object_circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., object_circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., object_circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., object_circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., object_cluster: _Optional[_Union[Cluster, _Mapping]] = ..., object_cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., object_cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., object_console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., object_console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., object_contact: _Optional[_Union[Contact, _Mapping]] = ..., object_contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., object_contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., object_contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., object_device: _Optional[_Union[Device, _Mapping]] = ..., object_device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., object_device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., object_device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., object_fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., object_fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., object_front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., object_ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., object_ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., object_ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., object_ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., object_ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., object_ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., object_ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., object_interface: _Optional[_Union[Interface, _Mapping]] = ..., object_inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., object_inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., object_l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., object_l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., object_location: _Optional[_Union[Location, _Mapping]] = ..., object_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., object_manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., object_module: _Optional[_Union[Module, _Mapping]] = ..., object_module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., object_module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., object_platform: _Optional[_Union[Platform, _Mapping]] = ..., object_power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., object_power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., object_power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., object_power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., object_prefix: _Optional[_Union[Prefix, _Mapping]] = ..., object_provider: _Optional[_Union[Provider, _Mapping]] = ..., object_provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., object_provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., object_rir: _Optional[_Union[RIR, _Mapping]] = ..., object_rack: _Optional[_Union[Rack, _Mapping]] = ..., object_rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., object_rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., object_rack_type: _Optional[_Union[RackType, _Mapping]] = ..., object_rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., object_region: _Optional[_Union[Region, _Mapping]] = ..., object_role: _Optional[_Union[Role, _Mapping]] = ..., object_route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., object_service: _Optional[_Union[Service, _Mapping]] = ..., object_site: _Optional[_Union[Site, _Mapping]] = ..., object_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., object_tag: _Optional[_Union[Tag, _Mapping]] = ..., object_tenant: _Optional[_Union[Tenant, _Mapping]] = ..., object_tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., object_tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., object_tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., object_tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., object_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., object_vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., object_vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., object_vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., object_vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., object_vrf: _Optional[_Union[VRF, _Mapping]] = ..., object_virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., object_virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., object_virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., object_virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., object_virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., object_virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., object_virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., object_wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., object_wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., object_wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ...) -> None: ... class IKEPolicy(_message.Message): - __slots__ = ("name", "description", "version", "mode", "preshared_key", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "version", "mode", "preshared_key", "comments", "tags", "custom_fields", "proposals") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1733,6 +1733,7 @@ class IKEPolicy(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + PROPOSALS_FIELD_NUMBER: _ClassVar[int] name: str description: str version: int @@ -1741,7 +1742,8 @@ class IKEPolicy(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., version: _Optional[int] = ..., mode: _Optional[str] = ..., preshared_key: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + proposals: _containers.RepeatedCompositeFieldContainer[IKEProposal] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., version: _Optional[int] = ..., mode: _Optional[str] = ..., preshared_key: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., proposals: _Optional[_Iterable[_Union[IKEProposal, _Mapping]]] = ...) -> None: ... class IKEProposal(_message.Message): __slots__ = ("name", "description", "authentication_method", "encryption_algorithm", "authentication_algorithm", "group", "sa_lifetime", "comments", "tags", "custom_fields") @@ -1847,7 +1849,7 @@ class IPRange(_message.Message): def __init__(self, start_address: _Optional[str] = ..., end_address: _Optional[str] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., mark_utilized: bool = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class IPSecPolicy(_message.Message): - __slots__ = ("name", "description", "pfs_group", "comments", "tags", "custom_fields") + __slots__ = ("name", "description", "pfs_group", "comments", "tags", "custom_fields", "proposals") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1861,13 +1863,15 @@ class IPSecPolicy(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + PROPOSALS_FIELD_NUMBER: _ClassVar[int] name: str description: str pfs_group: int comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., pfs_group: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + proposals: _containers.RepeatedCompositeFieldContainer[IPSecProposal] + def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., pfs_group: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., proposals: _Optional[_Iterable[_Union[IPSecProposal, _Mapping]]] = ...) -> None: ... class IPSecProfile(_message.Message): __slots__ = ("name", "description", "mode", "ike_policy", "ipsec_policy", "comments", "tags", "custom_fields") @@ -1926,7 +1930,7 @@ class IPSecProposal(_message.Message): def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., encryption_algorithm: _Optional[str] = ..., authentication_algorithm: _Optional[str] = ..., sa_lifetime_seconds: _Optional[int] = ..., sa_lifetime_data: _Optional[int] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class Interface(_message.Message): - __slots__ = ("device", "module", "name", "label", "type", "enabled", "parent", "bridge", "lag", "mtu", "primary_mac_address", "speed", "duplex", "wwn", "mgmt_only", "description", "mode", "rf_role", "rf_channel", "poe_mode", "poe_type", "rf_channel_frequency", "rf_channel_width", "tx_power", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "mark_connected", "vrf", "tags", "custom_fields") + __slots__ = ("device", "module", "name", "label", "type", "enabled", "parent", "bridge", "lag", "mtu", "primary_mac_address", "speed", "duplex", "wwn", "mgmt_only", "description", "mode", "rf_role", "rf_channel", "poe_mode", "poe_type", "rf_channel_frequency", "rf_channel_width", "tx_power", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "mark_connected", "vrf", "tags", "custom_fields", "vdcs", "tagged_vlans", "wireless_lans") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -1965,6 +1969,9 @@ class Interface(_message.Message): VRF_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + VDCS_FIELD_NUMBER: _ClassVar[int] + TAGGED_VLANS_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LANS_FIELD_NUMBER: _ClassVar[int] device: Device module: Module name: str @@ -1996,7 +2003,10 @@ class Interface(_message.Message): vrf: VRF tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[Interface, _Mapping]] = ..., bridge: _Optional[_Union[Interface, _Mapping]] = ..., lag: _Optional[_Union[Interface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., speed: _Optional[int] = ..., duplex: _Optional[str] = ..., wwn: _Optional[str] = ..., mgmt_only: bool = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., rf_role: _Optional[str] = ..., rf_channel: _Optional[str] = ..., poe_mode: _Optional[str] = ..., poe_type: _Optional[str] = ..., rf_channel_frequency: _Optional[float] = ..., rf_channel_width: _Optional[float] = ..., tx_power: _Optional[int] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., mark_connected: bool = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + vdcs: _containers.RepeatedCompositeFieldContainer[VirtualDeviceContext] + tagged_vlans: _containers.RepeatedCompositeFieldContainer[VLAN] + wireless_lans: _containers.RepeatedCompositeFieldContainer[WirelessLAN] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., name: _Optional[str] = ..., label: _Optional[str] = ..., type: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[Interface, _Mapping]] = ..., bridge: _Optional[_Union[Interface, _Mapping]] = ..., lag: _Optional[_Union[Interface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., speed: _Optional[int] = ..., duplex: _Optional[str] = ..., wwn: _Optional[str] = ..., mgmt_only: bool = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., rf_role: _Optional[str] = ..., rf_channel: _Optional[str] = ..., poe_mode: _Optional[str] = ..., poe_type: _Optional[str] = ..., rf_channel_frequency: _Optional[float] = ..., rf_channel_width: _Optional[float] = ..., tx_power: _Optional[int] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., mark_connected: bool = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., vdcs: _Optional[_Iterable[_Union[VirtualDeviceContext, _Mapping]]] = ..., tagged_vlans: _Optional[_Iterable[_Union[VLAN, _Mapping]]] = ..., wireless_lans: _Optional[_Iterable[_Union[WirelessLAN, _Mapping]]] = ...) -> None: ... class InventoryItem(_message.Message): __slots__ = ("device", "parent", "name", "label", "status", "role", "manufacturer", "part_id", "serial", "asset_tag", "discovered", "description", "component_console_port", "component_console_server_port", "component_front_port", "component_interface", "component_power_outlet", "component_power_port", "component_rear_port", "tags", "custom_fields") @@ -2075,7 +2085,7 @@ class InventoryItemRole(_message.Message): def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., color: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class L2VPN(_message.Message): - __slots__ = ("identifier", "name", "slug", "type", "description", "comments", "tenant", "tags", "custom_fields") + __slots__ = ("identifier", "name", "slug", "type", "description", "comments", "tenant", "tags", "custom_fields", "import_targets", "export_targets") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2092,6 +2102,8 @@ class L2VPN(_message.Message): TENANT_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + IMPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] + EXPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] identifier: int name: str slug: str @@ -2101,7 +2113,9 @@ class L2VPN(_message.Message): tenant: Tenant tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, identifier: _Optional[int] = ..., name: _Optional[str] = ..., slug: _Optional[str] = ..., type: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + import_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] + export_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] + def __init__(self, identifier: _Optional[int] = ..., name: _Optional[str] = ..., slug: _Optional[str] = ..., type: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., import_targets: _Optional[_Iterable[_Union[RouteTarget, _Mapping]]] = ..., export_targets: _Optional[_Iterable[_Union[RouteTarget, _Mapping]]] = ...) -> None: ... class L2VPNTermination(_message.Message): __slots__ = ("l2vpn", "assigned_object_interface", "assigned_object_vlan", "assigned_object_vm_interface", "tags", "custom_fields") @@ -2497,7 +2511,7 @@ class Prefix(_message.Message): def __init__(self, prefix: _Optional[str] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., scope_location: _Optional[_Union[Location, _Mapping]] = ..., scope_region: _Optional[_Union[Region, _Mapping]] = ..., scope_site: _Optional[_Union[Site, _Mapping]] = ..., scope_site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., status: _Optional[str] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., is_pool: bool = ..., mark_utilized: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class Provider(_message.Message): - __slots__ = ("name", "slug", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "slug", "description", "comments", "tags", "custom_fields", "accounts", "asns") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2511,13 +2525,17 @@ class Provider(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + ACCOUNTS_FIELD_NUMBER: _ClassVar[int] + ASNS_FIELD_NUMBER: _ClassVar[int] name: str slug: str description: str comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + accounts: _containers.RepeatedCompositeFieldContainer[ProviderAccount] + asns: _containers.RepeatedCompositeFieldContainer[ASN] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., accounts: _Optional[_Iterable[_Union[ProviderAccount, _Mapping]]] = ..., asns: _Optional[_Iterable[_Union[ASN, _Mapping]]] = ...) -> None: ... class ProviderAccount(_message.Message): __slots__ = ("provider", "name", "account", "description", "comments", "tags", "custom_fields") @@ -2857,7 +2875,7 @@ class RouteTarget(_message.Message): def __init__(self, name: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class Service(_message.Message): - __slots__ = ("device", "virtual_machine", "name", "protocol", "ports", "description", "comments", "tags", "custom_fields") + __slots__ = ("device", "virtual_machine", "name", "protocol", "ports", "description", "comments", "tags", "custom_fields", "ipaddresses") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2874,6 +2892,7 @@ class Service(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + IPADDRESSES_FIELD_NUMBER: _ClassVar[int] device: Device virtual_machine: VirtualMachine name: str @@ -2883,10 +2902,11 @@ class Service(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., protocol: _Optional[str] = ..., ports: _Optional[_Iterable[int]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + ipaddresses: _containers.RepeatedCompositeFieldContainer[IPAddress] + def __init__(self, device: _Optional[_Union[Device, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., protocol: _Optional[str] = ..., ports: _Optional[_Iterable[int]] = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., ipaddresses: _Optional[_Iterable[_Union[IPAddress, _Mapping]]] = ...) -> None: ... class Site(_message.Message): - __slots__ = ("name", "slug", "status", "region", "group", "tenant", "facility", "time_zone", "description", "physical_address", "shipping_address", "latitude", "longitude", "comments", "tags", "custom_fields") + __slots__ = ("name", "slug", "status", "region", "group", "tenant", "facility", "time_zone", "description", "physical_address", "shipping_address", "latitude", "longitude", "comments", "tags", "custom_fields", "asns") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -2910,6 +2930,7 @@ class Site(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + ASNS_FIELD_NUMBER: _ClassVar[int] name: str slug: str status: str @@ -2926,7 +2947,8 @@ class Site(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., status: _Optional[str] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., facility: _Optional[str] = ..., time_zone: _Optional[str] = ..., description: _Optional[str] = ..., physical_address: _Optional[str] = ..., shipping_address: _Optional[str] = ..., latitude: _Optional[float] = ..., longitude: _Optional[float] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + asns: _containers.RepeatedCompositeFieldContainer[ASN] + def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., status: _Optional[str] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., facility: _Optional[str] = ..., time_zone: _Optional[str] = ..., description: _Optional[str] = ..., physical_address: _Optional[str] = ..., shipping_address: _Optional[str] = ..., latitude: _Optional[float] = ..., longitude: _Optional[float] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., asns: _Optional[_Iterable[_Union[ASN, _Mapping]]] = ...) -> None: ... class SiteGroup(_message.Message): __slots__ = ("name", "slug", "parent", "description", "tags", "custom_fields") @@ -3355,7 +3377,7 @@ class VLANTranslationRule(_message.Message): def __init__(self, policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., local_vid: _Optional[int] = ..., remote_vid: _Optional[int] = ..., description: _Optional[str] = ...) -> None: ... class VMInterface(_message.Message): - __slots__ = ("virtual_machine", "name", "enabled", "parent", "bridge", "mtu", "primary_mac_address", "description", "mode", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "vrf", "tags", "custom_fields") + __slots__ = ("virtual_machine", "name", "enabled", "parent", "bridge", "mtu", "primary_mac_address", "description", "mode", "untagged_vlan", "qinq_svlan", "vlan_translation_policy", "vrf", "tags", "custom_fields", "tagged_vlans") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3378,6 +3400,7 @@ class VMInterface(_message.Message): VRF_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + TAGGED_VLANS_FIELD_NUMBER: _ClassVar[int] virtual_machine: VirtualMachine name: str enabled: bool @@ -3393,10 +3416,11 @@ class VMInterface(_message.Message): vrf: VRF tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[VMInterface, _Mapping]] = ..., bridge: _Optional[_Union[VMInterface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + tagged_vlans: _containers.RepeatedCompositeFieldContainer[VLAN] + def __init__(self, virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., name: _Optional[str] = ..., enabled: bool = ..., parent: _Optional[_Union[VMInterface, _Mapping]] = ..., bridge: _Optional[_Union[VMInterface, _Mapping]] = ..., mtu: _Optional[int] = ..., primary_mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., description: _Optional[str] = ..., mode: _Optional[str] = ..., untagged_vlan: _Optional[_Union[VLAN, _Mapping]] = ..., qinq_svlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., tagged_vlans: _Optional[_Iterable[_Union[VLAN, _Mapping]]] = ...) -> None: ... class VRF(_message.Message): - __slots__ = ("name", "rd", "tenant", "enforce_unique", "description", "comments", "tags", "custom_fields") + __slots__ = ("name", "rd", "tenant", "enforce_unique", "description", "comments", "tags", "custom_fields", "import_targets", "export_targets") class CustomFieldsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -3412,6 +3436,8 @@ class VRF(_message.Message): COMMENTS_FIELD_NUMBER: _ClassVar[int] TAGS_FIELD_NUMBER: _ClassVar[int] CUSTOM_FIELDS_FIELD_NUMBER: _ClassVar[int] + IMPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] + EXPORT_TARGETS_FIELD_NUMBER: _ClassVar[int] name: str rd: str tenant: Tenant @@ -3420,7 +3446,9 @@ class VRF(_message.Message): comments: str tags: _containers.RepeatedCompositeFieldContainer[Tag] custom_fields: _containers.MessageMap[str, CustomFieldValue] - def __init__(self, name: _Optional[str] = ..., rd: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., enforce_unique: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... + import_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] + export_targets: _containers.RepeatedCompositeFieldContainer[RouteTarget] + def __init__(self, name: _Optional[str] = ..., rd: _Optional[str] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., enforce_unique: bool = ..., description: _Optional[str] = ..., comments: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ..., import_targets: _Optional[_Iterable[_Union[RouteTarget, _Mapping]]] = ..., export_targets: _Optional[_Iterable[_Union[RouteTarget, _Mapping]]] = ...) -> None: ... class VirtualChassis(_message.Message): __slots__ = ("name", "domain", "master", "description", "comments", "tags", "custom_fields") diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index dc44bbf..a412594 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -2,7 +2,7 @@ # # Generated code. DO NOT EDIT. -# Timestamp: 2025-03-19 19:34:03Z +# Timestamp: 2025-04-01 21:05:15Z # # ruff: noqa: C901 @@ -2501,10 +2501,12 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + proposals: list[str | IKEProposal | pb.IKEProposal] | None = None, ) -> pb.IKEPolicy: """Create a new IKEPolicy.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + proposals = convert_to_protobuf_list(proposals, pb.IKEProposal) return pb.IKEPolicy( name=name, description=description, @@ -2514,6 +2516,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + proposals=proposals, ) @@ -2685,10 +2688,12 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + proposals: list[str | IPSecProposal | pb.IPSecProposal] | None = None, ) -> pb.IPSecPolicy: """Create a new IPSecPolicy.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + proposals = convert_to_protobuf_list(proposals, pb.IPSecProposal) return pb.IPSecPolicy( name=name, description=description, @@ -2696,6 +2701,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + proposals=proposals, ) @@ -2797,6 +2803,9 @@ def __new__( vrf: str | VRF | pb.VRF | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + vdcs: list[str | VirtualDeviceContext | pb.VirtualDeviceContext] | None = None, + tagged_vlans: list[str | VLAN | pb.VLAN] | None = None, + wireless_lans: list[str | WirelessLAN | pb.WirelessLAN] | None = None, # shortcuts manufacturer: str | Manufacturer | pb.Manufacturer = None, device_type: str | DeviceType | pb.DeviceType = None, @@ -2817,6 +2826,9 @@ def __new__( vrf = convert_to_protobuf(vrf, pb.VRF) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + vdcs = convert_to_protobuf_list(vdcs, pb.VirtualDeviceContext) + tagged_vlans = convert_to_protobuf_list(tagged_vlans, pb.VLAN) + wireless_lans = convert_to_protobuf_list(wireless_lans, pb.WirelessLAN) # shortcut types (not directly used) manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) @@ -2875,6 +2887,9 @@ def __new__( vrf=vrf, tags=tags, custom_fields=custom_fields, + vdcs=vdcs, + tagged_vlans=tagged_vlans, + wireless_lans=wireless_lans, ) @@ -2983,11 +2998,15 @@ def __new__( tenant: str | Tenant | pb.Tenant | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + import_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, + export_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, ) -> pb.L2VPN: """Create a new L2VPN.""" tenant = convert_to_protobuf(tenant, pb.Tenant) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + import_targets = convert_to_protobuf_list(import_targets, pb.RouteTarget) + export_targets = convert_to_protobuf_list(export_targets, pb.RouteTarget) return pb.L2VPN( identifier=identifier, name=name, @@ -2998,6 +3017,8 @@ def __new__( tenant=tenant, tags=tags, custom_fields=custom_fields, + import_targets=import_targets, + export_targets=export_targets, ) @@ -3466,10 +3487,14 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + accounts: list[str | ProviderAccount | pb.ProviderAccount] | None = None, + asns: list[str | ASN | pb.ASN] | None = None, ) -> pb.Provider: """Create a new Provider.""" tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + accounts = convert_to_protobuf_list(accounts, pb.ProviderAccount) + asns = convert_to_protobuf_list(asns, pb.ASN) return pb.Provider( name=name, slug=slug, @@ -3477,6 +3502,8 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + accounts=accounts, + asns=asns, ) @@ -3867,12 +3894,14 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + ipaddresses: list[str | IPAddress | pb.IPAddress] | None = None, ) -> pb.Service: """Create a new Service.""" device = convert_to_protobuf(device, pb.Device) virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + ipaddresses = convert_to_protobuf_list(ipaddresses, pb.IPAddress) return pb.Service( device=device, virtual_machine=virtual_machine, @@ -3883,6 +3912,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + ipaddresses=ipaddresses, ) @@ -3907,6 +3937,7 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + asns: list[str | ASN | pb.ASN] | None = None, ) -> pb.Site: """Create a new Site.""" region = convert_to_protobuf(region, pb.Region) @@ -3914,6 +3945,7 @@ def __new__( tenant = convert_to_protobuf(tenant, pb.Tenant) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + asns = convert_to_protobuf_list(asns, pb.ASN) return pb.Site( name=name, slug=slug, @@ -3931,6 +3963,7 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + asns=asns, ) @@ -4526,6 +4559,7 @@ def __new__( vrf: str | VRF | pb.VRF | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + tagged_vlans: list[str | VLAN | pb.VLAN] | None = None, ) -> pb.VMInterface: """Create a new VMInterface.""" virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) @@ -4538,6 +4572,7 @@ def __new__( vrf = convert_to_protobuf(vrf, pb.VRF) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + tagged_vlans = convert_to_protobuf_list(tagged_vlans, pb.VLAN) return pb.VMInterface( virtual_machine=virtual_machine, name=name, @@ -4554,6 +4589,7 @@ def __new__( vrf=vrf, tags=tags, custom_fields=custom_fields, + tagged_vlans=tagged_vlans, ) @@ -4570,11 +4606,15 @@ def __new__( comments: str | None = None, tags: list[str | Tag | pb.Tag] | None = None, custom_fields: dict[str, str | CustomFieldValue | pb.CustomFieldValue] | None = None, + import_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, + export_targets: list[str | RouteTarget | pb.RouteTarget] | None = None, ) -> pb.VRF: """Create a new VRF.""" tenant = convert_to_protobuf(tenant, pb.Tenant) tags = convert_to_protobuf_list(tags, pb.Tag) custom_fields = convert_to_protobuf_dict(custom_fields, pb.CustomFieldValue) + import_targets = convert_to_protobuf_list(import_targets, pb.RouteTarget) + export_targets = convert_to_protobuf_list(export_targets, pb.RouteTarget) return pb.VRF( name=name, rd=rd, @@ -4584,6 +4624,8 @@ def __new__( comments=comments, tags=tags, custom_fields=custom_fields, + import_targets=import_targets, + export_targets=export_targets, ) From a0b432ec7f8c0adf023b3a19d0ac84a25eeaa7ee Mon Sep 17 00:00:00 2001 From: Luke Tucker Date: Wed, 9 Apr 2025 16:34:30 -0400 Subject: [PATCH 03/24] feat: update protobufs with additional custom field types --- netboxlabs/diode/sdk/diode/v1/ingester_pb2.py | 704 +++++++++--------- .../diode/sdk/diode/v1/ingester_pb2.pyi | 230 +++--- netboxlabs/diode/sdk/ingester.py | 359 ++++----- tests/test_ingester.py | 1 - 4 files changed, 633 insertions(+), 661 deletions(-) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py index 4ea678e..8b7594f 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.py @@ -16,7 +16,7 @@ from netboxlabs.diode.sdk.validate import validate_pb2 as validate_dot_validate__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\xd3)\n\x06\x45ntity\x12\x44\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestamp\x12\x31\n\tasn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x03 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x08 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\x0b \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x15 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x16 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x19 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1c \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1d \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1e \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1f \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18 \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18! \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\" \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18# \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18$ \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18% \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18& \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18\' \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18( \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18) \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18* \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18+ \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18, \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18- \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18. \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18/ \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18\x30 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x31 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x32 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x33 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x34 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x35 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x36 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x37 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x38 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x39 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18: \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18; \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18< \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18= \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18> \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18? \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x41 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x42 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x43 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x44 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x45 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x46 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18G \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18H \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18I \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18J \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18K \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18L \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18M \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18N \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18O \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18P \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18Q \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18R \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18S \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18T \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18U \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18V \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18W \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18X \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18Y \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Z \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xaa\x03\n\x03\x41SN\x12\x10\n\x03\x61sn\x18\x01 \x01(\x03R\x03\x61sn\x12$\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x07 \x03(\x0b\x32\x1f.diode.v1.ASN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x06\n\x04_rirB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb7\x03\n\x08\x41SNRange\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1f\n\x03rir\x18\x03 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\t \x03(\x0b\x32$.diode.v1.ASNRange.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\x0e\n\x0c_description\"\xfe\x03\n\tAggregate\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1f\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12>\n\ndate_added\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tdateAdded\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.Aggregate.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\r\n\x0b_date_addedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf1\x07\n\x05\x43\x61\x62le\x12\xdd\x01\n\x04type\x18\x01 \x01(\tB\xc3\x01\xfa\x42\xbf\x01r\xbc\x01R\x03\x61ocR\x04\x63\x61t3R\x04\x63\x61t5R\x05\x63\x61t5eR\x04\x63\x61t6R\x05\x63\x61t6aR\x04\x63\x61t7R\x05\x63\x61t7aR\x04\x63\x61t8R\x07\x63oaxialR\ndac-activeR\x0b\x64\x61\x63-passiveR\x03mmfR\x07mmf-om1R\x07mmf-om2R\x07mmf-om3R\x07mmf-om4R\x07mmf-om5R\x0bmrj21-trunkR\x05powerR\x03smfR\x07smf-os1R\x07smf-os2R\x03usbH\x00R\x04type\x88\x01\x01\x12>\n\x0e\x61_terminations\x18\x02 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\raTerminations\x12>\n\x0e\x62_terminations\x18\x03 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\rbTerminations\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x19\n\x05label\x18\x06 \x01(\tH\x03R\x05label\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x07 \x01(\tH\x04R\x05\x63olor\x88\x01\x01\x12\x1b\n\x06length\x18\x08 \x01(\x01H\x05R\x06length\x88\x01\x01\x12\x42\n\x0blength_unit\x18\t \x01(\tB\x1c\xfa\x42\x19r\x17R\x02\x63mR\x02\x66tR\x02inR\x02kmR\x01mR\x02miH\x06R\nlengthUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x07R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x46\n\rcustom_fields\x18\r \x03(\x0b\x32!.diode.v1.Cable.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_typeB\t\n\x07_statusB\t\n\x07_tenantB\x08\n\x06_labelB\x08\n\x06_colorB\t\n\x07_lengthB\x0e\n\x0c_length_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9e\x01\n\tCablePath\x12 \n\tis_active\x18\x01 \x01(\x08H\x00R\x08isActive\x88\x01\x01\x12$\n\x0bis_complete\x18\x02 \x01(\x08H\x01R\nisComplete\x88\x01\x01\x12\x1e\n\x08is_split\x18\x03 \x01(\x08H\x02R\x07isSplit\x88\x01\x01\x42\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\xe3\x06\n\x10\x43\x61\x62leTermination\x12%\n\x05\x63\x61\x62le\x18\x01 \x01(\x0b\x32\x0f.diode.v1.CableR\x05\x63\x61\x62le\x12(\n\tcable_end\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01\x42R\x08\x63\x61\x62leEnd\x12\x66\n\x1ftermination_circuit_termination\x18\x03 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_console_port\x18\x04 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x05 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12K\n\x16termination_front_port\x18\x06 \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12J\n\x15termination_interface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12K\n\x16termination_power_feed\x18\x08 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\t \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12K\n\x16termination_power_port\x18\n \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12H\n\x15termination_rear_port\x18\x0b \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPortB\r\n\x0btermination\"\xe6\x08\n\x07\x43ircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12.\n\x08provider\x18\x02 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12)\n\x04type\x18\x04 \x01(\x0b\x32\x15.diode.v1.CircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x42\n\x0cinstall_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x0binstallDate\x88\x01\x01\x12J\n\x10termination_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04R\x0fterminationDate\x88\x01\x01\x12$\n\x0b\x63ommit_rate\x18\t \x01(\x03H\x05R\ncommitRate\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\x0b \x01(\x01H\x07R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x08R\x0c\x64istanceUnit\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\r \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x42\n\x0b\x61ssignments\x18\x0f \x03(\x0b\x32 .diode.v1.CircuitGroupAssignmentR\x0b\x61ssignments\x12H\n\rcustom_fields\x18\x10 \x03(\x0b\x32#.diode.v1.Circuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0f\n\r_install_dateB\x13\n\x11_termination_dateB\x0e\n\x0c_commit_rateB\x0e\n\x0c_descriptionB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0b\n\t_comments\"\xf6\x02\n\x0c\x43ircuitGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.CircuitGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_tenant\"\xde\x02\n\x16\x43ircuitGroupAssignment\x12,\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.CircuitGroupR\x05group\x12:\n\x0emember_circuit\x18\x02 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\rmemberCircuit\x12P\n\x16member_virtual_circuit\x18\x03 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14memberVirtualCircuit\x12N\n\x08priority\x18\x04 \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x01R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06memberB\x0b\n\t_priority\"\x8c\x08\n\x12\x43ircuitTermination\x12+\n\x07\x63ircuit\x18\x01 \x01(\x0b\x32\x11.diode.v1.CircuitR\x07\x63ircuit\x12(\n\tterm_side\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01ZR\x08termSide\x12G\n\x14termination_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12]\n\x1ctermination_provider_network\x18\x04 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x41\n\x12termination_region\x18\x05 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_site\x18\x06 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x07 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\"\n\nport_speed\x18\x08 \x01(\x03H\x01R\tportSpeed\x88\x01\x01\x12*\n\x0eupstream_speed\x18\t \x01(\x03H\x02R\rupstreamSpeed\x88\x01\x01\x12$\n\x0bxconnect_id\x18\n \x01(\tH\x03R\nxconnectId\x88\x01\x01\x12\x1c\n\x07pp_info\x18\x0b \x01(\tH\x04R\x06ppInfo\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\r \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x0f \x03(\x0b\x32..diode.v1.CircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_port_speedB\x11\n\x0f_upstream_speedB\x0e\n\x0c_xconnect_idB\n\n\x08_pp_infoB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xdf\x02\n\x0b\x43ircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.CircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xc0\x06\n\x07\x43luster\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12\x31\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x01R\x05group\x88\x01\x01\x12V\n\x06status\x18\x04 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07offlineR\x07plannedR\x07stagingH\x02R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\r \x03(\x0b\x32#.diode.v1.Cluster.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x08\n\x06_groupB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0c\x43lusterGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x05 \x03(\x0b\x32(.diode.v1.ClusterGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xba\x02\n\x0b\x43lusterType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ClusterType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xed\x05\n\x0b\x43onsolePort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\n \x03(\x0b\x32\'.diode.v1.ConsolePort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xf9\x05\n\x11\x43onsoleServerPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\n \x03(\x0b\x32-.diode.v1.ConsoleServerPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc5\x04\n\x07\x43ontact\x12\x31\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x05group\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05title\x18\x03 \x01(\tH\x01R\x05title\x88\x01\x01\x12\x19\n\x05phone\x18\x04 \x01(\tH\x02R\x05phone\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x03R\x05\x65mail\x88\x01\x01\x12\x1d\n\x07\x61\x64\x64ress\x18\x06 \x01(\tH\x04R\x07\x61\x64\x64ress\x88\x01\x01\x12\x17\n\x04link\x18\x07 \x01(\tH\x05R\x04link\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x07R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\x0b \x03(\x0b\x32#.diode.v1.Contact.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_groupB\x08\n\x06_titleB\x08\n\x06_phoneB\x08\n\x06_emailB\n\n\x08_addressB\x07\n\x05_linkB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe5\x34\n\x11\x43ontactAssignment\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLink\x12+\n\x07\x63ontact\x18Y \x01(\x0b\x32\x11.diode.v1.ContactR\x07\x63ontact\x12.\n\x04role\x18Z \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x01R\x04role\x88\x01\x01\x12N\n\x08priority\x18[ \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x02R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.ContactAssignment.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06objectB\x07\n\x05_roleB\x0b\n\t_priority\"\xfc\x02\n\x0c\x43ontactGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x33\n\x06parent\x18\x03 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.ContactGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xba\x02\n\x0b\x43ontactRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ContactRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xa1)\n\x1a\x43ustomFieldObjectReference\x12\x31\n\tasn_range\x18\x01 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12!\n\x03\x61sn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x33\n\taggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\x34\n\ncable_path\x18\x04 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12\'\n\x05\x63\x61\x62le\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12I\n\x11\x63\x61\x62le_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12O\n\x13\x63ircuit_termination\x18\x07 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12\\\n\x18\x63ircuit_group_assignment\x18\x08 \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12=\n\rcircuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12-\n\x07\x63ircuit\x18\n \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12:\n\x0c\x63ircuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12=\n\rcluster_group\x18\x0c \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12:\n\x0c\x63luster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12L\n\x12\x63ontact_assignment\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x12 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x13 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12-\n\x07\x63ontact\x18\x14 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12$\n\x04vlan\x18\x15 \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\ndevice_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12*\n\x06\x64\x65vice\x18\x18 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x37\n\x0b\x64\x65vice_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12S\n\x15\x66hrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12\x31\n\trear_port\x18\x1c \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12\x34\n\nfront_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12@\n\x0egeneric_object\x18\x1e \x01(\x0b\x32\x17.diode.v1.GenericObjectH\x00R\rgenericObject\x12\x34\n\nike_policy\x18\x1f \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18 \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18! \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18\" \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18# \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18$ \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18% \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18& \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12M\n\x13inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12@\n\x0einventory_item\x18( \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12\'\n\x05l2vpn\x18) \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18* \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18+ \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18, \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18- \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12\x34\n\nmodule_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12*\n\x06module\x18/ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x37\n\x0bmodule_type\x18\x30 \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12*\n\x06region\x18\x31 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12\x34\n\nsite_group\x18\x32 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x33 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12:\n\x0ctenant_group\x18\x34 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12:\n\x0cvm_interface\x18\x35 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12\x43\n\x0fvirtual_machine\x18\x36 \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12J\n\x12wireless_lan_group\x18\x37 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18\x38 \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLink\x12\x30\n\x08platform\x18\x39 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18: \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18; \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18< \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18= \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18> \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x46\n\x10provider_account\x18? \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18@ \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12\x30\n\x08provider\x18\x41 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12!\n\x03rir\x18\x42 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12\x46\n\x10rack_reservation\x18\x43 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18\x44 \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12$\n\x04rack\x18\x45 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x31\n\track_type\x18\x46 \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12$\n\x04role\x18G \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18H \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18I \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18J \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12*\n\x06tenant\x18K \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctunnel_group\x18L \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12*\n\x06tunnel\x18M \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12L\n\x12tunnel_termination\x18N \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12\x34\n\nvlan_group\x18O \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18P \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18Q \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12!\n\x03vrf\x18R \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18S \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18T \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18U \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18V \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18W \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18X \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12:\n\x0cwireless_lan\x18Y \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLanB\x08\n\x06object\"\xed\x02\n\x10\x43ustomFieldValue\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x1a\n\x07integer\x18\x02 \x01(\x03H\x00R\x07integer\x12\x1a\n\x07\x64\x65\x63imal\x18\x03 \x01(\x01H\x00R\x07\x64\x65\x63imal\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12:\n\ttimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x12>\n\x06object\x18\x06 \x01(\x0b\x32$.diode.v1.CustomFieldObjectReferenceH\x00R\x06object\x12!\n\x0cstring_array\x18\x07 \x03(\tR\x0bstringArray\x12G\n\x0cobject_array\x18\x08 \x03(\x0b\x32$.diode.v1.CustomFieldObjectReferenceR\x0bobjectArrayB\x07\n\x05value\"\xf1\r\n\x06\x44\x65vice\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12(\n\x04role\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceRoleR\x04role\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x08platform\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x03R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x07 \x01(\tH\x04R\x08\x61ssetTag\x88\x01\x01\x12\"\n\x04site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\t \x01(\x0b\x32\x12.diode.v1.LocationH\x05R\x08location\x88\x01\x01\x12\'\n\x04rack\x18\n \x01(\x0b\x32\x0e.diode.v1.RackH\x06R\x04rack\x88\x01\x01\x12\x1f\n\x08position\x18\x0b \x01(\x01H\x07R\x08position\x88\x01\x01\x12+\n\x04\x66\x61\x63\x65\x18\x0c \x01(\tB\x12\xfa\x42\x0fr\rR\x05\x66rontR\x04rearH\x08R\x04\x66\x61\x63\x65\x88\x01\x01\x12\x1f\n\x08latitude\x18\r \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\x0e \x01(\x01H\nR\tlongitude\x88\x01\x01\x12h\n\x06status\x18\x0f \x01(\tBK\xfa\x42HrFR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\tinventoryR\x07offlineR\x07plannedR\x06stagedH\x0bR\x06status\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\x10 \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x0cR\x07\x61irflow\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x11 \x01(\x0b\x32\x13.diode.v1.IPAddressH\rR\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x12 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0eR\nprimaryIp6\x88\x01\x01\x12/\n\x06oob_ip\x18\x13 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0fR\x05oobIp\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x14 \x01(\x0b\x32\x11.diode.v1.ClusterH\x10R\x07\x63luster\x88\x01\x01\x12\x46\n\x0fvirtual_chassis\x18\x15 \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x11R\x0evirtualChassis\x88\x01\x01\x12$\n\x0bvc_position\x18\x16 \x01(\x03H\x12R\nvcPosition\x88\x01\x01\x12$\n\x0bvc_priority\x18\x17 \x01(\x03H\x13R\nvcPriority\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x14R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x15R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x1b \x03(\x0b\x32\".diode.v1.Device.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\t\n\x07_tenantB\x0b\n\t_platformB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0b\n\t_locationB\x07\n\x05_rackB\x0b\n\t_positionB\x07\n\x05_faceB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\t\n\x07_statusB\n\n\x08_airflowB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\t\n\x07_oob_ipB\n\n\x08_clusterB\x12\n\x10_virtual_chassisB\x0e\n\x0c_vc_positionB\x0e\n\x0c_vc_priorityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc8\x03\n\tDeviceBay\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05label\x18\x03 \x01(\tH\x00R\x05label\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12@\n\x10installed_device\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x02R\x0finstalledDevice\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x07 \x03(\x0b\x32%.diode.v1.DeviceBay.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_labelB\x0e\n\x0c_descriptionB\x13\n\x11_installed_device\"\x87\x03\n\nDeviceRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12\x1c\n\x07vm_role\x18\x04 \x01(\x08H\x01R\x06vmRole\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x07 \x03(\x0b\x32&.diode.v1.DeviceRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\n\n\x08_vm_roleB\x0e\n\x0c_description\"\xfc\x08\n\nDeviceType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x42\n\x10\x64\x65\x66\x61ult_platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0f\x64\x65\x66\x61ultPlatform\x88\x01\x01\x12\x14\n\x05model\x18\x03 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x04 \x01(\tR\x04slug\x12$\n\x0bpart_number\x18\x05 \x01(\tH\x01R\npartNumber\x88\x01\x01\x12\x1e\n\x08u_height\x18\x06 \x01(\x01H\x02R\x07uHeight\x88\x01\x01\x12=\n\x18\x65xclude_from_utilization\x18\x07 \x01(\x08H\x03R\x16\x65xcludeFromUtilization\x88\x01\x01\x12\'\n\ris_full_depth\x18\x08 \x01(\x08H\x04R\x0bisFullDepth\x88\x01\x01\x12@\n\x0esubdevice_role\x18\t \x01(\tB\x14\xfa\x42\x11r\x0fR\x05\x63hildR\x06parentH\x05R\rsubdeviceRole\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\n \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x06R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x0b \x01(\x01H\x07R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x08R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\nR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x10 \x03(\x0b\x32&.diode.v1.DeviceType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_default_platformB\x0e\n\x0c_part_numberB\x0b\n\t_u_heightB\x1b\n\x19_exclude_from_utilizationB\x10\n\x0e_is_full_depthB\x11\n\x0f_subdevice_roleB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc2\x04\n\tFHRPGroup\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12S\n\x08protocol\x18\x02 \x01(\tB7\xfa\x42\x34r2R\x04\x63\x61rpR\tclusterxlR\x04glbpR\x04hsrpR\x05otherR\x05vrrp2R\x05vrrp3R\x08protocol\x12\x19\n\x08group_id\x18\x03 \x01(\x03R\x07groupId\x12\x37\n\tauth_type\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x03md5R\tplaintextH\x01R\x08\x61uthType\x88\x01\x01\x12\x1e\n\x08\x61uth_key\x18\x05 \x01(\tH\x02R\x07\x61uthKey\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\t \x03(\x0b\x32%.diode.v1.FHRPGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0c\n\n_auth_typeB\x0b\n\t_auth_keyB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xaa\x36\n\x13\x46HRPGroupAssignment\x12)\n\x05group\x18\x01 \x01(\x0b\x32\x13.diode.v1.FHRPGroupR\x05group\x12\x34\n\rinterface_asn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0cinterfaceAsn\x12\x44\n\x13interface_asn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x11interfaceAsnRange\x12\x46\n\x13interface_aggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x12interfaceAggregate\x12:\n\x0finterface_cable\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0einterfaceCable\x12G\n\x14interface_cable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x12interfaceCablePath\x12\\\n\x1binterface_cable_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x19interfaceCableTermination\x12@\n\x11interface_circuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x10interfaceCircuit\x12P\n\x17interface_circuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x15interfaceCircuitGroup\x12o\n\"interface_circuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1finterfaceCircuitGroupAssignment\x12\x62\n\x1dinterface_circuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1binterfaceCircuitTermination\x12M\n\x16interface_circuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x14interfaceCircuitType\x12@\n\x11interface_cluster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x10interfaceCluster\x12P\n\x17interface_cluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x15interfaceClusterGroup\x12M\n\x16interface_cluster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x14interfaceClusterType\x12M\n\x16interface_console_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x14interfaceConsolePort\x12`\n\x1dinterface_console_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1ainterfaceConsoleServerPort\x12@\n\x11interface_contact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x10interfaceContact\x12_\n\x1cinterface_contact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1ainterfaceContactAssignment\x12P\n\x17interface_contact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x15interfaceContactGroup\x12M\n\x16interface_contact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x14interfaceContactRole\x12=\n\x10interface_device\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0finterfaceDevice\x12G\n\x14interface_device_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x12interfaceDeviceBay\x12J\n\x15interface_device_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x13interfaceDeviceRole\x12J\n\x15interface_device_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x13interfaceDeviceType\x12G\n\x14interface_fhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x12interfaceFhrpGroup\x12\x66\n\x1finterface_fhrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1cinterfaceFhrpGroupAssignment\x12G\n\x14interface_front_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x12interfaceFrontPort\x12G\n\x14interface_ike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x12interfaceIkePolicy\x12M\n\x16interface_ike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x14interfaceIkeProposal\x12G\n\x14interface_ip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x12interfaceIpAddress\x12\x41\n\x12interface_ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x10interfaceIpRange\x12N\n\x17interface_ip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x14interfaceIpSecPolicy\x12Q\n\x18interface_ip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x15interfaceIpSecProfile\x12T\n\x19interface_ip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x16interfaceIpSecProposal\x12\x46\n\x13interface_interface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x12interfaceInterface\x12S\n\x18interface_inventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x16interfaceInventoryItem\x12`\n\x1dinterface_inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1ainterfaceInventoryItemRole\x12:\n\x0finterface_l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0einterfaceL2vpn\x12\\\n\x1binterface_l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x19interfaceL2vpnTermination\x12\x43\n\x12interface_location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x11interfaceLocation\x12J\n\x15interface_mac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x13interfaceMacAddress\x12O\n\x16interface_manufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x15interfaceManufacturer\x12=\n\x10interface_module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0finterfaceModule\x12G\n\x14interface_module_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x12interfaceModuleBay\x12J\n\x15interface_module_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x13interfaceModuleType\x12\x43\n\x12interface_platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x11interfacePlatform\x12G\n\x14interface_power_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x12interfacePowerFeed\x12M\n\x16interface_power_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x14interfacePowerOutlet\x12J\n\x15interface_power_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x13interfacePowerPanel\x12G\n\x14interface_power_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x12interfacePowerPort\x12=\n\x10interface_prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0finterfacePrefix\x12\x43\n\x12interface_provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x11interfaceProvider\x12Y\n\x1ainterface_provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x18interfaceProviderAccount\x12Y\n\x1ainterface_provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x18interfaceProviderNetwork\x12\x34\n\rinterface_rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0cinterfaceRir\x12\x37\n\x0einterface_rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\rinterfaceRack\x12Y\n\x1ainterface_rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x18interfaceRackReservation\x12\x44\n\x13interface_rack_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x11interfaceRackRole\x12\x44\n\x13interface_rack_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x11interfaceRackType\x12\x44\n\x13interface_rear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x11interfaceRearPort\x12=\n\x10interface_region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0finterfaceRegion\x12\x37\n\x0einterface_role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\rinterfaceRole\x12M\n\x16interface_route_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x14interfaceRouteTarget\x12@\n\x11interface_service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x10interfaceService\x12\x37\n\x0einterface_site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\rinterfaceSite\x12G\n\x14interface_site_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x12interfaceSiteGroup\x12\x34\n\rinterface_tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0cinterfaceTag\x12=\n\x10interface_tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0finterfaceTenant\x12M\n\x16interface_tenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x14interfaceTenantGroup\x12=\n\x10interface_tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0finterfaceTunnel\x12M\n\x16interface_tunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x14interfaceTunnelGroup\x12_\n\x1cinterface_tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1ainterfaceTunnelTermination\x12\x37\n\x0einterface_vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\rinterfaceVlan\x12G\n\x14interface_vlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x12interfaceVlanGroup\x12l\n!interface_vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1einterfaceVlanTranslationPolicy\x12\x66\n\x1finterface_vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1cinterfaceVlanTranslationRule\x12M\n\x16interface_vm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x14interfaceVmInterface\x12\x34\n\rinterface_vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0cinterfaceVrf\x12V\n\x19interface_virtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x17interfaceVirtualChassis\x12V\n\x19interface_virtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x17interfaceVirtualCircuit\x12x\n%interface_virtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\"interfaceVirtualCircuitTermination\x12\x63\n\x1einterface_virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1binterfaceVirtualCircuitType\x12i\n interface_virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1dinterfaceVirtualDeviceContext\x12M\n\x16interface_virtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x14interfaceVirtualDisk\x12V\n\x19interface_virtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x17interfaceVirtualMachine\x12M\n\x16interface_wireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x14interfaceWirelessLan\x12]\n\x1cinterface_wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x19interfaceWirelessLanGroup\x12P\n\x17interface_wireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x15interfaceWirelessLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xba\x08\n\tFrontPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xad\x03\n\x04type\x18\x05 \x01(\tB\x98\x03\xfa\x42\x94\x03r\x91\x03R\t110-punchR\x04\x34p2cR\x04\x34p4cR\x04\x36p2cR\x04\x36p4cR\x04\x36p6cR\x04\x38p2cR\x04\x38p4cR\x04\x38p6cR\x04\x38p8cR\x03\x62ncR\x02\x63sR\x01\x66R\x02\x66\x63R\x04gg45R\x02lcR\x06lc-apcR\x05lc-pcR\x06lc-upcR\x03lshR\x07lsh-apcR\x06lsh-pcR\x07lsh-upcR\x03lx5R\x07lx5-apcR\x06lx5-pcR\x07lx5-upcR\x03mpoR\x05mrj21R\x04mtrjR\x01nR\x05otherR\x02scR\x06sc-apcR\x05sc-pcR\x06sc-upcR\x07sma-905R\x07sma-906R\x02snR\x06spliceR\x02stR\x07tera-1pR\x07tera-2pR\x07tera-4pR\x06urm-p2R\x06urm-p4R\x06urm-p8R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bR\x04type\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x02R\x05\x63olor\x88\x01\x01\x12/\n\trear_port\x18\x07 \x01(\x0b\x32\x12.diode.v1.RearPortR\x08rearPort\x12\x31\n\x12rear_port_position\x18\x08 \x01(\x03H\x03R\x10rearPortPosition\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0c \x03(\x0b\x32%.diode.v1.FrontPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x08\n\x06_colorB\x15\n\x13_rear_port_positionB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xca\x31\n\rGenericObject\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLinkB\x08\n\x06object\"\xa1\x04\n\tIKEPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12#\n\x07version\x18\x03 \x01(\x03\x42\t\xfa\x42\x06\"\x04\x30\x01\x30\x02R\x07version\x12\x30\n\x04mode\x18\x04 \x01(\tB\x17\xfa\x42\x14r\x12R\naggressiveR\x04mainH\x01R\x04mode\x88\x01\x01\x12(\n\rpreshared_key\x18\x05 \x01(\tH\x02R\x0cpresharedKey\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.IKEPolicy.CustomFieldsEntryR\x0c\x63ustomFields\x12\x33\n\tproposals\x18\t \x03(\x0b\x32\x15.diode.v1.IKEProposalR\tproposals\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_preshared_keyB\x0b\n\t_comments\"\x8e\x07\n\x0bIKEProposal\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12x\n\x15\x61uthentication_method\x18\x03 \x01(\tBC\xfa\x42@r>R\x0c\x63\x65rtificatesR\x0e\x64sa-signaturesR\x0epreshared-keysR\x0ersa-signaturesR\x14\x61uthenticationMethod\x12\x99\x01\n\x14\x65ncryption_algorithm\x18\x04 \x01(\tBf\xfa\x42\x63raR\x08\x33\x64\x65s-cbcR\x0b\x61\x65s-128-cbcR\x0b\x61\x65s-128-gcmR\x0b\x61\x65s-192-cbcR\x0b\x61\x65s-192-gcmR\x0b\x61\x65s-256-cbcR\x0b\x61\x65s-256-gcmR\x07\x64\x65s-cbcR\x13\x65ncryptionAlgorithm\x12\x81\x01\n\x18\x61uthentication_algorithm\x18\x05 \x01(\tBA\xfa\x42>rr\n\x11termination_cable\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x10terminationCable\x12K\n\x16termination_cable_path\x18\x07 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x14terminationCablePath\x12`\n\x1dtermination_cable_termination\x18\x08 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1bterminationCableTermination\x12\x44\n\x13termination_circuit\x18\t \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x12terminationCircuit\x12T\n\x19termination_circuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x17terminationCircuitGroup\x12s\n$termination_circuit_group_assignment\x18\x0b \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R!terminationCircuitGroupAssignment\x12\x66\n\x1ftermination_circuit_termination\x18\x0c \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_circuit_type\x18\r \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x16terminationCircuitType\x12\x44\n\x13termination_cluster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x12terminationCluster\x12T\n\x19termination_cluster_group\x18\x0f \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x17terminationClusterGroup\x12Q\n\x18termination_cluster_type\x18\x10 \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x16terminationClusterType\x12Q\n\x18termination_console_port\x18\x11 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12\x44\n\x13termination_contact\x18\x13 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x12terminationContact\x12\x63\n\x1etermination_contact_assignment\x18\x14 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1cterminationContactAssignment\x12T\n\x19termination_contact_group\x18\x15 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x17terminationContactGroup\x12Q\n\x18termination_contact_role\x18\x16 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x16terminationContactRole\x12\x41\n\x12termination_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x11terminationDevice\x12K\n\x16termination_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x14terminationDeviceBay\x12N\n\x17termination_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x15terminationDeviceRole\x12N\n\x17termination_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x15terminationDeviceType\x12K\n\x16termination_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x14terminationFhrpGroup\x12j\n!termination_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1eterminationFhrpGroupAssignment\x12K\n\x16termination_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12K\n\x16termination_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x14terminationIkePolicy\x12Q\n\x18termination_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x16terminationIkeProposal\x12K\n\x16termination_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x14terminationIpAddress\x12\x45\n\x14termination_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x12terminationIpRange\x12R\n\x19termination_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x16terminationIpSecPolicy\x12U\n\x1atermination_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x17terminationIpSecProfile\x12X\n\x1btermination_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x18terminationIpSecProposal\x12J\n\x15termination_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12W\n\x1atermination_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x18terminationInventoryItem\x12\x64\n\x1ftermination_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1cterminationInventoryItemRole\x12>\n\x11termination_l2vpn\x18( \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x10terminationL2vpn\x12`\n\x1dtermination_l2vpn_termination\x18) \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1bterminationL2vpnTermination\x12G\n\x14termination_location\x18* \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12N\n\x17termination_mac_address\x18+ \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x15terminationMacAddress\x12S\n\x18termination_manufacturer\x18, \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x17terminationManufacturer\x12\x41\n\x12termination_module\x18- \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x11terminationModule\x12K\n\x16termination_module_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x14terminationModuleBay\x12N\n\x17termination_module_type\x18/ \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x15terminationModuleType\x12G\n\x14termination_platform\x18\x30 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x13terminationPlatform\x12K\n\x16termination_power_feed\x18\x31 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\x32 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12N\n\x17termination_power_panel\x18\x33 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x15terminationPowerPanel\x12K\n\x16termination_power_port\x18\x34 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12\x41\n\x12termination_prefix\x18\x35 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x11terminationPrefix\x12G\n\x14termination_provider\x18\x36 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x13terminationProvider\x12]\n\x1ctermination_provider_account\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1aterminationProviderAccount\x12]\n\x1ctermination_provider_network\x18\x38 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x38\n\x0ftermination_rir\x18\x39 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0eterminationRir\x12;\n\x10termination_rack\x18: \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x0fterminationRack\x12]\n\x1ctermination_rack_reservation\x18; \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1aterminationRackReservation\x12H\n\x15termination_rack_role\x18< \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x13terminationRackRole\x12H\n\x15termination_rack_type\x18= \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x13terminationRackType\x12H\n\x15termination_rear_port\x18> \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPort\x12\x41\n\x12termination_region\x18? \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_role\x18@ \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x0fterminationRole\x12Q\n\x18termination_route_target\x18\x41 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x16terminationRouteTarget\x12\x44\n\x13termination_service\x18\x42 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x12terminationService\x12;\n\x10termination_site\x18\x43 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x44 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\x38\n\x0ftermination_tag\x18\x45 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0eterminationTag\x12\x41\n\x12termination_tenant\x18\x46 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x11terminationTenant\x12Q\n\x18termination_tenant_group\x18G \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x16terminationTenantGroup\x12\x41\n\x12termination_tunnel\x18H \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x11terminationTunnel\x12Q\n\x18termination_tunnel_group\x18I \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x16terminationTunnelGroup\x12\x63\n\x1etermination_tunnel_termination\x18J \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1cterminationTunnelTermination\x12;\n\x10termination_vlan\x18K \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x0fterminationVlan\x12K\n\x16termination_vlan_group\x18L \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x14terminationVlanGroup\x12p\n#termination_vlan_translation_policy\x18M \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R terminationVlanTranslationPolicy\x12j\n!termination_vlan_translation_rule\x18N \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1eterminationVlanTranslationRule\x12Q\n\x18termination_vm_interface\x18O \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x16terminationVmInterface\x12\x38\n\x0ftermination_vrf\x18P \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0eterminationVrf\x12Z\n\x1btermination_virtual_chassis\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x19terminationVirtualChassis\x12Z\n\x1btermination_virtual_circuit\x18R \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x19terminationVirtualCircuit\x12|\n\'termination_virtual_circuit_termination\x18S \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R$terminationVirtualCircuitTermination\x12g\n termination_virtual_circuit_type\x18T \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1dterminationVirtualCircuitType\x12m\n\"termination_virtual_device_context\x18U \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1fterminationVirtualDeviceContext\x12Q\n\x18termination_virtual_disk\x18V \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x16terminationVirtualDisk\x12Z\n\x1btermination_virtual_machine\x18W \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x19terminationVirtualMachine\x12Q\n\x18termination_wireless_lan\x18X \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x16terminationWirelessLan\x12\x61\n\x1etermination_wireless_lan_group\x18Y \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1bterminationWirelessLanGroup\x12T\n\x19termination_wireless_link\x18Z \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x17terminationWirelessLink\x12\x37\n\noutside_ip\x18[ \x01(\x0b\x32\x13.diode.v1.IPAddressH\x01R\toutsideIp\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.TunnelTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_outside_ip\"\x85\x06\n\x04VLAN\x12\'\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x88\x01\x01\x12.\n\x05group\x18\x02 \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x01R\x05group\x88\x01\x01\x12\x10\n\x03vid\x18\x03 \x01(\x03R\x03vid\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12@\n\x06status\x18\x06 \x01(\tB#\xfa\x42 r\x1eR\x06\x61\x63tiveR\ndeprecatedR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04role\x18\x07 \x01(\x0b\x32\x0e.diode.v1.RoleH\x04R\x04role\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\tqinq_role\x18\t \x01(\tB\x13\xfa\x42\x10r\x0eR\x05\x63vlanR\x05svlanH\x06R\x08qinqRole\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\tqinqSvlan\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\r \x03(\x0b\x32 .diode.v1.VLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_siteB\x08\n\x06_groupB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\x0e\n\x0c_descriptionB\x0c\n\n_qinq_roleB\r\n\x0b_qinq_svlanB\x0b\n\t_comments\"\xf9\x05\n\tVLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x38\n\rscope_cluster\x18\x03 \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x0cscopeCluster\x12H\n\x13scope_cluster_group\x18\x04 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x11scopeClusterGroup\x12;\n\x0escope_location\x18\x05 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12/\n\nscope_rack\x18\x06 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\tscopeRack\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12\x1d\n\nvid_ranges\x18\n \x03(\x03R\tvidRanges\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\r \x03(\x0b\x32%.diode.v1.VLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_description\"b\n\x15VLANTranslationPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xc1\x01\n\x13VLANTranslationRule\x12\x37\n\x06policy\x18\x01 \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyR\x06policy\x12\x1b\n\tlocal_vid\x18\x02 \x01(\x03R\x08localVid\x12\x1d\n\nremote_vid\x18\x03 \x01(\x03R\tremoteVid\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xcb\x08\n\x0bVMInterface\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x32\n\x06parent\x18\x04 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x01R\x06parent\x88\x01\x01\x12\x32\n\x06\x62ridge\x18\x05 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x02R\x06\x62ridge\x88\x01\x01\x12\x15\n\x03mtu\x18\x06 \x01(\x03H\x03R\x03mtu\x88\x01\x01\x12I\n\x13primary_mac_address\x18\x07 \x01(\x0b\x32\x14.diode.v1.MACAddressH\x04R\x11primaryMacAddress\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x42\n\x04mode\x18\t \x01(\tB)\xfa\x42&r$R\x06\x61\x63\x63\x65ssR\x06q-in-qR\x06taggedR\ntagged-allH\x06R\x04mode\x88\x01\x01\x12\x38\n\runtagged_vlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\x0cuntaggedVlan\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\x0b \x01(\x0b\x32\x0e.diode.v1.VLANH\x08R\tqinqSvlan\x88\x01\x01\x12\\\n\x17vlan_translation_policy\x18\x0c \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\tR\x15vlanTranslationPolicy\x88\x01\x01\x12$\n\x03vrf\x18\r \x01(\x0b\x32\r.diode.v1.VRFH\nR\x03vrf\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0f \x03(\x0b\x32\'.diode.v1.VMInterface.CustomFieldsEntryR\x0c\x63ustomFields\x12\x31\n\x0ctagged_vlans\x18\x10 \x03(\x0b\x32\x0e.diode.v1.VLANR\x0btaggedVlans\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\n\n\x08_enabledB\t\n\x07_parentB\t\n\x07_bridgeB\x06\n\x04_mtuB\x16\n\x14_primary_mac_addressB\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_untagged_vlanB\r\n\x0b_qinq_svlanB\x1a\n\x18_vlan_translation_policyB\x06\n\x04_vrf\"\xd5\x04\n\x03VRF\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x13\n\x02rd\x18\x02 \x01(\tH\x00R\x02rd\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12*\n\x0e\x65nforce_unique\x18\x04 \x01(\x08H\x02R\renforceUnique\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x08 \x03(\x0b\x32\x1f.diode.v1.VRF.CustomFieldsEntryR\x0c\x63ustomFields\x12<\n\x0eimport_targets\x18\t \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rimportTargets\x12<\n\x0e\x65xport_targets\x18\n \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rexportTargets\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x05\n\x03_rdB\t\n\x07_tenantB\x11\n\x0f_enforce_uniqueB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x0eVirtualChassis\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\x06\x64omain\x18\x02 \x01(\tH\x00R\x06\x64omain\x88\x01\x01\x12-\n\x06master\x18\x03 \x01(\x0b\x32\x10.diode.v1.DeviceH\x01R\x06master\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x07 \x03(\x0b\x32*.diode.v1.VirtualChassis.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_domainB\t\n\x07_masterB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe1\x05\n\x0eVirtualCircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x44\n\x10provider_network\x18\x02 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkR\x0fproviderNetwork\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12\x30\n\x04type\x18\x04 \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\n \x03(\x0b\x32*.diode.v1.VirtualCircuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdf\x03\n\x19VirtualCircuitTermination\x12\x41\n\x0fvirtual_circuit\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitR\x0evirtualCircuit\x12\x30\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeH\x00R\x04role\x88\x01\x01\x12\x31\n\tinterface\x18\x03 \x01(\x0b\x32\x13.diode.v1.InterfaceR\tinterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Z\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x35.diode.v1.VirtualCircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_roleB\x0e\n\x0c_description\"\xed\x02\n\x12VirtualCircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x06 \x03(\x0b\x32..diode.v1.VirtualCircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xcd\x05\n\x14VirtualDeviceContext\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12#\n\nidentifier\x18\x03 \x01(\x03H\x00R\nidentifier\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x05 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x02R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x06 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x03R\nprimaryIp6\x88\x01\x01\x12\x37\n\x06status\x18\x07 \x01(\tB\x1f\xfa\x42\x1cr\x1aR\x06\x61\x63tiveR\x07offlineR\x07plannedR\x06status\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12U\n\rcustom_fields\x18\x0b \x03(\x0b\x32\x30.diode.v1.VirtualDeviceContext.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0b_identifierB\t\n\x07_tenantB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfd\x02\n\x0bVirtualDisk\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x12\n\x04size\x18\x04 \x01(\x03R\x04size\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.VirtualDisk.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xcf\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12]\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x07plannedR\x06stagedH\x00R\x06status\x88\x01\x01\x12\'\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteH\x01R\x04site\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterH\x02R\x07\x63luster\x88\x01\x01\x12-\n\x06\x64\x65vice\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x03R\x06\x64\x65vice\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x04R\x06serial\x88\x01\x01\x12-\n\x04role\x18\x07 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x05R\x04role\x88\x01\x01\x12-\n\x06tenant\x18\x08 \x01(\x0b\x32\x10.diode.v1.TenantH\x06R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\t \x01(\x0b\x32\x12.diode.v1.PlatformH\x07R\x08platform\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\n \x01(\x0b\x32\x13.diode.v1.IPAddressH\x08R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x0b \x01(\x0b\x32\x13.diode.v1.IPAddressH\tR\nprimaryIp6\x88\x01\x01\x12\x19\n\x05vcpus\x18\x0c \x01(\x01H\nR\x05vcpus\x88\x01\x01\x12\x1b\n\x06memory\x18\r \x01(\x03H\x0bR\x06memory\x88\x01\x01\x12\x17\n\x04\x64isk\x18\x0e \x01(\x03H\x0cR\x04\x64isk\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0f \x01(\tH\rR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x10 \x01(\tH\x0eR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x11 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x12 \x03(\x0b\x32*.diode.v1.VirtualMachine.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\x07\n\x05_siteB\n\n\x08_clusterB\t\n\x07_deviceB\t\n\x07_serialB\x07\n\x05_roleB\t\n\x07_tenantB\x0b\n\t_platformB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa2\x08\n\x0bWirelessLAN\x12\x12\n\x04ssid\x18\x01 \x01(\tR\x04ssid\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\x05group\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x02R\x05group\x88\x01\x01\x12J\n\x06status\x18\x04 \x01(\tB-\xfa\x42*r(R\x06\x61\x63tiveR\ndeprecatedR\x08\x64isabledR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04vlan\x18\x05 \x01(\x0b\x32\x0e.diode.v1.VLANH\x04R\x04vlan\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\n \x01(\x0b\x32\x10.diode.v1.TenantH\x05R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x0b \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x06R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x07R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\r \x01(\tH\x08R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x10 \x03(\x0b\x32\'.diode.v1.WirelessLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_descriptionB\x08\n\x06_groupB\t\n\x07_statusB\x07\n\x05_vlanB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_comments\"\x88\x03\n\x10WirelessLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x37\n\x06parent\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.WirelessLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xb9\x07\n\x0cWirelessLink\x12\x34\n\x0binterface_a\x18\x01 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceA\x12\x34\n\x0binterface_b\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceB\x12\x17\n\x04ssid\x18\x03 \x01(\tH\x00R\x04ssid\x88\x01\x01\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x06 \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x03R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x07 \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x04R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\x08 \x01(\tH\x05R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\t \x01(\x01H\x06R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\n \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x07R\x0c\x64istanceUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x08R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0c \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\r \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x0e \x03(\x0b\x32(.diode.v1.WirelessLink.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_ssidB\t\n\x07_statusB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponseB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x64iode/v1/ingester.proto\x12\x08\x64iode.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17validate/validate.proto\"\x91)\n\x06\x45ntity\x12\x44\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xfa\x42\x07\xb2\x01\x04\x08\x01\x38\x01R\ttimestamp\x12!\n\x03\x61sn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x31\n\tasn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12\x33\n\taggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\'\n\x05\x63\x61\x62le\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12\x34\n\ncable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12I\n\x11\x63\x61\x62le_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12-\n\x07\x63ircuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12=\n\rcircuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12\\\n\x18\x63ircuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12O\n\x13\x63ircuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12:\n\x0c\x63ircuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12-\n\x07\x63luster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12=\n\rcluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12:\n\x0c\x63luster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12-\n\x07\x63ontact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12L\n\x12\x63ontact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12*\n\x06\x64\x65vice\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x34\n\ndevice_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12\x37\n\x0b\x64\x65vice_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12\x34\n\nfhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12S\n\x15\x66hrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfront_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12\x34\n\nike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12@\n\x0einventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12M\n\x13inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12\'\n\x05l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12*\n\x06module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x34\n\nmodule_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12\x37\n\x0bmodule_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12\x30\n\x08platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x30\n\x08provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12\x46\n\x10provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12!\n\x03rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12$\n\x04rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x46\n\x10rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12\x31\n\track_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12\x31\n\trear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12*\n\x06region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12$\n\x04role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12\x34\n\nsite_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12*\n\x06tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12*\n\x06tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12:\n\x0ctunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12L\n\x12tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12$\n\x04vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\nvlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12:\n\x0cvm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12!\n\x03vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12\x43\n\x0fvirtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12:\n\x0cwireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLan\x12J\n\x12wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLinkB\x08\n\x06\x65ntity\"\xe4\x02\n\rIngestRequest\x12\"\n\x06stream\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x06stream\x12\x39\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x10.diode.v1.EntityB\x0b\xfa\x42\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x08\x65ntities\x12\x18\n\x02id\x18\x03 \x01(\tB\x08\xfa\x42\x05r\x03\xb0\x01\x01R\x02id\x12\x36\n\x11producer_app_name\x18\x04 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x0fproducerAppName\x12<\n\x14producer_app_version\x18\x05 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x12producerAppVersion\x12%\n\x08sdk_name\x18\x06 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01\x18\xff\x01R\x07sdkName\x12=\n\x0bsdk_version\x18\x07 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^(\\d)+\\.(\\d)+\\.(\\d)+$R\nsdkVersion\"(\n\x0eIngestResponse\x12\x16\n\x06\x65rrors\x18\x01 \x03(\tR\x06\x65rrors\"\xaa\x03\n\x03\x41SN\x12\x10\n\x03\x61sn\x18\x01 \x01(\x03R\x03\x61sn\x12$\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x07 \x03(\x0b\x32\x1f.diode.v1.ASN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x06\n\x04_rirB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xb7\x03\n\x08\x41SNRange\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x1f\n\x03rir\x18\x03 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12I\n\rcustom_fields\x18\t \x03(\x0b\x32$.diode.v1.ASNRange.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\x0e\n\x0c_description\"\xfe\x03\n\tAggregate\x12\x16\n\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1f\n\x03rir\x18\x02 \x01(\x0b\x32\r.diode.v1.RIRR\x03rir\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x88\x01\x01\x12>\n\ndate_added\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\tdateAdded\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.Aggregate.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_tenantB\r\n\x0b_date_addedB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xf1\x07\n\x05\x43\x61\x62le\x12\xdd\x01\n\x04type\x18\x01 \x01(\tB\xc3\x01\xfa\x42\xbf\x01r\xbc\x01R\x03\x61ocR\x04\x63\x61t3R\x04\x63\x61t5R\x05\x63\x61t5eR\x04\x63\x61t6R\x05\x63\x61t6aR\x04\x63\x61t7R\x05\x63\x61t7aR\x04\x63\x61t8R\x07\x63oaxialR\ndac-activeR\x0b\x64\x61\x63-passiveR\x03mmfR\x07mmf-om1R\x07mmf-om2R\x07mmf-om3R\x07mmf-om4R\x07mmf-om5R\x0bmrj21-trunkR\x05powerR\x03smfR\x07smf-os1R\x07smf-os2R\x03usbH\x00R\x04type\x88\x01\x01\x12>\n\x0e\x61_terminations\x18\x02 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\raTerminations\x12>\n\x0e\x62_terminations\x18\x03 \x03(\x0b\x32\x17.diode.v1.GenericObjectR\rbTerminations\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x19\n\x05label\x18\x06 \x01(\tH\x03R\x05label\x88\x01\x01\x12\x19\n\x05\x63olor\x18\x07 \x01(\tH\x04R\x05\x63olor\x88\x01\x01\x12\x1b\n\x06length\x18\x08 \x01(\x01H\x05R\x06length\x88\x01\x01\x12\x42\n\x0blength_unit\x18\t \x01(\tB\x1c\xfa\x42\x19r\x17R\x02\x63mR\x02\x66tR\x02inR\x02kmR\x01mR\x02miH\x06R\nlengthUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x07R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x46\n\rcustom_fields\x18\r \x03(\x0b\x32!.diode.v1.Cable.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_typeB\t\n\x07_statusB\t\n\x07_tenantB\x08\n\x06_labelB\x08\n\x06_colorB\t\n\x07_lengthB\x0e\n\x0c_length_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\x9e\x01\n\tCablePath\x12 \n\tis_active\x18\x01 \x01(\x08H\x00R\x08isActive\x88\x01\x01\x12$\n\x0bis_complete\x18\x02 \x01(\x08H\x01R\nisComplete\x88\x01\x01\x12\x1e\n\x08is_split\x18\x03 \x01(\x08H\x02R\x07isSplit\x88\x01\x01\x42\x0c\n\n_is_activeB\x0e\n\x0c_is_completeB\x0b\n\t_is_split\"\xe3\x06\n\x10\x43\x61\x62leTermination\x12%\n\x05\x63\x61\x62le\x18\x01 \x01(\x0b\x32\x0f.diode.v1.CableR\x05\x63\x61\x62le\x12(\n\tcable_end\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01\x42R\x08\x63\x61\x62leEnd\x12\x66\n\x1ftermination_circuit_termination\x18\x03 \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_console_port\x18\x04 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x05 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12K\n\x16termination_front_port\x18\x06 \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12J\n\x15termination_interface\x18\x07 \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12K\n\x16termination_power_feed\x18\x08 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\t \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12K\n\x16termination_power_port\x18\n \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12H\n\x15termination_rear_port\x18\x0b \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPortB\r\n\x0btermination\"\xe6\x08\n\x07\x43ircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12.\n\x08provider\x18\x02 \x01(\x0b\x32\x12.diode.v1.ProviderR\x08provider\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12)\n\x04type\x18\x04 \x01(\x0b\x32\x15.diode.v1.CircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12\x42\n\x0cinstall_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\x0binstallDate\x88\x01\x01\x12J\n\x10termination_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04R\x0fterminationDate\x88\x01\x01\x12$\n\x0b\x63ommit_rate\x18\t \x01(\x03H\x05R\ncommitRate\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\x0b \x01(\x01H\x07R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x08R\x0c\x64istanceUnit\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\r \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x42\n\x0b\x61ssignments\x18\x0f \x03(\x0b\x32 .diode.v1.CircuitGroupAssignmentR\x0b\x61ssignments\x12H\n\rcustom_fields\x18\x10 \x03(\x0b\x32#.diode.v1.Circuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0f\n\r_install_dateB\x13\n\x11_termination_dateB\x0e\n\x0c_commit_rateB\x0e\n\x0c_descriptionB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0b\n\t_comments\"\xf6\x02\n\x0c\x43ircuitGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.CircuitGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_tenant\"\xde\x02\n\x16\x43ircuitGroupAssignment\x12,\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.CircuitGroupR\x05group\x12:\n\x0emember_circuit\x18\x02 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\rmemberCircuit\x12P\n\x16member_virtual_circuit\x18\x03 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14memberVirtualCircuit\x12N\n\x08priority\x18\x04 \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x01R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tagsB\x08\n\x06memberB\x0b\n\t_priority\"\x8c\x08\n\x12\x43ircuitTermination\x12+\n\x07\x63ircuit\x18\x01 \x01(\x0b\x32\x11.diode.v1.CircuitR\x07\x63ircuit\x12(\n\tterm_side\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06R\x01\x41R\x01ZR\x08termSide\x12G\n\x14termination_location\x18\x03 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12]\n\x1ctermination_provider_network\x18\x04 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x41\n\x12termination_region\x18\x05 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_site\x18\x06 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x07 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\"\n\nport_speed\x18\x08 \x01(\x03H\x01R\tportSpeed\x88\x01\x01\x12*\n\x0eupstream_speed\x18\t \x01(\x03H\x02R\rupstreamSpeed\x88\x01\x01\x12$\n\x0bxconnect_id\x18\n \x01(\tH\x03R\nxconnectId\x88\x01\x01\x12\x1c\n\x07pp_info\x18\x0b \x01(\tH\x04R\x06ppInfo\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0c \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\r \x01(\x08H\x06R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x0f \x03(\x0b\x32..diode.v1.CircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_port_speedB\x11\n\x0f_upstream_speedB\x0e\n\x0c_xconnect_idB\n\n\x08_pp_infoB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xdf\x02\n\x0b\x43ircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.CircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xc0\x06\n\x07\x43luster\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12)\n\x04type\x18\x02 \x01(\x0b\x32\x15.diode.v1.ClusterTypeR\x04type\x12\x31\n\x05group\x18\x03 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x01R\x05group\x88\x01\x01\x12V\n\x06status\x18\x04 \x01(\tB9\xfa\x42\x36r4R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x07offlineR\x07plannedR\x07stagingH\x02R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x03R\x06tenant\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12%\n\x0b\x64\x65scription\x18\n \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\r \x03(\x0b\x32#.diode.v1.Cluster.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x08\n\x06_groupB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x02\n\x0c\x43lusterGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x05 \x03(\x0b\x32(.diode.v1.ClusterGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xba\x02\n\x0b\x43lusterType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ClusterType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xed\x05\n\x0b\x43onsolePort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\n \x03(\x0b\x32\'.diode.v1.ConsolePort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xf9\x05\n\x11\x43onsoleServerPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xab\x01\n\x04type\x18\x05 \x01(\tB\x91\x01\xfa\x42\x8d\x01r\x8a\x01R\x05\x64\x62-25R\x04\x64\x65-9R\nmini-din-8R\x05otherR\x05rj-11R\x05rj-12R\x05rj-45R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bH\x02R\x04type\x88\x01\x01\x12<\n\x05speed\x18\x06 \x01(\x03\x42!\xfa\x42\x1e\"\x1c\x30\xb0\t0\xe0\x12\x30\xc0%0\x80K0\x80\x96\x01\x30\x80\xac\x02\x30\x80\xc2\x03\x30\x80\x84\x07H\x03R\x05speed\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\x08 \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18\n \x03(\x0b\x32-.diode.v1.ConsoleServerPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x07\n\x05_typeB\x08\n\x06_speedB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xc5\x04\n\x07\x43ontact\x12\x31\n\x05group\x18\x01 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x05group\x88\x01\x01\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05title\x18\x03 \x01(\tH\x01R\x05title\x88\x01\x01\x12\x19\n\x05phone\x18\x04 \x01(\tH\x02R\x05phone\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x05 \x01(\tH\x03R\x05\x65mail\x88\x01\x01\x12\x1d\n\x07\x61\x64\x64ress\x18\x06 \x01(\tH\x04R\x07\x61\x64\x64ress\x88\x01\x01\x12\x17\n\x04link\x18\x07 \x01(\tH\x05R\x04link\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x06R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x07R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12H\n\rcustom_fields\x18\x0b \x03(\x0b\x32#.diode.v1.Contact.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_groupB\x08\n\x06_titleB\x08\n\x06_phoneB\x08\n\x06_emailB\n\n\x08_addressB\x07\n\x05_linkB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe5\x34\n\x11\x43ontactAssignment\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLink\x12+\n\x07\x63ontact\x18Y \x01(\x0b\x32\x11.diode.v1.ContactR\x07\x63ontact\x12.\n\x04role\x18Z \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x01R\x04role\x88\x01\x01\x12N\n\x08priority\x18[ \x01(\tB-\xfa\x42*r(R\x08inactiveR\x07primaryR\tsecondaryR\x08tertiaryH\x02R\x08priority\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.ContactAssignment.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06objectB\x07\n\x05_roleB\x0b\n\t_priority\"\xfc\x02\n\x0c\x43ontactGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x33\n\x06parent\x18\x03 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x06 \x03(\x0b\x32(.diode.v1.ContactGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xba\x02\n\x0b\x43ontactRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x04 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x05 \x03(\x0b\x32\'.diode.v1.ContactRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xdf(\n\x1a\x43ustomFieldObjectReference\x12!\n\x03\x61sn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x03\x61sn\x12\x31\n\tasn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x08\x61snRange\x12\x33\n\taggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\taggregate\x12\'\n\x05\x63\x61\x62le\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x05\x63\x61\x62le\x12\x34\n\ncable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\tcablePath\x12I\n\x11\x63\x61\x62le_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x10\x63\x61\x62leTermination\x12-\n\x07\x63ircuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x07\x63ircuit\x12=\n\rcircuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x0c\x63ircuitGroup\x12\\\n\x18\x63ircuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x16\x63ircuitGroupAssignment\x12O\n\x13\x63ircuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x12\x63ircuitTermination\x12:\n\x0c\x63ircuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x0b\x63ircuitType\x12-\n\x07\x63luster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x07\x63luster\x12=\n\rcluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x0c\x63lusterGroup\x12:\n\x0c\x63luster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x0b\x63lusterType\x12:\n\x0c\x63onsole_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x0b\x63onsolePort\x12M\n\x13\x63onsole_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x11\x63onsoleServerPort\x12-\n\x07\x63ontact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x07\x63ontact\x12L\n\x12\x63ontact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x11\x63ontactAssignment\x12=\n\rcontact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x0c\x63ontactGroup\x12:\n\x0c\x63ontact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x0b\x63ontactRole\x12*\n\x06\x64\x65vice\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x06\x64\x65vice\x12\x34\n\ndevice_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\tdeviceBay\x12\x37\n\x0b\x64\x65vice_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\ndeviceRole\x12\x37\n\x0b\x64\x65vice_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\ndeviceType\x12\x34\n\nfhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\tfhrpGroup\x12S\n\x15\x66hrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x13\x66hrpGroupAssignment\x12\x34\n\nfront_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\tfrontPort\x12\x34\n\nike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\tikePolicy\x12:\n\x0cike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x0bikeProposal\x12\x34\n\nip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\tipAddress\x12.\n\x08ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x07ipRange\x12;\n\rip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x0bipSecPolicy\x12>\n\x0eip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x0cipSecProfile\x12\x41\n\x0fip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\ripSecProposal\x12\x33\n\tinterface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\tinterface\x12@\n\x0einventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\rinventoryItem\x12M\n\x13inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x11inventoryItemRole\x12\'\n\x05l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x05l2vpn\x12I\n\x11l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x10l2vpnTermination\x12\x30\n\x08location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x08location\x12\x37\n\x0bmac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\nmacAddress\x12<\n\x0cmanufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x0cmanufacturer\x12*\n\x06module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x12\x34\n\nmodule_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\tmoduleBay\x12\x37\n\x0bmodule_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\nmoduleType\x12\x30\n\x08platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x08platform\x12\x34\n\npower_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\tpowerFeed\x12:\n\x0cpower_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x0bpowerOutlet\x12\x37\n\x0bpower_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\npowerPanel\x12\x34\n\npower_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\tpowerPort\x12*\n\x06prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x06prefix\x12\x30\n\x08provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x08provider\x12\x46\n\x10provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x12\x46\n\x10provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x0fproviderNetwork\x12!\n\x03rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x03rir\x12$\n\x04rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x04rack\x12\x46\n\x10rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x0frackReservation\x12\x31\n\track_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x08rackRole\x12\x31\n\track_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x08rackType\x12\x31\n\trear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x08rearPort\x12*\n\x06region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x06region\x12$\n\x04role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x04role\x12:\n\x0croute_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x0brouteTarget\x12-\n\x07service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x07service\x12$\n\x04site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x12\x34\n\nsite_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\tsiteGroup\x12!\n\x03tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x03tag\x12*\n\x06tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x06tenant\x12:\n\x0ctenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x0btenantGroup\x12*\n\x06tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x06tunnel\x12:\n\x0ctunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x0btunnelGroup\x12L\n\x12tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x11tunnelTermination\x12$\n\x04vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x04vlan\x12\x34\n\nvlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\tvlanGroup\x12Y\n\x17vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x15vlanTranslationPolicy\x12S\n\x15vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x13vlanTranslationRule\x12:\n\x0cvm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x0bvmInterface\x12!\n\x03vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x03vrf\x12\x43\n\x0fvirtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x0evirtualChassis\x12\x43\n\x0fvirtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x0evirtualCircuit\x12\x65\n\x1bvirtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x19virtualCircuitTermination\x12P\n\x14virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x12virtualCircuitType\x12V\n\x16virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x14virtualDeviceContext\x12:\n\x0cvirtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x0bvirtualDisk\x12\x43\n\x0fvirtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x0evirtualMachine\x12:\n\x0cwireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x0bwirelessLan\x12J\n\x12wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x10wirelessLanGroup\x12=\n\rwireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x0cwirelessLinkB\x08\n\x06object\"\x9a\x04\n\x10\x43ustomFieldValue\x12-\n\x12multiple_selection\x18\x01 \x03(\tR\x11multipleSelection\x12O\n\x10multiple_objects\x18\x02 \x03(\x0b\x32$.diode.v1.CustomFieldObjectReferenceR\x0fmultipleObjects\x12\x14\n\x04text\x18\x03 \x01(\tH\x00R\x04text\x12\x1d\n\tlong_text\x18\x04 \x01(\tH\x00R\x08longText\x12\x1a\n\x07integer\x18\x05 \x01(\x03H\x00R\x07integer\x12\x1a\n\x07\x64\x65\x63imal\x18\x06 \x01(\x01H\x00R\x07\x64\x65\x63imal\x12\x1a\n\x07\x62oolean\x18\x07 \x01(\x08H\x00R\x07\x62oolean\x12\x30\n\x04\x64\x61te\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x04\x64\x61te\x12\x38\n\x08\x64\x61tetime\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x12\n\x03url\x18\n \x01(\tH\x00R\x03url\x12\x14\n\x04json\x18\x0b \x01(\tH\x00R\x04json\x12\x1e\n\tselection\x18\x0c \x01(\tH\x00R\tselection\x12>\n\x06object\x18\r \x01(\x0b\x32$.diode.v1.CustomFieldObjectReferenceH\x00R\x06objectB\x07\n\x05value\"\xf1\r\n\x06\x44\x65vice\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x35\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0b\x32\x14.diode.v1.DeviceTypeR\ndeviceType\x12(\n\x04role\x18\x03 \x01(\x0b\x32\x14.diode.v1.DeviceRoleR\x04role\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\x05 \x01(\x0b\x32\x12.diode.v1.PlatformH\x02R\x08platform\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x03R\x06serial\x88\x01\x01\x12 \n\tasset_tag\x18\x07 \x01(\tH\x04R\x08\x61ssetTag\x88\x01\x01\x12\"\n\x04site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteR\x04site\x12\x33\n\x08location\x18\t \x01(\x0b\x32\x12.diode.v1.LocationH\x05R\x08location\x88\x01\x01\x12\'\n\x04rack\x18\n \x01(\x0b\x32\x0e.diode.v1.RackH\x06R\x04rack\x88\x01\x01\x12\x1f\n\x08position\x18\x0b \x01(\x01H\x07R\x08position\x88\x01\x01\x12+\n\x04\x66\x61\x63\x65\x18\x0c \x01(\tB\x12\xfa\x42\x0fr\rR\x05\x66rontR\x04rearH\x08R\x04\x66\x61\x63\x65\x88\x01\x01\x12\x1f\n\x08latitude\x18\r \x01(\x01H\tR\x08latitude\x88\x01\x01\x12!\n\tlongitude\x18\x0e \x01(\x01H\nR\tlongitude\x88\x01\x01\x12h\n\x06status\x18\x0f \x01(\tBK\xfa\x42HrFR\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\tinventoryR\x07offlineR\x07plannedR\x06stagedH\x0bR\x06status\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\x10 \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x0cR\x07\x61irflow\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x11 \x01(\x0b\x32\x13.diode.v1.IPAddressH\rR\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x12 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0eR\nprimaryIp6\x88\x01\x01\x12/\n\x06oob_ip\x18\x13 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x0fR\x05oobIp\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x14 \x01(\x0b\x32\x11.diode.v1.ClusterH\x10R\x07\x63luster\x88\x01\x01\x12\x46\n\x0fvirtual_chassis\x18\x15 \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x11R\x0evirtualChassis\x88\x01\x01\x12$\n\x0bvc_position\x18\x16 \x01(\x03H\x12R\nvcPosition\x88\x01\x01\x12$\n\x0bvc_priority\x18\x17 \x01(\x03H\x13R\nvcPriority\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x18 \x01(\tH\x14R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x19 \x01(\tH\x15R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x1a \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12G\n\rcustom_fields\x18\x1b \x03(\x0b\x32\".diode.v1.Device.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\t\n\x07_tenantB\x0b\n\t_platformB\t\n\x07_serialB\x0c\n\n_asset_tagB\x0b\n\t_locationB\x07\n\x05_rackB\x0b\n\t_positionB\x07\n\x05_faceB\x0b\n\t_latitudeB\x0c\n\n_longitudeB\t\n\x07_statusB\n\n\x08_airflowB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\t\n\x07_oob_ipB\n\n\x08_clusterB\x12\n\x10_virtual_chassisB\x0e\n\x0c_vc_positionB\x0e\n\x0c_vc_priorityB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc8\x03\n\tDeviceBay\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n\x05label\x18\x03 \x01(\tH\x00R\x05label\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12@\n\x10installed_device\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x02R\x0finstalledDevice\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x07 \x03(\x0b\x32%.diode.v1.DeviceBay.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_labelB\x0e\n\x0c_descriptionB\x13\n\x11_installed_device\"\x87\x03\n\nDeviceRole\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12\x1c\n\x07vm_role\x18\x04 \x01(\x08H\x01R\x06vmRole\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x07 \x03(\x0b\x32&.diode.v1.DeviceRole.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\n\n\x08_vm_roleB\x0e\n\x0c_description\"\xfc\x08\n\nDeviceType\x12:\n\x0cmanufacturer\x18\x01 \x01(\x0b\x32\x16.diode.v1.ManufacturerR\x0cmanufacturer\x12\x42\n\x10\x64\x65\x66\x61ult_platform\x18\x02 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0f\x64\x65\x66\x61ultPlatform\x88\x01\x01\x12\x14\n\x05model\x18\x03 \x01(\tR\x05model\x12\x12\n\x04slug\x18\x04 \x01(\tR\x04slug\x12$\n\x0bpart_number\x18\x05 \x01(\tH\x01R\npartNumber\x88\x01\x01\x12\x1e\n\x08u_height\x18\x06 \x01(\x01H\x02R\x07uHeight\x88\x01\x01\x12=\n\x18\x65xclude_from_utilization\x18\x07 \x01(\x08H\x03R\x16\x65xcludeFromUtilization\x88\x01\x01\x12\'\n\ris_full_depth\x18\x08 \x01(\x08H\x04R\x0bisFullDepth\x88\x01\x01\x12@\n\x0esubdevice_role\x18\t \x01(\tB\x14\xfa\x42\x11r\x0fR\x05\x63hildR\x06parentH\x05R\rsubdeviceRole\x88\x01\x01\x12\xad\x01\n\x07\x61irflow\x18\n \x01(\tB\x8d\x01\xfa\x42\x89\x01r\x86\x01R\rbottom-to-topR\rfront-to-rearR\rleft-to-rightR\x05mixedR\x07passiveR\rrear-to-frontR\x0crear-to-sideR\rright-to-leftR\x0cside-to-rearR\rtop-to-bottomH\x06R\x07\x61irflow\x88\x01\x01\x12\x1b\n\x06weight\x18\x0b \x01(\x01H\x07R\x06weight\x88\x01\x01\x12:\n\x0bweight_unit\x18\x0c \x01(\tB\x14\xfa\x42\x11r\x0fR\x01gR\x02kgR\x02lbR\x02ozH\x08R\nweightUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\r \x01(\tH\tR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\nR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12K\n\rcustom_fields\x18\x10 \x03(\x0b\x32&.diode.v1.DeviceType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_default_platformB\x0e\n\x0c_part_numberB\x0b\n\t_u_heightB\x1b\n\x19_exclude_from_utilizationB\x10\n\x0e_is_full_depthB\x11\n\x0f_subdevice_roleB\n\n\x08_airflowB\t\n\x07_weightB\x0e\n\x0c_weight_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xc2\x04\n\tFHRPGroup\x12\x17\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12S\n\x08protocol\x18\x02 \x01(\tB7\xfa\x42\x34r2R\x04\x63\x61rpR\tclusterxlR\x04glbpR\x04hsrpR\x05otherR\x05vrrp2R\x05vrrp3R\x08protocol\x12\x19\n\x08group_id\x18\x03 \x01(\x03R\x07groupId\x12\x37\n\tauth_type\x18\x04 \x01(\tB\x15\xfa\x42\x12r\x10R\x03md5R\tplaintextH\x01R\x08\x61uthType\x88\x01\x01\x12\x1e\n\x08\x61uth_key\x18\x05 \x01(\tH\x02R\x07\x61uthKey\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x06 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x07 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x08 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\t \x03(\x0b\x32%.diode.v1.FHRPGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_nameB\x0c\n\n_auth_typeB\x0b\n\t_auth_keyB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xaa\x36\n\x13\x46HRPGroupAssignment\x12)\n\x05group\x18\x01 \x01(\x0b\x32\x13.diode.v1.FHRPGroupR\x05group\x12\x34\n\rinterface_asn\x18\x02 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\x0cinterfaceAsn\x12\x44\n\x13interface_asn_range\x18\x03 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x11interfaceAsnRange\x12\x46\n\x13interface_aggregate\x18\x04 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x12interfaceAggregate\x12:\n\x0finterface_cable\x18\x05 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0einterfaceCable\x12G\n\x14interface_cable_path\x18\x06 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x12interfaceCablePath\x12\\\n\x1binterface_cable_termination\x18\x07 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x19interfaceCableTermination\x12@\n\x11interface_circuit\x18\x08 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x10interfaceCircuit\x12P\n\x17interface_circuit_group\x18\t \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x15interfaceCircuitGroup\x12o\n\"interface_circuit_group_assignment\x18\n \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1finterfaceCircuitGroupAssignment\x12\x62\n\x1dinterface_circuit_termination\x18\x0b \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1binterfaceCircuitTermination\x12M\n\x16interface_circuit_type\x18\x0c \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x14interfaceCircuitType\x12@\n\x11interface_cluster\x18\r \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x10interfaceCluster\x12P\n\x17interface_cluster_group\x18\x0e \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x15interfaceClusterGroup\x12M\n\x16interface_cluster_type\x18\x0f \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x14interfaceClusterType\x12M\n\x16interface_console_port\x18\x10 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x14interfaceConsolePort\x12`\n\x1dinterface_console_server_port\x18\x11 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1ainterfaceConsoleServerPort\x12@\n\x11interface_contact\x18\x12 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x10interfaceContact\x12_\n\x1cinterface_contact_assignment\x18\x13 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1ainterfaceContactAssignment\x12P\n\x17interface_contact_group\x18\x14 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x15interfaceContactGroup\x12M\n\x16interface_contact_role\x18\x15 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x14interfaceContactRole\x12=\n\x10interface_device\x18\x16 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0finterfaceDevice\x12G\n\x14interface_device_bay\x18\x17 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x12interfaceDeviceBay\x12J\n\x15interface_device_role\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x13interfaceDeviceRole\x12J\n\x15interface_device_type\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x13interfaceDeviceType\x12G\n\x14interface_fhrp_group\x18\x1a \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x12interfaceFhrpGroup\x12\x66\n\x1finterface_fhrp_group_assignment\x18\x1b \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1cinterfaceFhrpGroupAssignment\x12G\n\x14interface_front_port\x18\x1c \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x12interfaceFrontPort\x12G\n\x14interface_ike_policy\x18\x1d \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x12interfaceIkePolicy\x12M\n\x16interface_ike_proposal\x18\x1e \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x14interfaceIkeProposal\x12G\n\x14interface_ip_address\x18\x1f \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x12interfaceIpAddress\x12\x41\n\x12interface_ip_range\x18 \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x10interfaceIpRange\x12N\n\x17interface_ip_sec_policy\x18! \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x14interfaceIpSecPolicy\x12Q\n\x18interface_ip_sec_profile\x18\" \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x15interfaceIpSecProfile\x12T\n\x19interface_ip_sec_proposal\x18# \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x16interfaceIpSecProposal\x12\x46\n\x13interface_interface\x18$ \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x12interfaceInterface\x12S\n\x18interface_inventory_item\x18% \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x16interfaceInventoryItem\x12`\n\x1dinterface_inventory_item_role\x18& \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1ainterfaceInventoryItemRole\x12:\n\x0finterface_l2vpn\x18\' \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0einterfaceL2vpn\x12\\\n\x1binterface_l2vpn_termination\x18( \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x19interfaceL2vpnTermination\x12\x43\n\x12interface_location\x18) \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x11interfaceLocation\x12J\n\x15interface_mac_address\x18* \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x13interfaceMacAddress\x12O\n\x16interface_manufacturer\x18+ \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x15interfaceManufacturer\x12=\n\x10interface_module\x18, \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0finterfaceModule\x12G\n\x14interface_module_bay\x18- \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x12interfaceModuleBay\x12J\n\x15interface_module_type\x18. \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x13interfaceModuleType\x12\x43\n\x12interface_platform\x18/ \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x11interfacePlatform\x12G\n\x14interface_power_feed\x18\x30 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x12interfacePowerFeed\x12M\n\x16interface_power_outlet\x18\x31 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x14interfacePowerOutlet\x12J\n\x15interface_power_panel\x18\x32 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x13interfacePowerPanel\x12G\n\x14interface_power_port\x18\x33 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x12interfacePowerPort\x12=\n\x10interface_prefix\x18\x34 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0finterfacePrefix\x12\x43\n\x12interface_provider\x18\x35 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x11interfaceProvider\x12Y\n\x1ainterface_provider_account\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x18interfaceProviderAccount\x12Y\n\x1ainterface_provider_network\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x18interfaceProviderNetwork\x12\x34\n\rinterface_rir\x18\x38 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0cinterfaceRir\x12\x37\n\x0einterface_rack\x18\x39 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\rinterfaceRack\x12Y\n\x1ainterface_rack_reservation\x18: \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x18interfaceRackReservation\x12\x44\n\x13interface_rack_role\x18; \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x11interfaceRackRole\x12\x44\n\x13interface_rack_type\x18< \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x11interfaceRackType\x12\x44\n\x13interface_rear_port\x18= \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x11interfaceRearPort\x12=\n\x10interface_region\x18> \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0finterfaceRegion\x12\x37\n\x0einterface_role\x18? \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\rinterfaceRole\x12M\n\x16interface_route_target\x18@ \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x14interfaceRouteTarget\x12@\n\x11interface_service\x18\x41 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x10interfaceService\x12\x37\n\x0einterface_site\x18\x42 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\rinterfaceSite\x12G\n\x14interface_site_group\x18\x43 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x12interfaceSiteGroup\x12\x34\n\rinterface_tag\x18\x44 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0cinterfaceTag\x12=\n\x10interface_tenant\x18\x45 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0finterfaceTenant\x12M\n\x16interface_tenant_group\x18\x46 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x14interfaceTenantGroup\x12=\n\x10interface_tunnel\x18G \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0finterfaceTunnel\x12M\n\x16interface_tunnel_group\x18H \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x14interfaceTunnelGroup\x12_\n\x1cinterface_tunnel_termination\x18I \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1ainterfaceTunnelTermination\x12\x37\n\x0einterface_vlan\x18J \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\rinterfaceVlan\x12G\n\x14interface_vlan_group\x18K \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x12interfaceVlanGroup\x12l\n!interface_vlan_translation_policy\x18L \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1einterfaceVlanTranslationPolicy\x12\x66\n\x1finterface_vlan_translation_rule\x18M \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1cinterfaceVlanTranslationRule\x12M\n\x16interface_vm_interface\x18N \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x14interfaceVmInterface\x12\x34\n\rinterface_vrf\x18O \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0cinterfaceVrf\x12V\n\x19interface_virtual_chassis\x18P \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x17interfaceVirtualChassis\x12V\n\x19interface_virtual_circuit\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x17interfaceVirtualCircuit\x12x\n%interface_virtual_circuit_termination\x18R \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\"interfaceVirtualCircuitTermination\x12\x63\n\x1einterface_virtual_circuit_type\x18S \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1binterfaceVirtualCircuitType\x12i\n interface_virtual_device_context\x18T \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1dinterfaceVirtualDeviceContext\x12M\n\x16interface_virtual_disk\x18U \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x14interfaceVirtualDisk\x12V\n\x19interface_virtual_machine\x18V \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x17interfaceVirtualMachine\x12M\n\x16interface_wireless_lan\x18W \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x14interfaceWirelessLan\x12]\n\x1cinterface_wireless_lan_group\x18X \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x19interfaceWirelessLanGroup\x12P\n\x17interface_wireless_link\x18Y \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x15interfaceWirelessLink\x12\x1a\n\x08priority\x18Z \x01(\x03R\x08priorityB\x0b\n\tinterface\"\xba\x08\n\tFrontPort\x12(\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12-\n\x06module\x18\x02 \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xad\x03\n\x04type\x18\x05 \x01(\tB\x98\x03\xfa\x42\x94\x03r\x91\x03R\t110-punchR\x04\x34p2cR\x04\x34p4cR\x04\x36p2cR\x04\x36p4cR\x04\x36p6cR\x04\x38p2cR\x04\x38p4cR\x04\x38p6cR\x04\x38p8cR\x03\x62ncR\x02\x63sR\x01\x66R\x02\x66\x63R\x04gg45R\x02lcR\x06lc-apcR\x05lc-pcR\x06lc-upcR\x03lshR\x07lsh-apcR\x06lsh-pcR\x07lsh-upcR\x03lx5R\x07lx5-apcR\x06lx5-pcR\x07lx5-upcR\x03mpoR\x05mrj21R\x04mtrjR\x01nR\x05otherR\x02scR\x06sc-apcR\x05sc-pcR\x06sc-upcR\x07sma-905R\x07sma-906R\x02snR\x06spliceR\x02stR\x07tera-1pR\x07tera-2pR\x07tera-4pR\x06urm-p2R\x06urm-p4R\x06urm-p8R\x05usb-aR\x05usb-bR\x05usb-cR\x0busb-micro-aR\x0cusb-micro-abR\x0busb-micro-bR\nusb-mini-aR\nusb-mini-bR\x04type\x12\x19\n\x05\x63olor\x18\x06 \x01(\tH\x02R\x05\x63olor\x88\x01\x01\x12/\n\trear_port\x18\x07 \x01(\x0b\x32\x12.diode.v1.RearPortR\x08rearPort\x12\x31\n\x12rear_port_position\x18\x08 \x01(\x03H\x03R\x10rearPortPosition\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\t \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0emark_connected\x18\n \x01(\x08H\x05R\rmarkConnected\x88\x01\x01\x12!\n\x04tags\x18\x0b \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x0c \x03(\x0b\x32%.diode.v1.FrontPort.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_moduleB\x08\n\x06_labelB\x08\n\x06_colorB\x15\n\x13_rear_port_positionB\x0e\n\x0c_descriptionB\x11\n\x0f_mark_connected\"\xca\x31\n\rGenericObject\x12.\n\nobject_asn\x18\x01 \x01(\x0b\x32\r.diode.v1.ASNH\x00R\tobjectAsn\x12>\n\x10object_asn_range\x18\x02 \x01(\x0b\x32\x12.diode.v1.ASNRangeH\x00R\x0eobjectAsnRange\x12@\n\x10object_aggregate\x18\x03 \x01(\x0b\x32\x13.diode.v1.AggregateH\x00R\x0fobjectAggregate\x12\x34\n\x0cobject_cable\x18\x04 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x0bobjectCable\x12\x41\n\x11object_cable_path\x18\x05 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x0fobjectCablePath\x12V\n\x18object_cable_termination\x18\x06 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x16objectCableTermination\x12:\n\x0eobject_circuit\x18\x07 \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\robjectCircuit\x12J\n\x14object_circuit_group\x18\x08 \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x12objectCircuitGroup\x12i\n\x1fobject_circuit_group_assignment\x18\t \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R\x1cobjectCircuitGroupAssignment\x12\\\n\x1aobject_circuit_termination\x18\n \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x18objectCircuitTermination\x12G\n\x13object_circuit_type\x18\x0b \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x11objectCircuitType\x12:\n\x0eobject_cluster\x18\x0c \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\robjectCluster\x12J\n\x14object_cluster_group\x18\r \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x12objectClusterGroup\x12G\n\x13object_cluster_type\x18\x0e \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x11objectClusterType\x12G\n\x13object_console_port\x18\x0f \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x11objectConsolePort\x12Z\n\x1aobject_console_server_port\x18\x10 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x17objectConsoleServerPort\x12:\n\x0eobject_contact\x18\x11 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\robjectContact\x12Y\n\x19object_contact_assignment\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x17objectContactAssignment\x12J\n\x14object_contact_group\x18\x13 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x12objectContactGroup\x12G\n\x13object_contact_role\x18\x14 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x11objectContactRole\x12\x37\n\robject_device\x18\x15 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x0cobjectDevice\x12\x41\n\x11object_device_bay\x18\x16 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x0fobjectDeviceBay\x12\x44\n\x12object_device_role\x18\x17 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x10objectDeviceRole\x12\x44\n\x12object_device_type\x18\x18 \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x10objectDeviceType\x12\x41\n\x11object_fhrp_group\x18\x19 \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x0fobjectFhrpGroup\x12`\n\x1cobject_fhrp_group_assignment\x18\x1a \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x19objectFhrpGroupAssignment\x12\x41\n\x11object_front_port\x18\x1b \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x0fobjectFrontPort\x12\x41\n\x11object_ike_policy\x18\x1c \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x0fobjectIkePolicy\x12G\n\x13object_ike_proposal\x18\x1d \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x11objectIkeProposal\x12\x41\n\x11object_ip_address\x18\x1e \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x0fobjectIpAddress\x12;\n\x0fobject_ip_range\x18\x1f \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\robjectIpRange\x12H\n\x14object_ip_sec_policy\x18 \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x11objectIpSecPolicy\x12K\n\x15object_ip_sec_profile\x18! \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x12objectIpSecProfile\x12N\n\x16object_ip_sec_proposal\x18\" \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x13objectIpSecProposal\x12@\n\x10object_interface\x18# \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x0fobjectInterface\x12M\n\x15object_inventory_item\x18$ \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x13objectInventoryItem\x12Z\n\x1aobject_inventory_item_role\x18% \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x17objectInventoryItemRole\x12\x34\n\x0cobject_l2vpn\x18& \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x0bobjectL2vpn\x12V\n\x18object_l2vpn_termination\x18\' \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x16objectL2vpnTermination\x12=\n\x0fobject_location\x18( \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x0eobjectLocation\x12\x44\n\x12object_mac_address\x18) \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x10objectMacAddress\x12I\n\x13object_manufacturer\x18* \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x12objectManufacturer\x12\x37\n\robject_module\x18+ \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x0cobjectModule\x12\x41\n\x11object_module_bay\x18, \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x0fobjectModuleBay\x12\x44\n\x12object_module_type\x18- \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x10objectModuleType\x12=\n\x0fobject_platform\x18. \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x0eobjectPlatform\x12\x41\n\x11object_power_feed\x18/ \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x0fobjectPowerFeed\x12G\n\x13object_power_outlet\x18\x30 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x11objectPowerOutlet\x12\x44\n\x12object_power_panel\x18\x31 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x10objectPowerPanel\x12\x41\n\x11object_power_port\x18\x32 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x0fobjectPowerPort\x12\x37\n\robject_prefix\x18\x33 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x0cobjectPrefix\x12=\n\x0fobject_provider\x18\x34 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x0eobjectProvider\x12S\n\x17object_provider_account\x18\x35 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x15objectProviderAccount\x12S\n\x17object_provider_network\x18\x36 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x15objectProviderNetwork\x12.\n\nobject_rir\x18\x37 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\tobjectRir\x12\x31\n\x0bobject_rack\x18\x38 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\nobjectRack\x12S\n\x17object_rack_reservation\x18\x39 \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x15objectRackReservation\x12>\n\x10object_rack_role\x18: \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x0eobjectRackRole\x12>\n\x10object_rack_type\x18; \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x0eobjectRackType\x12>\n\x10object_rear_port\x18< \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x0eobjectRearPort\x12\x37\n\robject_region\x18= \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0cobjectRegion\x12\x31\n\x0bobject_role\x18> \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\nobjectRole\x12G\n\x13object_route_target\x18? \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x11objectRouteTarget\x12:\n\x0eobject_service\x18@ \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\robjectService\x12\x31\n\x0bobject_site\x18\x41 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\nobjectSite\x12\x41\n\x11object_site_group\x18\x42 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0fobjectSiteGroup\x12.\n\nobject_tag\x18\x43 \x01(\x0b\x32\r.diode.v1.TagH\x00R\tobjectTag\x12\x37\n\robject_tenant\x18\x44 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x0cobjectTenant\x12G\n\x13object_tenant_group\x18\x45 \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x11objectTenantGroup\x12\x37\n\robject_tunnel\x18\x46 \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x0cobjectTunnel\x12G\n\x13object_tunnel_group\x18G \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x11objectTunnelGroup\x12Y\n\x19object_tunnel_termination\x18H \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x17objectTunnelTermination\x12\x31\n\x0bobject_vlan\x18I \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\nobjectVlan\x12\x41\n\x11object_vlan_group\x18J \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x0fobjectVlanGroup\x12\x66\n\x1eobject_vlan_translation_policy\x18K \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R\x1bobjectVlanTranslationPolicy\x12`\n\x1cobject_vlan_translation_rule\x18L \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x19objectVlanTranslationRule\x12G\n\x13object_vm_interface\x18M \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x11objectVmInterface\x12.\n\nobject_vrf\x18N \x01(\x0b\x32\r.diode.v1.VRFH\x00R\tobjectVrf\x12P\n\x16object_virtual_chassis\x18O \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x14objectVirtualChassis\x12P\n\x16object_virtual_circuit\x18P \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x14objectVirtualCircuit\x12r\n\"object_virtual_circuit_termination\x18Q \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R\x1fobjectVirtualCircuitTermination\x12]\n\x1bobject_virtual_circuit_type\x18R \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x18objectVirtualCircuitType\x12\x63\n\x1dobject_virtual_device_context\x18S \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1aobjectVirtualDeviceContext\x12G\n\x13object_virtual_disk\x18T \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x11objectVirtualDisk\x12P\n\x16object_virtual_machine\x18U \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x14objectVirtualMachine\x12G\n\x13object_wireless_lan\x18V \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x11objectWirelessLan\x12W\n\x19object_wireless_lan_group\x18W \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x16objectWirelessLanGroup\x12J\n\x14object_wireless_link\x18X \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x12objectWirelessLinkB\x08\n\x06object\"\xa1\x04\n\tIKEPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12#\n\x07version\x18\x03 \x01(\x03\x42\t\xfa\x42\x06\"\x04\x30\x01\x30\x02R\x07version\x12\x30\n\x04mode\x18\x04 \x01(\tB\x17\xfa\x42\x14r\x12R\naggressiveR\x04mainH\x01R\x04mode\x88\x01\x01\x12(\n\rpreshared_key\x18\x05 \x01(\tH\x02R\x0cpresharedKey\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\x08 \x03(\x0b\x32%.diode.v1.IKEPolicy.CustomFieldsEntryR\x0c\x63ustomFields\x12\x33\n\tproposals\x18\t \x03(\x0b\x32\x15.diode.v1.IKEProposalR\tproposals\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_preshared_keyB\x0b\n\t_comments\"\x8e\x07\n\x0bIKEProposal\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12x\n\x15\x61uthentication_method\x18\x03 \x01(\tBC\xfa\x42@r>R\x0c\x63\x65rtificatesR\x0e\x64sa-signaturesR\x0epreshared-keysR\x0ersa-signaturesR\x14\x61uthenticationMethod\x12\x99\x01\n\x14\x65ncryption_algorithm\x18\x04 \x01(\tBf\xfa\x42\x63raR\x08\x33\x64\x65s-cbcR\x0b\x61\x65s-128-cbcR\x0b\x61\x65s-128-gcmR\x0b\x61\x65s-192-cbcR\x0b\x61\x65s-192-gcmR\x0b\x61\x65s-256-cbcR\x0b\x61\x65s-256-gcmR\x07\x64\x65s-cbcR\x13\x65ncryptionAlgorithm\x12\x81\x01\n\x18\x61uthentication_algorithm\x18\x05 \x01(\tBA\xfa\x42>rr\n\x11termination_cable\x18\x06 \x01(\x0b\x32\x0f.diode.v1.CableH\x00R\x10terminationCable\x12K\n\x16termination_cable_path\x18\x07 \x01(\x0b\x32\x13.diode.v1.CablePathH\x00R\x14terminationCablePath\x12`\n\x1dtermination_cable_termination\x18\x08 \x01(\x0b\x32\x1a.diode.v1.CableTerminationH\x00R\x1bterminationCableTermination\x12\x44\n\x13termination_circuit\x18\t \x01(\x0b\x32\x11.diode.v1.CircuitH\x00R\x12terminationCircuit\x12T\n\x19termination_circuit_group\x18\n \x01(\x0b\x32\x16.diode.v1.CircuitGroupH\x00R\x17terminationCircuitGroup\x12s\n$termination_circuit_group_assignment\x18\x0b \x01(\x0b\x32 .diode.v1.CircuitGroupAssignmentH\x00R!terminationCircuitGroupAssignment\x12\x66\n\x1ftermination_circuit_termination\x18\x0c \x01(\x0b\x32\x1c.diode.v1.CircuitTerminationH\x00R\x1dterminationCircuitTermination\x12Q\n\x18termination_circuit_type\x18\r \x01(\x0b\x32\x15.diode.v1.CircuitTypeH\x00R\x16terminationCircuitType\x12\x44\n\x13termination_cluster\x18\x0e \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x12terminationCluster\x12T\n\x19termination_cluster_group\x18\x0f \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x17terminationClusterGroup\x12Q\n\x18termination_cluster_type\x18\x10 \x01(\x0b\x32\x15.diode.v1.ClusterTypeH\x00R\x16terminationClusterType\x12Q\n\x18termination_console_port\x18\x11 \x01(\x0b\x32\x15.diode.v1.ConsolePortH\x00R\x16terminationConsolePort\x12\x64\n\x1ftermination_console_server_port\x18\x12 \x01(\x0b\x32\x1b.diode.v1.ConsoleServerPortH\x00R\x1cterminationConsoleServerPort\x12\x44\n\x13termination_contact\x18\x13 \x01(\x0b\x32\x11.diode.v1.ContactH\x00R\x12terminationContact\x12\x63\n\x1etermination_contact_assignment\x18\x14 \x01(\x0b\x32\x1b.diode.v1.ContactAssignmentH\x00R\x1cterminationContactAssignment\x12T\n\x19termination_contact_group\x18\x15 \x01(\x0b\x32\x16.diode.v1.ContactGroupH\x00R\x17terminationContactGroup\x12Q\n\x18termination_contact_role\x18\x16 \x01(\x0b\x32\x15.diode.v1.ContactRoleH\x00R\x16terminationContactRole\x12\x41\n\x12termination_device\x18\x17 \x01(\x0b\x32\x10.diode.v1.DeviceH\x00R\x11terminationDevice\x12K\n\x16termination_device_bay\x18\x18 \x01(\x0b\x32\x13.diode.v1.DeviceBayH\x00R\x14terminationDeviceBay\x12N\n\x17termination_device_role\x18\x19 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x00R\x15terminationDeviceRole\x12N\n\x17termination_device_type\x18\x1a \x01(\x0b\x32\x14.diode.v1.DeviceTypeH\x00R\x15terminationDeviceType\x12K\n\x16termination_fhrp_group\x18\x1b \x01(\x0b\x32\x13.diode.v1.FHRPGroupH\x00R\x14terminationFhrpGroup\x12j\n!termination_fhrp_group_assignment\x18\x1c \x01(\x0b\x32\x1d.diode.v1.FHRPGroupAssignmentH\x00R\x1eterminationFhrpGroupAssignment\x12K\n\x16termination_front_port\x18\x1d \x01(\x0b\x32\x13.diode.v1.FrontPortH\x00R\x14terminationFrontPort\x12K\n\x16termination_ike_policy\x18\x1e \x01(\x0b\x32\x13.diode.v1.IKEPolicyH\x00R\x14terminationIkePolicy\x12Q\n\x18termination_ike_proposal\x18\x1f \x01(\x0b\x32\x15.diode.v1.IKEProposalH\x00R\x16terminationIkeProposal\x12K\n\x16termination_ip_address\x18 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x00R\x14terminationIpAddress\x12\x45\n\x14termination_ip_range\x18! \x01(\x0b\x32\x11.diode.v1.IPRangeH\x00R\x12terminationIpRange\x12R\n\x19termination_ip_sec_policy\x18\" \x01(\x0b\x32\x15.diode.v1.IPSecPolicyH\x00R\x16terminationIpSecPolicy\x12U\n\x1atermination_ip_sec_profile\x18# \x01(\x0b\x32\x16.diode.v1.IPSecProfileH\x00R\x17terminationIpSecProfile\x12X\n\x1btermination_ip_sec_proposal\x18$ \x01(\x0b\x32\x17.diode.v1.IPSecProposalH\x00R\x18terminationIpSecProposal\x12J\n\x15termination_interface\x18% \x01(\x0b\x32\x13.diode.v1.InterfaceH\x00R\x14terminationInterface\x12W\n\x1atermination_inventory_item\x18& \x01(\x0b\x32\x17.diode.v1.InventoryItemH\x00R\x18terminationInventoryItem\x12\x64\n\x1ftermination_inventory_item_role\x18\' \x01(\x0b\x32\x1b.diode.v1.InventoryItemRoleH\x00R\x1cterminationInventoryItemRole\x12>\n\x11termination_l2vpn\x18( \x01(\x0b\x32\x0f.diode.v1.L2VPNH\x00R\x10terminationL2vpn\x12`\n\x1dtermination_l2vpn_termination\x18) \x01(\x0b\x32\x1a.diode.v1.L2VPNTerminationH\x00R\x1bterminationL2vpnTermination\x12G\n\x14termination_location\x18* \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\x13terminationLocation\x12N\n\x17termination_mac_address\x18+ \x01(\x0b\x32\x14.diode.v1.MACAddressH\x00R\x15terminationMacAddress\x12S\n\x18termination_manufacturer\x18, \x01(\x0b\x32\x16.diode.v1.ManufacturerH\x00R\x17terminationManufacturer\x12\x41\n\x12termination_module\x18- \x01(\x0b\x32\x10.diode.v1.ModuleH\x00R\x11terminationModule\x12K\n\x16termination_module_bay\x18. \x01(\x0b\x32\x13.diode.v1.ModuleBayH\x00R\x14terminationModuleBay\x12N\n\x17termination_module_type\x18/ \x01(\x0b\x32\x14.diode.v1.ModuleTypeH\x00R\x15terminationModuleType\x12G\n\x14termination_platform\x18\x30 \x01(\x0b\x32\x12.diode.v1.PlatformH\x00R\x13terminationPlatform\x12K\n\x16termination_power_feed\x18\x31 \x01(\x0b\x32\x13.diode.v1.PowerFeedH\x00R\x14terminationPowerFeed\x12Q\n\x18termination_power_outlet\x18\x32 \x01(\x0b\x32\x15.diode.v1.PowerOutletH\x00R\x16terminationPowerOutlet\x12N\n\x17termination_power_panel\x18\x33 \x01(\x0b\x32\x14.diode.v1.PowerPanelH\x00R\x15terminationPowerPanel\x12K\n\x16termination_power_port\x18\x34 \x01(\x0b\x32\x13.diode.v1.PowerPortH\x00R\x14terminationPowerPort\x12\x41\n\x12termination_prefix\x18\x35 \x01(\x0b\x32\x10.diode.v1.PrefixH\x00R\x11terminationPrefix\x12G\n\x14termination_provider\x18\x36 \x01(\x0b\x32\x12.diode.v1.ProviderH\x00R\x13terminationProvider\x12]\n\x1ctermination_provider_account\x18\x37 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x1aterminationProviderAccount\x12]\n\x1ctermination_provider_network\x18\x38 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkH\x00R\x1aterminationProviderNetwork\x12\x38\n\x0ftermination_rir\x18\x39 \x01(\x0b\x32\r.diode.v1.RIRH\x00R\x0eterminationRir\x12;\n\x10termination_rack\x18: \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\x0fterminationRack\x12]\n\x1ctermination_rack_reservation\x18; \x01(\x0b\x32\x19.diode.v1.RackReservationH\x00R\x1aterminationRackReservation\x12H\n\x15termination_rack_role\x18< \x01(\x0b\x32\x12.diode.v1.RackRoleH\x00R\x13terminationRackRole\x12H\n\x15termination_rack_type\x18= \x01(\x0b\x32\x12.diode.v1.RackTypeH\x00R\x13terminationRackType\x12H\n\x15termination_rear_port\x18> \x01(\x0b\x32\x12.diode.v1.RearPortH\x00R\x13terminationRearPort\x12\x41\n\x12termination_region\x18? \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x11terminationRegion\x12;\n\x10termination_role\x18@ \x01(\x0b\x32\x0e.diode.v1.RoleH\x00R\x0fterminationRole\x12Q\n\x18termination_route_target\x18\x41 \x01(\x0b\x32\x15.diode.v1.RouteTargetH\x00R\x16terminationRouteTarget\x12\x44\n\x13termination_service\x18\x42 \x01(\x0b\x32\x11.diode.v1.ServiceH\x00R\x12terminationService\x12;\n\x10termination_site\x18\x43 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x0fterminationSite\x12K\n\x16termination_site_group\x18\x44 \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x14terminationSiteGroup\x12\x38\n\x0ftermination_tag\x18\x45 \x01(\x0b\x32\r.diode.v1.TagH\x00R\x0eterminationTag\x12\x41\n\x12termination_tenant\x18\x46 \x01(\x0b\x32\x10.diode.v1.TenantH\x00R\x11terminationTenant\x12Q\n\x18termination_tenant_group\x18G \x01(\x0b\x32\x15.diode.v1.TenantGroupH\x00R\x16terminationTenantGroup\x12\x41\n\x12termination_tunnel\x18H \x01(\x0b\x32\x10.diode.v1.TunnelH\x00R\x11terminationTunnel\x12Q\n\x18termination_tunnel_group\x18I \x01(\x0b\x32\x15.diode.v1.TunnelGroupH\x00R\x16terminationTunnelGroup\x12\x63\n\x1etermination_tunnel_termination\x18J \x01(\x0b\x32\x1b.diode.v1.TunnelTerminationH\x00R\x1cterminationTunnelTermination\x12;\n\x10termination_vlan\x18K \x01(\x0b\x32\x0e.diode.v1.VLANH\x00R\x0fterminationVlan\x12K\n\x16termination_vlan_group\x18L \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x00R\x14terminationVlanGroup\x12p\n#termination_vlan_translation_policy\x18M \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\x00R terminationVlanTranslationPolicy\x12j\n!termination_vlan_translation_rule\x18N \x01(\x0b\x32\x1d.diode.v1.VLANTranslationRuleH\x00R\x1eterminationVlanTranslationRule\x12Q\n\x18termination_vm_interface\x18O \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x00R\x16terminationVmInterface\x12\x38\n\x0ftermination_vrf\x18P \x01(\x0b\x32\r.diode.v1.VRFH\x00R\x0eterminationVrf\x12Z\n\x1btermination_virtual_chassis\x18Q \x01(\x0b\x32\x18.diode.v1.VirtualChassisH\x00R\x19terminationVirtualChassis\x12Z\n\x1btermination_virtual_circuit\x18R \x01(\x0b\x32\x18.diode.v1.VirtualCircuitH\x00R\x19terminationVirtualCircuit\x12|\n\'termination_virtual_circuit_termination\x18S \x01(\x0b\x32#.diode.v1.VirtualCircuitTerminationH\x00R$terminationVirtualCircuitTermination\x12g\n termination_virtual_circuit_type\x18T \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeH\x00R\x1dterminationVirtualCircuitType\x12m\n\"termination_virtual_device_context\x18U \x01(\x0b\x32\x1e.diode.v1.VirtualDeviceContextH\x00R\x1fterminationVirtualDeviceContext\x12Q\n\x18termination_virtual_disk\x18V \x01(\x0b\x32\x15.diode.v1.VirtualDiskH\x00R\x16terminationVirtualDisk\x12Z\n\x1btermination_virtual_machine\x18W \x01(\x0b\x32\x18.diode.v1.VirtualMachineH\x00R\x19terminationVirtualMachine\x12Q\n\x18termination_wireless_lan\x18X \x01(\x0b\x32\x15.diode.v1.WirelessLANH\x00R\x16terminationWirelessLan\x12\x61\n\x1etermination_wireless_lan_group\x18Y \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x1bterminationWirelessLanGroup\x12T\n\x19termination_wireless_link\x18Z \x01(\x0b\x32\x16.diode.v1.WirelessLinkH\x00R\x17terminationWirelessLink\x12\x37\n\noutside_ip\x18[ \x01(\x0b\x32\x13.diode.v1.IPAddressH\x01R\toutsideIp\x88\x01\x01\x12!\n\x04tags\x18\\ \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12R\n\rcustom_fields\x18] \x03(\x0b\x32-.diode.v1.TunnelTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0bterminationB\r\n\x0b_outside_ip\"\x85\x06\n\x04VLAN\x12\'\n\x04site\x18\x01 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\x04site\x88\x01\x01\x12.\n\x05group\x18\x02 \x01(\x0b\x32\x13.diode.v1.VLANGroupH\x01R\x05group\x88\x01\x01\x12\x10\n\x03vid\x18\x03 \x01(\x03R\x03vid\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12@\n\x06status\x18\x06 \x01(\tB#\xfa\x42 r\x1eR\x06\x61\x63tiveR\ndeprecatedR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04role\x18\x07 \x01(\x0b\x32\x0e.diode.v1.RoleH\x04R\x04role\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\tqinq_role\x18\t \x01(\tB\x13\xfa\x42\x10r\x0eR\x05\x63vlanR\x05svlanH\x06R\x08qinqRole\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\tqinqSvlan\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0b \x01(\tH\x08R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x45\n\rcustom_fields\x18\r \x03(\x0b\x32 .diode.v1.VLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_siteB\x08\n\x06_groupB\t\n\x07_tenantB\t\n\x07_statusB\x07\n\x05_roleB\x0e\n\x0c_descriptionB\x0c\n\n_qinq_roleB\r\n\x0b_qinq_svlanB\x0b\n\t_comments\"\xf9\x05\n\tVLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x38\n\rscope_cluster\x18\x03 \x01(\x0b\x32\x11.diode.v1.ClusterH\x00R\x0cscopeCluster\x12H\n\x13scope_cluster_group\x18\x04 \x01(\x0b\x32\x16.diode.v1.ClusterGroupH\x00R\x11scopeClusterGroup\x12;\n\x0escope_location\x18\x05 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12/\n\nscope_rack\x18\x06 \x01(\x0b\x32\x0e.diode.v1.RackH\x00R\tscopeRack\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12\x1d\n\nvid_ranges\x18\n \x03(\x03R\tvidRanges\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x0c \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12J\n\rcustom_fields\x18\r \x03(\x0b\x32%.diode.v1.VLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_description\"b\n\x15VLANTranslationPolicy\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xc1\x01\n\x13VLANTranslationRule\x12\x37\n\x06policy\x18\x01 \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyR\x06policy\x12\x1b\n\tlocal_vid\x18\x02 \x01(\x03R\x08localVid\x12\x1d\n\nremote_vid\x18\x03 \x01(\x03R\tremoteVid\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x42\x0e\n\x0c_description\"\xcb\x08\n\x0bVMInterface\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n\x07\x65nabled\x18\x03 \x01(\x08H\x00R\x07\x65nabled\x88\x01\x01\x12\x32\n\x06parent\x18\x04 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x01R\x06parent\x88\x01\x01\x12\x32\n\x06\x62ridge\x18\x05 \x01(\x0b\x32\x15.diode.v1.VMInterfaceH\x02R\x06\x62ridge\x88\x01\x01\x12\x15\n\x03mtu\x18\x06 \x01(\x03H\x03R\x03mtu\x88\x01\x01\x12I\n\x13primary_mac_address\x18\x07 \x01(\x0b\x32\x14.diode.v1.MACAddressH\x04R\x11primaryMacAddress\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x05R\x0b\x64\x65scription\x88\x01\x01\x12\x42\n\x04mode\x18\t \x01(\tB)\xfa\x42&r$R\x06\x61\x63\x63\x65ssR\x06q-in-qR\x06taggedR\ntagged-allH\x06R\x04mode\x88\x01\x01\x12\x38\n\runtagged_vlan\x18\n \x01(\x0b\x32\x0e.diode.v1.VLANH\x07R\x0cuntaggedVlan\x88\x01\x01\x12\x32\n\nqinq_svlan\x18\x0b \x01(\x0b\x32\x0e.diode.v1.VLANH\x08R\tqinqSvlan\x88\x01\x01\x12\\\n\x17vlan_translation_policy\x18\x0c \x01(\x0b\x32\x1f.diode.v1.VLANTranslationPolicyH\tR\x15vlanTranslationPolicy\x88\x01\x01\x12$\n\x03vrf\x18\r \x01(\x0b\x32\r.diode.v1.VRFH\nR\x03vrf\x88\x01\x01\x12!\n\x04tags\x18\x0e \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x0f \x03(\x0b\x32\'.diode.v1.VMInterface.CustomFieldsEntryR\x0c\x63ustomFields\x12\x31\n\x0ctagged_vlans\x18\x10 \x03(\x0b\x32\x0e.diode.v1.VLANR\x0btaggedVlans\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\n\n\x08_enabledB\t\n\x07_parentB\t\n\x07_bridgeB\x06\n\x04_mtuB\x16\n\x14_primary_mac_addressB\x0e\n\x0c_descriptionB\x07\n\x05_modeB\x10\n\x0e_untagged_vlanB\r\n\x0b_qinq_svlanB\x1a\n\x18_vlan_translation_policyB\x06\n\x04_vrf\"\xd5\x04\n\x03VRF\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x13\n\x02rd\x18\x02 \x01(\tH\x00R\x02rd\x88\x01\x01\x12-\n\x06tenant\x18\x03 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12*\n\x0e\x65nforce_unique\x18\x04 \x01(\x08H\x02R\renforceUnique\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x06 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x07 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12\x44\n\rcustom_fields\x18\x08 \x03(\x0b\x32\x1f.diode.v1.VRF.CustomFieldsEntryR\x0c\x63ustomFields\x12<\n\x0eimport_targets\x18\t \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rimportTargets\x12<\n\x0e\x65xport_targets\x18\n \x03(\x0b\x32\x15.diode.v1.RouteTargetR\rexportTargets\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x05\n\x03_rdB\t\n\x07_tenantB\x11\n\x0f_enforce_uniqueB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xbc\x03\n\x0eVirtualChassis\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1b\n\x06\x64omain\x18\x02 \x01(\tH\x00R\x06\x64omain\x88\x01\x01\x12-\n\x06master\x18\x03 \x01(\x0b\x32\x10.diode.v1.DeviceH\x01R\x06master\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x05 \x01(\tH\x03R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x06 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x07 \x03(\x0b\x32*.diode.v1.VirtualChassis.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_domainB\t\n\x07_masterB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xe1\x05\n\x0eVirtualCircuit\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x44\n\x10provider_network\x18\x02 \x01(\x0b\x32\x19.diode.v1.ProviderNetworkR\x0fproviderNetwork\x12I\n\x10provider_account\x18\x03 \x01(\x0b\x32\x19.diode.v1.ProviderAccountH\x00R\x0fproviderAccount\x88\x01\x01\x12\x30\n\x04type\x18\x04 \x01(\x0b\x32\x1c.diode.v1.VirtualCircuitTypeR\x04type\x12j\n\x06status\x18\x05 \x01(\tBM\xfa\x42JrHR\x06\x61\x63tiveR\x0e\x64\x65\x63ommissionedR\x0e\x64\x65provisioningR\x07offlineR\x07plannedR\x0cprovisioningH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x06 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x03R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x08 \x01(\tH\x04R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\t \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\n \x03(\x0b\x32*.diode.v1.VirtualCircuit.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x13\n\x11_provider_accountB\t\n\x07_statusB\t\n\x07_tenantB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xdf\x03\n\x19VirtualCircuitTermination\x12\x41\n\x0fvirtual_circuit\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualCircuitR\x0evirtualCircuit\x12\x30\n\x04role\x18\x02 \x01(\tB\x17\xfa\x42\x14r\x12R\x03hubR\x04peerR\x05spokeH\x00R\x04role\x88\x01\x01\x12\x31\n\tinterface\x18\x03 \x01(\x0b\x32\x13.diode.v1.InterfaceR\tinterface\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Z\n\rcustom_fields\x18\x06 \x03(\x0b\x32\x35.diode.v1.VirtualCircuitTermination.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_roleB\x0e\n\x0c_description\"\xed\x02\n\x12VirtualCircuitType\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n\x05\x63olor\x18\x03 \x01(\tH\x00R\x05\x63olor\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12S\n\rcustom_fields\x18\x06 \x03(\x0b\x32..diode.v1.VirtualCircuitType.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x08\n\x06_colorB\x0e\n\x0c_description\"\xcd\x05\n\x14VirtualDeviceContext\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x10.diode.v1.DeviceR\x06\x64\x65vice\x12#\n\nidentifier\x18\x03 \x01(\x03H\x00R\nidentifier\x88\x01\x01\x12-\n\x06tenant\x18\x04 \x01(\x0b\x32\x10.diode.v1.TenantH\x01R\x06tenant\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\x05 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x02R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x06 \x01(\x0b\x32\x13.diode.v1.IPAddressH\x03R\nprimaryIp6\x88\x01\x01\x12\x37\n\x06status\x18\x07 \x01(\tB\x1f\xfa\x42\x1cr\x1aR\x06\x61\x63tiveR\x07offlineR\x07plannedR\x06status\x12%\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x04R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\t \x01(\tH\x05R\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\n \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12U\n\rcustom_fields\x18\x0b \x03(\x0b\x32\x30.diode.v1.VirtualDeviceContext.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\r\n\x0b_identifierB\t\n\x07_tenantB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xfd\x02\n\x0bVirtualDisk\x12\x41\n\x0fvirtual_machine\x18\x01 \x01(\x0b\x32\x18.diode.v1.VirtualMachineR\x0evirtualMachine\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x12\n\x04size\x18\x04 \x01(\x03R\x04size\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x06 \x03(\x0b\x32\'.diode.v1.VirtualDisk.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x0e\n\x0c_description\"\xcf\x08\n\x0eVirtualMachine\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12]\n\x06status\x18\x02 \x01(\tB@\xfa\x42=r;R\x06\x61\x63tiveR\x0f\x64\x65\x63ommissioningR\x06\x66\x61iledR\x07offlineR\x07plannedR\x06stagedH\x00R\x06status\x88\x01\x01\x12\'\n\x04site\x18\x03 \x01(\x0b\x32\x0e.diode.v1.SiteH\x01R\x04site\x88\x01\x01\x12\x30\n\x07\x63luster\x18\x04 \x01(\x0b\x32\x11.diode.v1.ClusterH\x02R\x07\x63luster\x88\x01\x01\x12-\n\x06\x64\x65vice\x18\x05 \x01(\x0b\x32\x10.diode.v1.DeviceH\x03R\x06\x64\x65vice\x88\x01\x01\x12\x1b\n\x06serial\x18\x06 \x01(\tH\x04R\x06serial\x88\x01\x01\x12-\n\x04role\x18\x07 \x01(\x0b\x32\x14.diode.v1.DeviceRoleH\x05R\x04role\x88\x01\x01\x12-\n\x06tenant\x18\x08 \x01(\x0b\x32\x10.diode.v1.TenantH\x06R\x06tenant\x88\x01\x01\x12\x33\n\x08platform\x18\t \x01(\x0b\x32\x12.diode.v1.PlatformH\x07R\x08platform\x88\x01\x01\x12\x39\n\x0bprimary_ip4\x18\n \x01(\x0b\x32\x13.diode.v1.IPAddressH\x08R\nprimaryIp4\x88\x01\x01\x12\x39\n\x0bprimary_ip6\x18\x0b \x01(\x0b\x32\x13.diode.v1.IPAddressH\tR\nprimaryIp6\x88\x01\x01\x12\x19\n\x05vcpus\x18\x0c \x01(\x01H\nR\x05vcpus\x88\x01\x01\x12\x1b\n\x06memory\x18\r \x01(\x03H\x0bR\x06memory\x88\x01\x01\x12\x17\n\x04\x64isk\x18\x0e \x01(\x03H\x0cR\x04\x64isk\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0f \x01(\tH\rR\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x10 \x01(\tH\x0eR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x11 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12O\n\rcustom_fields\x18\x12 \x03(\x0b\x32*.diode.v1.VirtualMachine.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\x07\n\x05_siteB\n\n\x08_clusterB\t\n\x07_deviceB\t\n\x07_serialB\x07\n\x05_roleB\t\n\x07_tenantB\x0b\n\t_platformB\x0e\n\x0c_primary_ip4B\x0e\n\x0c_primary_ip6B\x08\n\x06_vcpusB\t\n\x07_memoryB\x07\n\x05_diskB\x0e\n\x0c_descriptionB\x0b\n\t_comments\"\xa2\x08\n\x0bWirelessLAN\x12\x12\n\x04ssid\x18\x01 \x01(\tR\x04ssid\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x35\n\x05group\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x02R\x05group\x88\x01\x01\x12J\n\x06status\x18\x04 \x01(\tB-\xfa\x42*r(R\x06\x61\x63tiveR\ndeprecatedR\x08\x64isabledR\x08reservedH\x03R\x06status\x88\x01\x01\x12\'\n\x04vlan\x18\x05 \x01(\x0b\x32\x0e.diode.v1.VLANH\x04R\x04vlan\x88\x01\x01\x12;\n\x0escope_location\x18\x06 \x01(\x0b\x32\x12.diode.v1.LocationH\x00R\rscopeLocation\x12\x35\n\x0cscope_region\x18\x07 \x01(\x0b\x32\x10.diode.v1.RegionH\x00R\x0bscopeRegion\x12/\n\nscope_site\x18\x08 \x01(\x0b\x32\x0e.diode.v1.SiteH\x00R\tscopeSite\x12?\n\x10scope_site_group\x18\t \x01(\x0b\x32\x13.diode.v1.SiteGroupH\x00R\x0escopeSiteGroup\x12-\n\x06tenant\x18\n \x01(\x0b\x32\x10.diode.v1.TenantH\x05R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x0b \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x06R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x0c \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x07R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\r \x01(\tH\x08R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0e \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\x0f \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12L\n\rcustom_fields\x18\x10 \x03(\x0b\x32\'.diode.v1.WirelessLAN.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05scopeB\x0e\n\x0c_descriptionB\x08\n\x06_groupB\t\n\x07_statusB\x07\n\x05_vlanB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_comments\"\x88\x03\n\x10WirelessLANGroup\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12\x37\n\x06parent\x18\x03 \x01(\x0b\x32\x1a.diode.v1.WirelessLANGroupH\x00R\x06parent\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x01R\x0b\x64\x65scription\x88\x01\x01\x12!\n\x04tags\x18\x05 \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12Q\n\rcustom_fields\x18\x06 \x03(\x0b\x32,.diode.v1.WirelessLANGroup.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\t\n\x07_parentB\x0e\n\x0c_description\"\xb9\x07\n\x0cWirelessLink\x12\x34\n\x0binterface_a\x18\x01 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceA\x12\x34\n\x0binterface_b\x18\x02 \x01(\x0b\x32\x13.diode.v1.InterfaceR\ninterfaceB\x12\x17\n\x04ssid\x18\x03 \x01(\tH\x00R\x04ssid\x88\x01\x01\x12G\n\x06status\x18\x04 \x01(\tB*\xfa\x42\'r%R\tconnectedR\x0f\x64\x65\x63ommissioningR\x07plannedH\x01R\x06status\x88\x01\x01\x12-\n\x06tenant\x18\x05 \x01(\x0b\x32\x10.diode.v1.TenantH\x02R\x06tenant\x88\x01\x01\x12P\n\tauth_type\x18\x06 \x01(\tB.\xfa\x42+r)R\x04openR\x03wepR\x0ewpa-enterpriseR\x0cwpa-personalH\x03R\x08\x61uthType\x88\x01\x01\x12<\n\x0b\x61uth_cipher\x18\x07 \x01(\tB\x16\xfa\x42\x13r\x11R\x03\x61\x65sR\x04\x61utoR\x04tkipH\x04R\nauthCipher\x88\x01\x01\x12\x1e\n\x08\x61uth_psk\x18\x08 \x01(\tH\x05R\x07\x61uthPsk\x88\x01\x01\x12\x1f\n\x08\x64istance\x18\t \x01(\x01H\x06R\x08\x64istance\x88\x01\x01\x12>\n\rdistance_unit\x18\n \x01(\tB\x14\xfa\x42\x11r\x0fR\x02\x66tR\x02kmR\x01mR\x02miH\x07R\x0c\x64istanceUnit\x88\x01\x01\x12%\n\x0b\x64\x65scription\x18\x0b \x01(\tH\x08R\x0b\x64\x65scription\x88\x01\x01\x12\x1f\n\x08\x63omments\x18\x0c \x01(\tH\tR\x08\x63omments\x88\x01\x01\x12!\n\x04tags\x18\r \x03(\x0b\x32\r.diode.v1.TagR\x04tags\x12M\n\rcustom_fields\x18\x0e \x03(\x0b\x32(.diode.v1.WirelessLink.CustomFieldsEntryR\x0c\x63ustomFields\x1a[\n\x11\x43ustomFieldsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.diode.v1.CustomFieldValueR\x05value:\x02\x38\x01\x42\x07\n\x05_ssidB\t\n\x07_statusB\t\n\x07_tenantB\x0c\n\n_auth_typeB\x0e\n\x0c_auth_cipherB\x0b\n\t_auth_pskB\x0b\n\t_distanceB\x10\n\x0e_distance_unitB\x0e\n\x0c_descriptionB\x0b\n\t_comments2N\n\x0fIngesterService\x12;\n\x06Ingest\x12\x17.diode.v1.IngestRequest\x1a\x18.diode.v1.IngestResponseB5Z3github.com/netboxlabs/diode-sdk-go/diode/v1/diodepbb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -377,355 +377,355 @@ _globals['_WIRELESSLINK'].fields_by_name['distance_unit']._loaded_options = None _globals['_WIRELESSLINK'].fields_by_name['distance_unit']._serialized_options = b'\372B\021r\017R\002ftR\002kmR\001mR\002mi' _globals['_ENTITY']._serialized_start=96 - _globals['_ENTITY']._serialized_end=5427 - _globals['_INGESTREQUEST']._serialized_start=5430 - _globals['_INGESTREQUEST']._serialized_end=5786 - _globals['_INGESTRESPONSE']._serialized_start=5788 - _globals['_INGESTRESPONSE']._serialized_end=5828 - _globals['_ASN']._serialized_start=5831 - _globals['_ASN']._serialized_end=6257 - _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_ASNRANGE']._serialized_start=6260 - _globals['_ASNRANGE']._serialized_end=6699 - _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_AGGREGATE']._serialized_start=6702 - _globals['_AGGREGATE']._serialized_end=7212 - _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CABLE']._serialized_start=7215 - _globals['_CABLE']._serialized_end=8224 - _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CABLEPATH']._serialized_start=8227 - _globals['_CABLEPATH']._serialized_end=8385 - _globals['_CABLETERMINATION']._serialized_start=8388 - _globals['_CABLETERMINATION']._serialized_end=9255 - _globals['_CIRCUIT']._serialized_start=9258 - _globals['_CIRCUIT']._serialized_end=10384 - _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CIRCUITGROUP']._serialized_start=10387 - _globals['_CIRCUITGROUP']._serialized_end=10761 - _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CIRCUITGROUPASSIGNMENT']._serialized_start=10764 - _globals['_CIRCUITGROUPASSIGNMENT']._serialized_end=11114 - _globals['_CIRCUITTERMINATION']._serialized_start=11117 - _globals['_CIRCUITTERMINATION']._serialized_end=12153 - _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CIRCUITTYPE']._serialized_start=12156 - _globals['_CIRCUITTYPE']._serialized_end=12507 - _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CLUSTER']._serialized_start=12510 - _globals['_CLUSTER']._serialized_end=13342 - _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CLUSTERGROUP']._serialized_start=13345 - _globals['_CLUSTERGROUP']._serialized_end=13661 - _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CLUSTERTYPE']._serialized_start=13664 - _globals['_CLUSTERTYPE']._serialized_end=13978 - _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONSOLEPORT']._serialized_start=13981 - _globals['_CONSOLEPORT']._serialized_end=14730 - _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONSOLESERVERPORT']._serialized_start=14733 - _globals['_CONSOLESERVERPORT']._serialized_end=15494 - _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONTACT']._serialized_start=15497 - _globals['_CONTACT']._serialized_end=16078 - _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONTACTASSIGNMENT']._serialized_start=16081 - _globals['_CONTACTASSIGNMENT']._serialized_end=22838 - _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONTACTGROUP']._serialized_start=22841 - _globals['_CONTACTGROUP']._serialized_end=23221 - _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CONTACTROLE']._serialized_start=23224 - _globals['_CONTACTROLE']._serialized_end=23538 - _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_start=23541 - _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_end=28822 - _globals['_CUSTOMFIELDVALUE']._serialized_start=28825 - _globals['_CUSTOMFIELDVALUE']._serialized_end=29190 - _globals['_DEVICE']._serialized_start=29193 - _globals['_DEVICE']._serialized_end=30970 - _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_DEVICEBAY']._serialized_start=30973 - _globals['_DEVICEBAY']._serialized_end=31429 - _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_DEVICEROLE']._serialized_start=31432 - _globals['_DEVICEROLE']._serialized_end=31823 - _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_DEVICETYPE']._serialized_start=31826 - _globals['_DEVICETYPE']._serialized_end=32974 - _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_FHRPGROUP']._serialized_start=32977 - _globals['_FHRPGROUP']._serialized_end=33555 - _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_FHRPGROUPASSIGNMENT']._serialized_start=33558 - _globals['_FHRPGROUPASSIGNMENT']._serialized_end=40512 - _globals['_FRONTPORT']._serialized_start=40515 - _globals['_FRONTPORT']._serialized_end=41597 - _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_GENERICOBJECT']._serialized_start=41600 - _globals['_GENERICOBJECT']._serialized_end=47946 - _globals['_IKEPOLICY']._serialized_start=47949 - _globals['_IKEPOLICY']._serialized_end=48494 - _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IKEPROPOSAL']._serialized_start=48497 - _globals['_IKEPROPOSAL']._serialized_end=49407 - _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPADDRESS']._serialized_start=49410 - _globals['_IPADDRESS']._serialized_end=50439 - _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPRANGE']._serialized_start=50442 - _globals['_IPRANGE']._serialized_end=51115 - _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPOLICY']._serialized_start=51118 - _globals['_IPSECPOLICY']._serialized_end=51616 - _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPROFILE']._serialized_start=51619 - _globals['_IPSECPROFILE']._serialized_end=52107 - _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_IPSECPROPOSAL']._serialized_start=52110 - _globals['_IPSECPROPOSAL']._serialized_end=52946 - _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INTERFACE']._serialized_start=52949 - _globals['_INTERFACE']._serialized_end=60072 - _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INVENTORYITEM']._serialized_start=60075 - _globals['_INVENTORYITEM']._serialized_end=61507 - _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INVENTORYITEMROLE']._serialized_start=61510 - _globals['_INVENTORYITEMROLE']._serialized_end=61873 - _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_L2VPN']._serialized_start=61876 - _globals['_L2VPN']._serialized_end=62610 - _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_L2VPNTERMINATION']._serialized_start=62613 - _globals['_L2VPNTERMINATION']._serialized_end=63141 - _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_LOCATION']._serialized_start=63144 - _globals['_LOCATION']._serialized_end=63751 - _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MACADDRESS']._serialized_start=63754 - _globals['_MACADDRESS']._serialized_end=64297 - _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MANUFACTURER']._serialized_start=64300 - _globals['_MANUFACTURER']._serialized_end=64616 - _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULE']._serialized_start=64619 - _globals['_MODULE']._serialized_end=65272 - _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULEBAY']._serialized_start=65275 - _globals['_MODULEBAY']._serialized_end=65835 - _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_MODULETYPE']._serialized_start=65838 - _globals['_MODULETYPE']._serialized_end=66541 - _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PLATFORM']._serialized_start=66544 - _globals['_PLATFORM']._serialized_end=66934 - _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERFEED']._serialized_start=66937 - _globals['_POWERFEED']._serialized_end=67922 - _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWEROUTLET']._serialized_start=67925 - _globals['_POWEROUTLET']._serialized_end=69972 - _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERPANEL']._serialized_start=69975 - _globals['_POWERPANEL']._serialized_end=70415 - _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_POWERPORT']._serialized_start=70418 - _globals['_POWERPORT']._serialized_end=72467 - _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PREFIX']._serialized_start=72470 - _globals['_PREFIX']._serialized_end=73437 - _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDER']._serialized_start=73440 - _globals['_PROVIDER']._serialized_end=73884 - _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDERACCOUNT']._serialized_start=73887 - _globals['_PROVIDERACCOUNT']._serialized_end=74323 - _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_PROVIDERNETWORK']._serialized_start=74326 - _globals['_PROVIDERNETWORK']._serialized_end=74773 - _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RIR']._serialized_start=74776 - _globals['_RIR']._serialized_end=75125 - _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACK']._serialized_start=75128 - _globals['_RACK']._serialized_end=76843 - _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKRESERVATION']._serialized_start=76846 - _globals['_RACKRESERVATION']._serialized_end=77269 - _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKROLE']._serialized_start=77272 - _globals['_RACKROLE']._serialized_end=77617 - _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_RACKTYPE']._serialized_start=77620 - _globals['_RACKTYPE']._serialized_end=78824 - _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_REARPORT']._serialized_start=78827 - _globals['_REARPORT']._serialized_end=79833 - _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_REGION']._serialized_start=79836 - _globals['_REGION']._serialized_end=80198 - _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_ROLE']._serialized_start=80201 - _globals['_ROLE']._serialized_end=80541 - _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_ROUTETARGET']._serialized_start=80544 - _globals['_ROUTETARGET']._serialized_end=80942 - _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SERVICE']._serialized_start=80945 - _globals['_SERVICE']._serialized_end=81573 - _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SITE']._serialized_start=81576 - _globals['_SITE']._serialized_end=82557 - _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_SITEGROUP']._serialized_start=82560 - _globals['_SITEGROUP']._serialized_end=82931 - _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TAG']._serialized_start=82933 - _globals['_TAG']._serialized_end=83015 - _globals['_TENANT']._serialized_start=83018 - _globals['_TENANT']._serialized_end=83428 - _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TENANTGROUP']._serialized_start=83431 - _globals['_TENANTGROUP']._serialized_end=83808 - _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNEL']._serialized_start=83811 - _globals['_TUNNEL']._serialized_end=84569 - _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNELGROUP']._serialized_start=84572 - _globals['_TUNNELGROUP']._serialized_end=84886 - _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_TUNNELTERMINATION']._serialized_start=84889 - _globals['_TUNNELTERMINATION']._serialized_end=92495 - _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLAN']._serialized_start=92498 - _globals['_VLAN']._serialized_end=93271 - _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLANGROUP']._serialized_start=93274 - _globals['_VLANGROUP']._serialized_end=94035 - _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VLANTRANSLATIONPOLICY']._serialized_start=94037 - _globals['_VLANTRANSLATIONPOLICY']._serialized_end=94135 - _globals['_VLANTRANSLATIONRULE']._serialized_start=94138 - _globals['_VLANTRANSLATIONRULE']._serialized_end=94331 - _globals['_VMINTERFACE']._serialized_start=94334 - _globals['_VMINTERFACE']._serialized_end=95433 - _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VRF']._serialized_start=95436 - _globals['_VRF']._serialized_end=96033 - _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCHASSIS']._serialized_start=96036 - _globals['_VIRTUALCHASSIS']._serialized_end=96480 - _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUIT']._serialized_start=96483 - _globals['_VIRTUALCIRCUIT']._serialized_end=97220 - _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=97223 - _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=97702 - _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALCIRCUITTYPE']._serialized_start=97705 - _globals['_VIRTUALCIRCUITTYPE']._serialized_end=98070 - _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALDEVICECONTEXT']._serialized_start=98073 - _globals['_VIRTUALDEVICECONTEXT']._serialized_end=98790 - _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALDISK']._serialized_start=98793 - _globals['_VIRTUALDISK']._serialized_end=99174 - _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_VIRTUALMACHINE']._serialized_start=99177 - _globals['_VIRTUALMACHINE']._serialized_end=100280 - _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLAN']._serialized_start=100283 - _globals['_WIRELESSLAN']._serialized_end=101341 - _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLANGROUP']._serialized_start=101344 - _globals['_WIRELESSLANGROUP']._serialized_end=101736 - _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_WIRELESSLINK']._serialized_start=101739 - _globals['_WIRELESSLINK']._serialized_end=102692 - _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_start=6118 - _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_end=6209 - _globals['_INGESTERSERVICE']._serialized_start=102694 - _globals['_INGESTERSERVICE']._serialized_end=102772 + _globals['_ENTITY']._serialized_end=5361 + _globals['_INGESTREQUEST']._serialized_start=5364 + _globals['_INGESTREQUEST']._serialized_end=5720 + _globals['_INGESTRESPONSE']._serialized_start=5722 + _globals['_INGESTRESPONSE']._serialized_end=5762 + _globals['_ASN']._serialized_start=5765 + _globals['_ASN']._serialized_end=6191 + _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_ASN_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_ASNRANGE']._serialized_start=6194 + _globals['_ASNRANGE']._serialized_end=6633 + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_ASNRANGE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_AGGREGATE']._serialized_start=6636 + _globals['_AGGREGATE']._serialized_end=7146 + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_AGGREGATE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CABLE']._serialized_start=7149 + _globals['_CABLE']._serialized_end=8158 + _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CABLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CABLEPATH']._serialized_start=8161 + _globals['_CABLEPATH']._serialized_end=8319 + _globals['_CABLETERMINATION']._serialized_start=8322 + _globals['_CABLETERMINATION']._serialized_end=9189 + _globals['_CIRCUIT']._serialized_start=9192 + _globals['_CIRCUIT']._serialized_end=10318 + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CIRCUITGROUP']._serialized_start=10321 + _globals['_CIRCUITGROUP']._serialized_end=10695 + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CIRCUITGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CIRCUITGROUPASSIGNMENT']._serialized_start=10698 + _globals['_CIRCUITGROUPASSIGNMENT']._serialized_end=11048 + _globals['_CIRCUITTERMINATION']._serialized_start=11051 + _globals['_CIRCUITTERMINATION']._serialized_end=12087 + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CIRCUITTYPE']._serialized_start=12090 + _globals['_CIRCUITTYPE']._serialized_end=12441 + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CLUSTER']._serialized_start=12444 + _globals['_CLUSTER']._serialized_end=13276 + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CLUSTER_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CLUSTERGROUP']._serialized_start=13279 + _globals['_CLUSTERGROUP']._serialized_end=13595 + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CLUSTERGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CLUSTERTYPE']._serialized_start=13598 + _globals['_CLUSTERTYPE']._serialized_end=13912 + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CLUSTERTYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONSOLEPORT']._serialized_start=13915 + _globals['_CONSOLEPORT']._serialized_end=14664 + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONSOLEPORT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONSOLESERVERPORT']._serialized_start=14667 + _globals['_CONSOLESERVERPORT']._serialized_end=15428 + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONSOLESERVERPORT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONTACT']._serialized_start=15431 + _globals['_CONTACT']._serialized_end=16012 + _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONTACT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONTACTASSIGNMENT']._serialized_start=16015 + _globals['_CONTACTASSIGNMENT']._serialized_end=22772 + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONTACTASSIGNMENT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONTACTGROUP']._serialized_start=22775 + _globals['_CONTACTGROUP']._serialized_end=23155 + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONTACTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CONTACTROLE']._serialized_start=23158 + _globals['_CONTACTROLE']._serialized_end=23472 + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_CONTACTROLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_start=23475 + _globals['_CUSTOMFIELDOBJECTREFERENCE']._serialized_end=28690 + _globals['_CUSTOMFIELDVALUE']._serialized_start=28693 + _globals['_CUSTOMFIELDVALUE']._serialized_end=29231 + _globals['_DEVICE']._serialized_start=29234 + _globals['_DEVICE']._serialized_end=31011 + _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_DEVICE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_DEVICEBAY']._serialized_start=31014 + _globals['_DEVICEBAY']._serialized_end=31470 + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_DEVICEBAY_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_DEVICEROLE']._serialized_start=31473 + _globals['_DEVICEROLE']._serialized_end=31864 + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_DEVICEROLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_DEVICETYPE']._serialized_start=31867 + _globals['_DEVICETYPE']._serialized_end=33015 + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_DEVICETYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_FHRPGROUP']._serialized_start=33018 + _globals['_FHRPGROUP']._serialized_end=33596 + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_FHRPGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_FHRPGROUPASSIGNMENT']._serialized_start=33599 + _globals['_FHRPGROUPASSIGNMENT']._serialized_end=40553 + _globals['_FRONTPORT']._serialized_start=40556 + _globals['_FRONTPORT']._serialized_end=41638 + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_FRONTPORT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_GENERICOBJECT']._serialized_start=41641 + _globals['_GENERICOBJECT']._serialized_end=47987 + _globals['_IKEPOLICY']._serialized_start=47990 + _globals['_IKEPOLICY']._serialized_end=48535 + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IKEPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IKEPROPOSAL']._serialized_start=48538 + _globals['_IKEPROPOSAL']._serialized_end=49448 + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IKEPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IPADDRESS']._serialized_start=49451 + _globals['_IPADDRESS']._serialized_end=50480 + _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IPADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IPRANGE']._serialized_start=50483 + _globals['_IPRANGE']._serialized_end=51156 + _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IPRANGE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IPSECPOLICY']._serialized_start=51159 + _globals['_IPSECPOLICY']._serialized_end=51657 + _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IPSECPOLICY_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IPSECPROFILE']._serialized_start=51660 + _globals['_IPSECPROFILE']._serialized_end=52148 + _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IPSECPROFILE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_IPSECPROPOSAL']._serialized_start=52151 + _globals['_IPSECPROPOSAL']._serialized_end=52987 + _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_IPSECPROPOSAL_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_INTERFACE']._serialized_start=52990 + _globals['_INTERFACE']._serialized_end=60113 + _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_INTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_INVENTORYITEM']._serialized_start=60116 + _globals['_INVENTORYITEM']._serialized_end=61548 + _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_INVENTORYITEM_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_INVENTORYITEMROLE']._serialized_start=61551 + _globals['_INVENTORYITEMROLE']._serialized_end=61914 + _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_INVENTORYITEMROLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_L2VPN']._serialized_start=61917 + _globals['_L2VPN']._serialized_end=62651 + _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_L2VPN_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_L2VPNTERMINATION']._serialized_start=62654 + _globals['_L2VPNTERMINATION']._serialized_end=63182 + _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_L2VPNTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_LOCATION']._serialized_start=63185 + _globals['_LOCATION']._serialized_end=63792 + _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_LOCATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_MACADDRESS']._serialized_start=63795 + _globals['_MACADDRESS']._serialized_end=64338 + _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_MACADDRESS_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_MANUFACTURER']._serialized_start=64341 + _globals['_MANUFACTURER']._serialized_end=64657 + _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_MANUFACTURER_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_MODULE']._serialized_start=64660 + _globals['_MODULE']._serialized_end=65313 + _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_MODULE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_MODULEBAY']._serialized_start=65316 + _globals['_MODULEBAY']._serialized_end=65876 + _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_MODULEBAY_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_MODULETYPE']._serialized_start=65879 + _globals['_MODULETYPE']._serialized_end=66582 + _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_MODULETYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_PLATFORM']._serialized_start=66585 + _globals['_PLATFORM']._serialized_end=66975 + _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_PLATFORM_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_POWERFEED']._serialized_start=66978 + _globals['_POWERFEED']._serialized_end=67963 + _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_POWERFEED_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_POWEROUTLET']._serialized_start=67966 + _globals['_POWEROUTLET']._serialized_end=70013 + _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_POWEROUTLET_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_POWERPANEL']._serialized_start=70016 + _globals['_POWERPANEL']._serialized_end=70456 + _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_POWERPANEL_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_POWERPORT']._serialized_start=70459 + _globals['_POWERPORT']._serialized_end=72508 + _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_POWERPORT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_PREFIX']._serialized_start=72511 + _globals['_PREFIX']._serialized_end=73478 + _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_PREFIX_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_PROVIDER']._serialized_start=73481 + _globals['_PROVIDER']._serialized_end=73925 + _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_PROVIDER_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_PROVIDERACCOUNT']._serialized_start=73928 + _globals['_PROVIDERACCOUNT']._serialized_end=74364 + _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_PROVIDERACCOUNT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_PROVIDERNETWORK']._serialized_start=74367 + _globals['_PROVIDERNETWORK']._serialized_end=74814 + _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_PROVIDERNETWORK_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_RIR']._serialized_start=74817 + _globals['_RIR']._serialized_end=75166 + _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_RIR_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_RACK']._serialized_start=75169 + _globals['_RACK']._serialized_end=76884 + _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_RACK_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_RACKRESERVATION']._serialized_start=76887 + _globals['_RACKRESERVATION']._serialized_end=77310 + _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_RACKRESERVATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_RACKROLE']._serialized_start=77313 + _globals['_RACKROLE']._serialized_end=77658 + _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_RACKROLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_RACKTYPE']._serialized_start=77661 + _globals['_RACKTYPE']._serialized_end=78865 + _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_RACKTYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_REARPORT']._serialized_start=78868 + _globals['_REARPORT']._serialized_end=79874 + _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_REARPORT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_REGION']._serialized_start=79877 + _globals['_REGION']._serialized_end=80239 + _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_REGION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_ROLE']._serialized_start=80242 + _globals['_ROLE']._serialized_end=80582 + _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_ROLE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_ROUTETARGET']._serialized_start=80585 + _globals['_ROUTETARGET']._serialized_end=80983 + _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_ROUTETARGET_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_SERVICE']._serialized_start=80986 + _globals['_SERVICE']._serialized_end=81614 + _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_SERVICE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_SITE']._serialized_start=81617 + _globals['_SITE']._serialized_end=82598 + _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_SITE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_SITEGROUP']._serialized_start=82601 + _globals['_SITEGROUP']._serialized_end=82972 + _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_SITEGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_TAG']._serialized_start=82974 + _globals['_TAG']._serialized_end=83056 + _globals['_TENANT']._serialized_start=83059 + _globals['_TENANT']._serialized_end=83469 + _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_TENANT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_TENANTGROUP']._serialized_start=83472 + _globals['_TENANTGROUP']._serialized_end=83849 + _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_TENANTGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_TUNNEL']._serialized_start=83852 + _globals['_TUNNEL']._serialized_end=84610 + _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_TUNNEL_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_TUNNELGROUP']._serialized_start=84613 + _globals['_TUNNELGROUP']._serialized_end=84927 + _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_TUNNELGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_TUNNELTERMINATION']._serialized_start=84930 + _globals['_TUNNELTERMINATION']._serialized_end=92536 + _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_TUNNELTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VLAN']._serialized_start=92539 + _globals['_VLAN']._serialized_end=93312 + _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VLAN_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VLANGROUP']._serialized_start=93315 + _globals['_VLANGROUP']._serialized_end=94076 + _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VLANTRANSLATIONPOLICY']._serialized_start=94078 + _globals['_VLANTRANSLATIONPOLICY']._serialized_end=94176 + _globals['_VLANTRANSLATIONRULE']._serialized_start=94179 + _globals['_VLANTRANSLATIONRULE']._serialized_end=94372 + _globals['_VMINTERFACE']._serialized_start=94375 + _globals['_VMINTERFACE']._serialized_end=95474 + _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VMINTERFACE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VRF']._serialized_start=95477 + _globals['_VRF']._serialized_end=96074 + _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VRF_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALCHASSIS']._serialized_start=96077 + _globals['_VIRTUALCHASSIS']._serialized_end=96521 + _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALCHASSIS_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALCIRCUIT']._serialized_start=96524 + _globals['_VIRTUALCIRCUIT']._serialized_end=97261 + _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALCIRCUIT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_start=97264 + _globals['_VIRTUALCIRCUITTERMINATION']._serialized_end=97743 + _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALCIRCUITTERMINATION_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALCIRCUITTYPE']._serialized_start=97746 + _globals['_VIRTUALCIRCUITTYPE']._serialized_end=98111 + _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALCIRCUITTYPE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALDEVICECONTEXT']._serialized_start=98114 + _globals['_VIRTUALDEVICECONTEXT']._serialized_end=98831 + _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALDEVICECONTEXT_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALDISK']._serialized_start=98834 + _globals['_VIRTUALDISK']._serialized_end=99215 + _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALDISK_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_VIRTUALMACHINE']._serialized_start=99218 + _globals['_VIRTUALMACHINE']._serialized_end=100321 + _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_VIRTUALMACHINE_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_WIRELESSLAN']._serialized_start=100324 + _globals['_WIRELESSLAN']._serialized_end=101382 + _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_WIRELESSLAN_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_WIRELESSLANGROUP']._serialized_start=101385 + _globals['_WIRELESSLANGROUP']._serialized_end=101777 + _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_WIRELESSLANGROUP_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_WIRELESSLINK']._serialized_start=101780 + _globals['_WIRELESSLINK']._serialized_end=102733 + _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_start=6052 + _globals['_WIRELESSLINK_CUSTOMFIELDSENTRY']._serialized_end=6143 + _globals['_INGESTERSERVICE']._serialized_start=102735 + _globals['_INGESTERSERVICE']._serialized_end=102813 # @@protoc_insertion_point(module_scope) diff --git a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi index 61a8182..4fe069e 100644 --- a/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi +++ b/netboxlabs/diode/sdk/diode/v1/ingester_pb2.pyi @@ -8,38 +8,35 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class Entity(_message.Message): - __slots__ = ("timestamp", "asn_range", "asn", "aggregate", "cable_path", "cable", "cable_termination", "circuit_termination", "circuit_group_assignment", "circuit_group", "circuit", "circuit_type", "cluster_group", "cluster", "cluster_type", "console_port", "console_server_port", "contact_assignment", "contact_group", "contact_role", "contact", "vlan", "device_bay", "device_role", "device", "device_type", "fhrp_group_assignment", "fhrp_group", "rear_port", "front_port", "generic_object", "ike_policy", "ike_proposal", "ip_address", "ip_range", "ip_sec_policy", "ip_sec_profile", "ip_sec_proposal", "interface", "inventory_item_role", "inventory_item", "l2vpn", "l2vpn_termination", "location", "mac_address", "manufacturer", "module_bay", "module", "module_type", "region", "site_group", "tag", "tenant_group", "vm_interface", "virtual_machine", "wireless_lan_group", "wireless_link", "platform", "power_feed", "power_outlet", "power_panel", "power_port", "prefix", "provider_account", "provider_network", "provider", "rir", "rack_reservation", "rack_role", "rack", "rack_type", "role", "route_target", "service", "site", "tenant", "tunnel_group", "tunnel", "tunnel_termination", "vlan_group", "vlan_translation_policy", "vlan_translation_rule", "vrf", "virtual_chassis", "virtual_circuit", "virtual_circuit_termination", "virtual_circuit_type", "virtual_device_context", "virtual_disk", "wireless_lan") + __slots__ = ("timestamp", "asn", "asn_range", "aggregate", "cable", "cable_path", "cable_termination", "circuit", "circuit_group", "circuit_group_assignment", "circuit_termination", "circuit_type", "cluster", "cluster_group", "cluster_type", "console_port", "console_server_port", "contact", "contact_assignment", "contact_group", "contact_role", "device", "device_bay", "device_role", "device_type", "fhrp_group", "fhrp_group_assignment", "front_port", "ike_policy", "ike_proposal", "ip_address", "ip_range", "ip_sec_policy", "ip_sec_profile", "ip_sec_proposal", "interface", "inventory_item", "inventory_item_role", "l2vpn", "l2vpn_termination", "location", "mac_address", "manufacturer", "module", "module_bay", "module_type", "platform", "power_feed", "power_outlet", "power_panel", "power_port", "prefix", "provider", "provider_account", "provider_network", "rir", "rack", "rack_reservation", "rack_role", "rack_type", "rear_port", "region", "role", "route_target", "service", "site", "site_group", "tag", "tenant", "tenant_group", "tunnel", "tunnel_group", "tunnel_termination", "vlan", "vlan_group", "vlan_translation_policy", "vlan_translation_rule", "vm_interface", "vrf", "virtual_chassis", "virtual_circuit", "virtual_circuit_termination", "virtual_circuit_type", "virtual_device_context", "virtual_disk", "virtual_machine", "wireless_lan", "wireless_lan_group", "wireless_link") TIMESTAMP_FIELD_NUMBER: _ClassVar[int] - ASN_RANGE_FIELD_NUMBER: _ClassVar[int] ASN_FIELD_NUMBER: _ClassVar[int] + ASN_RANGE_FIELD_NUMBER: _ClassVar[int] AGGREGATE_FIELD_NUMBER: _ClassVar[int] - CABLE_PATH_FIELD_NUMBER: _ClassVar[int] CABLE_FIELD_NUMBER: _ClassVar[int] + CABLE_PATH_FIELD_NUMBER: _ClassVar[int] CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] CIRCUIT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] - CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] CLUSTER_FIELD_NUMBER: _ClassVar[int] + CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + CONTACT_FIELD_NUMBER: _ClassVar[int] CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] - CONTACT_FIELD_NUMBER: _ClassVar[int] - VLAN_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] - DEVICE_FIELD_NUMBER: _ClassVar[int] DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] - FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] - REAR_PORT_FIELD_NUMBER: _ClassVar[int] + FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] FRONT_PORT_FIELD_NUMBER: _ClassVar[int] - GENERIC_OBJECT_FIELD_NUMBER: _ClassVar[int] IKE_POLICY_FIELD_NUMBER: _ClassVar[int] IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] @@ -48,49 +45,48 @@ class Entity(_message.Message): IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] INTERFACE_FIELD_NUMBER: _ClassVar[int] - INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] L2VPN_FIELD_NUMBER: _ClassVar[int] L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] LOCATION_FIELD_NUMBER: _ClassVar[int] MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] MANUFACTURER_FIELD_NUMBER: _ClassVar[int] - MODULE_BAY_FIELD_NUMBER: _ClassVar[int] MODULE_FIELD_NUMBER: _ClassVar[int] + MODULE_BAY_FIELD_NUMBER: _ClassVar[int] MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] - REGION_FIELD_NUMBER: _ClassVar[int] - SITE_GROUP_FIELD_NUMBER: _ClassVar[int] - TAG_FIELD_NUMBER: _ClassVar[int] - TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] - VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] - VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] - WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] - WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] PLATFORM_FIELD_NUMBER: _ClassVar[int] POWER_FEED_FIELD_NUMBER: _ClassVar[int] POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] POWER_PANEL_FIELD_NUMBER: _ClassVar[int] POWER_PORT_FIELD_NUMBER: _ClassVar[int] PREFIX_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] - PROVIDER_FIELD_NUMBER: _ClassVar[int] RIR_FIELD_NUMBER: _ClassVar[int] + RACK_FIELD_NUMBER: _ClassVar[int] RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] RACK_ROLE_FIELD_NUMBER: _ClassVar[int] - RACK_FIELD_NUMBER: _ClassVar[int] RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + REAR_PORT_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] ROLE_FIELD_NUMBER: _ClassVar[int] ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] SERVICE_FIELD_NUMBER: _ClassVar[int] SITE_FIELD_NUMBER: _ClassVar[int] + SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TAG_FIELD_NUMBER: _ClassVar[int] TENANT_FIELD_NUMBER: _ClassVar[int] - TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] TUNNEL_FIELD_NUMBER: _ClassVar[int] + TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + VLAN_FIELD_NUMBER: _ClassVar[int] VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] VRF_FIELD_NUMBER: _ClassVar[int] VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] @@ -98,38 +94,38 @@ class Entity(_message.Message): VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] timestamp: _timestamp_pb2.Timestamp - asn_range: ASNRange asn: ASN + asn_range: ASNRange aggregate: Aggregate - cable_path: CablePath cable: Cable + cable_path: CablePath cable_termination: CableTermination - circuit_termination: CircuitTermination - circuit_group_assignment: CircuitGroupAssignment - circuit_group: CircuitGroup circuit: Circuit + circuit_group: CircuitGroup + circuit_group_assignment: CircuitGroupAssignment + circuit_termination: CircuitTermination circuit_type: CircuitType - cluster_group: ClusterGroup cluster: Cluster + cluster_group: ClusterGroup cluster_type: ClusterType console_port: ConsolePort console_server_port: ConsoleServerPort + contact: Contact contact_assignment: ContactAssignment contact_group: ContactGroup contact_role: ContactRole - contact: Contact - vlan: VLAN + device: Device device_bay: DeviceBay device_role: DeviceRole - device: Device device_type: DeviceType - fhrp_group_assignment: FHRPGroupAssignment fhrp_group: FHRPGroup - rear_port: RearPort + fhrp_group_assignment: FHRPGroupAssignment front_port: FrontPort - generic_object: GenericObject ike_policy: IKEPolicy ike_proposal: IKEProposal ip_address: IPAddress @@ -138,49 +134,48 @@ class Entity(_message.Message): ip_sec_profile: IPSecProfile ip_sec_proposal: IPSecProposal interface: Interface - inventory_item_role: InventoryItemRole inventory_item: InventoryItem + inventory_item_role: InventoryItemRole l2vpn: L2VPN l2vpn_termination: L2VPNTermination location: Location mac_address: MACAddress manufacturer: Manufacturer - module_bay: ModuleBay module: Module + module_bay: ModuleBay module_type: ModuleType - region: Region - site_group: SiteGroup - tag: Tag - tenant_group: TenantGroup - vm_interface: VMInterface - virtual_machine: VirtualMachine - wireless_lan_group: WirelessLANGroup - wireless_link: WirelessLink platform: Platform power_feed: PowerFeed power_outlet: PowerOutlet power_panel: PowerPanel power_port: PowerPort prefix: Prefix + provider: Provider provider_account: ProviderAccount provider_network: ProviderNetwork - provider: Provider rir: RIR + rack: Rack rack_reservation: RackReservation rack_role: RackRole - rack: Rack rack_type: RackType + rear_port: RearPort + region: Region role: Role route_target: RouteTarget service: Service site: Site + site_group: SiteGroup + tag: Tag tenant: Tenant - tunnel_group: TunnelGroup + tenant_group: TenantGroup tunnel: Tunnel + tunnel_group: TunnelGroup tunnel_termination: TunnelTermination + vlan: VLAN vlan_group: VLANGroup vlan_translation_policy: VLANTranslationPolicy vlan_translation_rule: VLANTranslationRule + vm_interface: VMInterface vrf: VRF virtual_chassis: VirtualChassis virtual_circuit: VirtualCircuit @@ -188,8 +183,11 @@ class Entity(_message.Message): virtual_circuit_type: VirtualCircuitType virtual_device_context: VirtualDeviceContext virtual_disk: VirtualDisk + virtual_machine: VirtualMachine wireless_lan: WirelessLAN - def __init__(self, timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., asn: _Optional[_Union[ASN, _Mapping]] = ..., aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., circuit: _Optional[_Union[Circuit, _Mapping]] = ..., circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., generic_object: _Optional[_Union[GenericObject, _Mapping]] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tag: _Optional[_Union[Tag, _Mapping]] = ..., tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., service: _Optional[_Union[Service, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ...) -> None: ... + wireless_lan_group: WirelessLANGroup + wireless_link: WirelessLink + def __init__(self, timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., asn: _Optional[_Union[ASN, _Mapping]] = ..., asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., circuit: _Optional[_Union[Circuit, _Mapping]] = ..., circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., service: _Optional[_Union[Service, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tag: _Optional[_Union[Tag, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ...) -> None: ... class IngestRequest(_message.Message): __slots__ = ("stream", "entities", "id", "producer_app_name", "producer_app_version", "sdk_name", "sdk_version") @@ -929,37 +927,34 @@ class ContactRole(_message.Message): def __init__(self, name: _Optional[str] = ..., slug: _Optional[str] = ..., description: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[Tag, _Mapping]]] = ..., custom_fields: _Optional[_Mapping[str, CustomFieldValue]] = ...) -> None: ... class CustomFieldObjectReference(_message.Message): - __slots__ = ("asn_range", "asn", "aggregate", "cable_path", "cable", "cable_termination", "circuit_termination", "circuit_group_assignment", "circuit_group", "circuit", "circuit_type", "cluster_group", "cluster", "cluster_type", "console_port", "console_server_port", "contact_assignment", "contact_group", "contact_role", "contact", "vlan", "device_bay", "device_role", "device", "device_type", "fhrp_group_assignment", "fhrp_group", "rear_port", "front_port", "generic_object", "ike_policy", "ike_proposal", "ip_address", "ip_range", "ip_sec_policy", "ip_sec_profile", "ip_sec_proposal", "interface", "inventory_item_role", "inventory_item", "l2vpn", "l2vpn_termination", "location", "mac_address", "manufacturer", "module_bay", "module", "module_type", "region", "site_group", "tag", "tenant_group", "vm_interface", "virtual_machine", "wireless_lan_group", "wireless_link", "platform", "power_feed", "power_outlet", "power_panel", "power_port", "prefix", "provider_account", "provider_network", "provider", "rir", "rack_reservation", "rack_role", "rack", "rack_type", "role", "route_target", "service", "site", "tenant", "tunnel_group", "tunnel", "tunnel_termination", "vlan_group", "vlan_translation_policy", "vlan_translation_rule", "vrf", "virtual_chassis", "virtual_circuit", "virtual_circuit_termination", "virtual_circuit_type", "virtual_device_context", "virtual_disk", "wireless_lan") - ASN_RANGE_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("asn", "asn_range", "aggregate", "cable", "cable_path", "cable_termination", "circuit", "circuit_group", "circuit_group_assignment", "circuit_termination", "circuit_type", "cluster", "cluster_group", "cluster_type", "console_port", "console_server_port", "contact", "contact_assignment", "contact_group", "contact_role", "device", "device_bay", "device_role", "device_type", "fhrp_group", "fhrp_group_assignment", "front_port", "ike_policy", "ike_proposal", "ip_address", "ip_range", "ip_sec_policy", "ip_sec_profile", "ip_sec_proposal", "interface", "inventory_item", "inventory_item_role", "l2vpn", "l2vpn_termination", "location", "mac_address", "manufacturer", "module", "module_bay", "module_type", "platform", "power_feed", "power_outlet", "power_panel", "power_port", "prefix", "provider", "provider_account", "provider_network", "rir", "rack", "rack_reservation", "rack_role", "rack_type", "rear_port", "region", "role", "route_target", "service", "site", "site_group", "tag", "tenant", "tenant_group", "tunnel", "tunnel_group", "tunnel_termination", "vlan", "vlan_group", "vlan_translation_policy", "vlan_translation_rule", "vm_interface", "vrf", "virtual_chassis", "virtual_circuit", "virtual_circuit_termination", "virtual_circuit_type", "virtual_device_context", "virtual_disk", "virtual_machine", "wireless_lan", "wireless_lan_group", "wireless_link") ASN_FIELD_NUMBER: _ClassVar[int] + ASN_RANGE_FIELD_NUMBER: _ClassVar[int] AGGREGATE_FIELD_NUMBER: _ClassVar[int] - CABLE_PATH_FIELD_NUMBER: _ClassVar[int] CABLE_FIELD_NUMBER: _ClassVar[int] + CABLE_PATH_FIELD_NUMBER: _ClassVar[int] CABLE_TERMINATION_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] - CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] CIRCUIT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] + CIRCUIT_TERMINATION_FIELD_NUMBER: _ClassVar[int] CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] - CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] CLUSTER_FIELD_NUMBER: _ClassVar[int] + CLUSTER_GROUP_FIELD_NUMBER: _ClassVar[int] CLUSTER_TYPE_FIELD_NUMBER: _ClassVar[int] CONSOLE_PORT_FIELD_NUMBER: _ClassVar[int] CONSOLE_SERVER_PORT_FIELD_NUMBER: _ClassVar[int] + CONTACT_FIELD_NUMBER: _ClassVar[int] CONTACT_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] CONTACT_GROUP_FIELD_NUMBER: _ClassVar[int] CONTACT_ROLE_FIELD_NUMBER: _ClassVar[int] - CONTACT_FIELD_NUMBER: _ClassVar[int] - VLAN_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] DEVICE_BAY_FIELD_NUMBER: _ClassVar[int] DEVICE_ROLE_FIELD_NUMBER: _ClassVar[int] - DEVICE_FIELD_NUMBER: _ClassVar[int] DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] - FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] FHRP_GROUP_FIELD_NUMBER: _ClassVar[int] - REAR_PORT_FIELD_NUMBER: _ClassVar[int] + FHRP_GROUP_ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] FRONT_PORT_FIELD_NUMBER: _ClassVar[int] - GENERIC_OBJECT_FIELD_NUMBER: _ClassVar[int] IKE_POLICY_FIELD_NUMBER: _ClassVar[int] IKE_PROPOSAL_FIELD_NUMBER: _ClassVar[int] IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] @@ -968,49 +963,48 @@ class CustomFieldObjectReference(_message.Message): IP_SEC_PROFILE_FIELD_NUMBER: _ClassVar[int] IP_SEC_PROPOSAL_FIELD_NUMBER: _ClassVar[int] INTERFACE_FIELD_NUMBER: _ClassVar[int] - INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] INVENTORY_ITEM_FIELD_NUMBER: _ClassVar[int] + INVENTORY_ITEM_ROLE_FIELD_NUMBER: _ClassVar[int] L2VPN_FIELD_NUMBER: _ClassVar[int] L2VPN_TERMINATION_FIELD_NUMBER: _ClassVar[int] LOCATION_FIELD_NUMBER: _ClassVar[int] MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] MANUFACTURER_FIELD_NUMBER: _ClassVar[int] - MODULE_BAY_FIELD_NUMBER: _ClassVar[int] MODULE_FIELD_NUMBER: _ClassVar[int] + MODULE_BAY_FIELD_NUMBER: _ClassVar[int] MODULE_TYPE_FIELD_NUMBER: _ClassVar[int] - REGION_FIELD_NUMBER: _ClassVar[int] - SITE_GROUP_FIELD_NUMBER: _ClassVar[int] - TAG_FIELD_NUMBER: _ClassVar[int] - TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] - VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] - VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] - WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] - WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] PLATFORM_FIELD_NUMBER: _ClassVar[int] POWER_FEED_FIELD_NUMBER: _ClassVar[int] POWER_OUTLET_FIELD_NUMBER: _ClassVar[int] POWER_PANEL_FIELD_NUMBER: _ClassVar[int] POWER_PORT_FIELD_NUMBER: _ClassVar[int] PREFIX_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] PROVIDER_ACCOUNT_FIELD_NUMBER: _ClassVar[int] PROVIDER_NETWORK_FIELD_NUMBER: _ClassVar[int] - PROVIDER_FIELD_NUMBER: _ClassVar[int] RIR_FIELD_NUMBER: _ClassVar[int] + RACK_FIELD_NUMBER: _ClassVar[int] RACK_RESERVATION_FIELD_NUMBER: _ClassVar[int] RACK_ROLE_FIELD_NUMBER: _ClassVar[int] - RACK_FIELD_NUMBER: _ClassVar[int] RACK_TYPE_FIELD_NUMBER: _ClassVar[int] + REAR_PORT_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] ROLE_FIELD_NUMBER: _ClassVar[int] ROUTE_TARGET_FIELD_NUMBER: _ClassVar[int] SERVICE_FIELD_NUMBER: _ClassVar[int] SITE_FIELD_NUMBER: _ClassVar[int] + SITE_GROUP_FIELD_NUMBER: _ClassVar[int] + TAG_FIELD_NUMBER: _ClassVar[int] TENANT_FIELD_NUMBER: _ClassVar[int] - TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] + TENANT_GROUP_FIELD_NUMBER: _ClassVar[int] TUNNEL_FIELD_NUMBER: _ClassVar[int] + TUNNEL_GROUP_FIELD_NUMBER: _ClassVar[int] TUNNEL_TERMINATION_FIELD_NUMBER: _ClassVar[int] + VLAN_FIELD_NUMBER: _ClassVar[int] VLAN_GROUP_FIELD_NUMBER: _ClassVar[int] VLAN_TRANSLATION_POLICY_FIELD_NUMBER: _ClassVar[int] VLAN_TRANSLATION_RULE_FIELD_NUMBER: _ClassVar[int] + VM_INTERFACE_FIELD_NUMBER: _ClassVar[int] VRF_FIELD_NUMBER: _ClassVar[int] VIRTUAL_CHASSIS_FIELD_NUMBER: _ClassVar[int] VIRTUAL_CIRCUIT_FIELD_NUMBER: _ClassVar[int] @@ -1018,37 +1012,37 @@ class CustomFieldObjectReference(_message.Message): VIRTUAL_CIRCUIT_TYPE_FIELD_NUMBER: _ClassVar[int] VIRTUAL_DEVICE_CONTEXT_FIELD_NUMBER: _ClassVar[int] VIRTUAL_DISK_FIELD_NUMBER: _ClassVar[int] + VIRTUAL_MACHINE_FIELD_NUMBER: _ClassVar[int] WIRELESS_LAN_FIELD_NUMBER: _ClassVar[int] - asn_range: ASNRange + WIRELESS_LAN_GROUP_FIELD_NUMBER: _ClassVar[int] + WIRELESS_LINK_FIELD_NUMBER: _ClassVar[int] asn: ASN + asn_range: ASNRange aggregate: Aggregate - cable_path: CablePath cable: Cable + cable_path: CablePath cable_termination: CableTermination - circuit_termination: CircuitTermination - circuit_group_assignment: CircuitGroupAssignment - circuit_group: CircuitGroup circuit: Circuit + circuit_group: CircuitGroup + circuit_group_assignment: CircuitGroupAssignment + circuit_termination: CircuitTermination circuit_type: CircuitType - cluster_group: ClusterGroup cluster: Cluster + cluster_group: ClusterGroup cluster_type: ClusterType console_port: ConsolePort console_server_port: ConsoleServerPort + contact: Contact contact_assignment: ContactAssignment contact_group: ContactGroup contact_role: ContactRole - contact: Contact - vlan: VLAN + device: Device device_bay: DeviceBay device_role: DeviceRole - device: Device device_type: DeviceType - fhrp_group_assignment: FHRPGroupAssignment fhrp_group: FHRPGroup - rear_port: RearPort + fhrp_group_assignment: FHRPGroupAssignment front_port: FrontPort - generic_object: GenericObject ike_policy: IKEPolicy ike_proposal: IKEProposal ip_address: IPAddress @@ -1057,49 +1051,48 @@ class CustomFieldObjectReference(_message.Message): ip_sec_profile: IPSecProfile ip_sec_proposal: IPSecProposal interface: Interface - inventory_item_role: InventoryItemRole inventory_item: InventoryItem + inventory_item_role: InventoryItemRole l2vpn: L2VPN l2vpn_termination: L2VPNTermination location: Location mac_address: MACAddress manufacturer: Manufacturer - module_bay: ModuleBay module: Module + module_bay: ModuleBay module_type: ModuleType - region: Region - site_group: SiteGroup - tag: Tag - tenant_group: TenantGroup - vm_interface: VMInterface - virtual_machine: VirtualMachine - wireless_lan_group: WirelessLANGroup - wireless_link: WirelessLink platform: Platform power_feed: PowerFeed power_outlet: PowerOutlet power_panel: PowerPanel power_port: PowerPort prefix: Prefix + provider: Provider provider_account: ProviderAccount provider_network: ProviderNetwork - provider: Provider rir: RIR + rack: Rack rack_reservation: RackReservation rack_role: RackRole - rack: Rack rack_type: RackType + rear_port: RearPort + region: Region role: Role route_target: RouteTarget service: Service site: Site + site_group: SiteGroup + tag: Tag tenant: Tenant - tunnel_group: TunnelGroup + tenant_group: TenantGroup tunnel: Tunnel + tunnel_group: TunnelGroup tunnel_termination: TunnelTermination + vlan: VLAN vlan_group: VLANGroup vlan_translation_policy: VLANTranslationPolicy vlan_translation_rule: VLANTranslationRule + vm_interface: VMInterface vrf: VRF virtual_chassis: VirtualChassis virtual_circuit: VirtualCircuit @@ -1107,28 +1100,41 @@ class CustomFieldObjectReference(_message.Message): virtual_circuit_type: VirtualCircuitType virtual_device_context: VirtualDeviceContext virtual_disk: VirtualDisk + virtual_machine: VirtualMachine wireless_lan: WirelessLAN - def __init__(self, asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., asn: _Optional[_Union[ASN, _Mapping]] = ..., aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., circuit: _Optional[_Union[Circuit, _Mapping]] = ..., circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., generic_object: _Optional[_Union[GenericObject, _Mapping]] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tag: _Optional[_Union[Tag, _Mapping]] = ..., tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., service: _Optional[_Union[Service, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ...) -> None: ... + wireless_lan_group: WirelessLANGroup + wireless_link: WirelessLink + def __init__(self, asn: _Optional[_Union[ASN, _Mapping]] = ..., asn_range: _Optional[_Union[ASNRange, _Mapping]] = ..., aggregate: _Optional[_Union[Aggregate, _Mapping]] = ..., cable: _Optional[_Union[Cable, _Mapping]] = ..., cable_path: _Optional[_Union[CablePath, _Mapping]] = ..., cable_termination: _Optional[_Union[CableTermination, _Mapping]] = ..., circuit: _Optional[_Union[Circuit, _Mapping]] = ..., circuit_group: _Optional[_Union[CircuitGroup, _Mapping]] = ..., circuit_group_assignment: _Optional[_Union[CircuitGroupAssignment, _Mapping]] = ..., circuit_termination: _Optional[_Union[CircuitTermination, _Mapping]] = ..., circuit_type: _Optional[_Union[CircuitType, _Mapping]] = ..., cluster: _Optional[_Union[Cluster, _Mapping]] = ..., cluster_group: _Optional[_Union[ClusterGroup, _Mapping]] = ..., cluster_type: _Optional[_Union[ClusterType, _Mapping]] = ..., console_port: _Optional[_Union[ConsolePort, _Mapping]] = ..., console_server_port: _Optional[_Union[ConsoleServerPort, _Mapping]] = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., contact_assignment: _Optional[_Union[ContactAssignment, _Mapping]] = ..., contact_group: _Optional[_Union[ContactGroup, _Mapping]] = ..., contact_role: _Optional[_Union[ContactRole, _Mapping]] = ..., device: _Optional[_Union[Device, _Mapping]] = ..., device_bay: _Optional[_Union[DeviceBay, _Mapping]] = ..., device_role: _Optional[_Union[DeviceRole, _Mapping]] = ..., device_type: _Optional[_Union[DeviceType, _Mapping]] = ..., fhrp_group: _Optional[_Union[FHRPGroup, _Mapping]] = ..., fhrp_group_assignment: _Optional[_Union[FHRPGroupAssignment, _Mapping]] = ..., front_port: _Optional[_Union[FrontPort, _Mapping]] = ..., ike_policy: _Optional[_Union[IKEPolicy, _Mapping]] = ..., ike_proposal: _Optional[_Union[IKEProposal, _Mapping]] = ..., ip_address: _Optional[_Union[IPAddress, _Mapping]] = ..., ip_range: _Optional[_Union[IPRange, _Mapping]] = ..., ip_sec_policy: _Optional[_Union[IPSecPolicy, _Mapping]] = ..., ip_sec_profile: _Optional[_Union[IPSecProfile, _Mapping]] = ..., ip_sec_proposal: _Optional[_Union[IPSecProposal, _Mapping]] = ..., interface: _Optional[_Union[Interface, _Mapping]] = ..., inventory_item: _Optional[_Union[InventoryItem, _Mapping]] = ..., inventory_item_role: _Optional[_Union[InventoryItemRole, _Mapping]] = ..., l2vpn: _Optional[_Union[L2VPN, _Mapping]] = ..., l2vpn_termination: _Optional[_Union[L2VPNTermination, _Mapping]] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., mac_address: _Optional[_Union[MACAddress, _Mapping]] = ..., manufacturer: _Optional[_Union[Manufacturer, _Mapping]] = ..., module: _Optional[_Union[Module, _Mapping]] = ..., module_bay: _Optional[_Union[ModuleBay, _Mapping]] = ..., module_type: _Optional[_Union[ModuleType, _Mapping]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., power_feed: _Optional[_Union[PowerFeed, _Mapping]] = ..., power_outlet: _Optional[_Union[PowerOutlet, _Mapping]] = ..., power_panel: _Optional[_Union[PowerPanel, _Mapping]] = ..., power_port: _Optional[_Union[PowerPort, _Mapping]] = ..., prefix: _Optional[_Union[Prefix, _Mapping]] = ..., provider: _Optional[_Union[Provider, _Mapping]] = ..., provider_account: _Optional[_Union[ProviderAccount, _Mapping]] = ..., provider_network: _Optional[_Union[ProviderNetwork, _Mapping]] = ..., rir: _Optional[_Union[RIR, _Mapping]] = ..., rack: _Optional[_Union[Rack, _Mapping]] = ..., rack_reservation: _Optional[_Union[RackReservation, _Mapping]] = ..., rack_role: _Optional[_Union[RackRole, _Mapping]] = ..., rack_type: _Optional[_Union[RackType, _Mapping]] = ..., rear_port: _Optional[_Union[RearPort, _Mapping]] = ..., region: _Optional[_Union[Region, _Mapping]] = ..., role: _Optional[_Union[Role, _Mapping]] = ..., route_target: _Optional[_Union[RouteTarget, _Mapping]] = ..., service: _Optional[_Union[Service, _Mapping]] = ..., site: _Optional[_Union[Site, _Mapping]] = ..., site_group: _Optional[_Union[SiteGroup, _Mapping]] = ..., tag: _Optional[_Union[Tag, _Mapping]] = ..., tenant: _Optional[_Union[Tenant, _Mapping]] = ..., tenant_group: _Optional[_Union[TenantGroup, _Mapping]] = ..., tunnel: _Optional[_Union[Tunnel, _Mapping]] = ..., tunnel_group: _Optional[_Union[TunnelGroup, _Mapping]] = ..., tunnel_termination: _Optional[_Union[TunnelTermination, _Mapping]] = ..., vlan: _Optional[_Union[VLAN, _Mapping]] = ..., vlan_group: _Optional[_Union[VLANGroup, _Mapping]] = ..., vlan_translation_policy: _Optional[_Union[VLANTranslationPolicy, _Mapping]] = ..., vlan_translation_rule: _Optional[_Union[VLANTranslationRule, _Mapping]] = ..., vm_interface: _Optional[_Union[VMInterface, _Mapping]] = ..., vrf: _Optional[_Union[VRF, _Mapping]] = ..., virtual_chassis: _Optional[_Union[VirtualChassis, _Mapping]] = ..., virtual_circuit: _Optional[_Union[VirtualCircuit, _Mapping]] = ..., virtual_circuit_termination: _Optional[_Union[VirtualCircuitTermination, _Mapping]] = ..., virtual_circuit_type: _Optional[_Union[VirtualCircuitType, _Mapping]] = ..., virtual_device_context: _Optional[_Union[VirtualDeviceContext, _Mapping]] = ..., virtual_disk: _Optional[_Union[VirtualDisk, _Mapping]] = ..., virtual_machine: _Optional[_Union[VirtualMachine, _Mapping]] = ..., wireless_lan: _Optional[_Union[WirelessLAN, _Mapping]] = ..., wireless_lan_group: _Optional[_Union[WirelessLANGroup, _Mapping]] = ..., wireless_link: _Optional[_Union[WirelessLink, _Mapping]] = ...) -> None: ... class CustomFieldValue(_message.Message): - __slots__ = ("text", "integer", "decimal", "boolean", "timestamp", "object", "string_array", "object_array") + __slots__ = ("multiple_selection", "multiple_objects", "text", "long_text", "integer", "decimal", "boolean", "date", "datetime", "url", "json", "selection", "object") + MULTIPLE_SELECTION_FIELD_NUMBER: _ClassVar[int] + MULTIPLE_OBJECTS_FIELD_NUMBER: _ClassVar[int] TEXT_FIELD_NUMBER: _ClassVar[int] + LONG_TEXT_FIELD_NUMBER: _ClassVar[int] INTEGER_FIELD_NUMBER: _ClassVar[int] DECIMAL_FIELD_NUMBER: _ClassVar[int] BOOLEAN_FIELD_NUMBER: _ClassVar[int] - TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + DATE_FIELD_NUMBER: _ClassVar[int] + DATETIME_FIELD_NUMBER: _ClassVar[int] + URL_FIELD_NUMBER: _ClassVar[int] + JSON_FIELD_NUMBER: _ClassVar[int] + SELECTION_FIELD_NUMBER: _ClassVar[int] OBJECT_FIELD_NUMBER: _ClassVar[int] - STRING_ARRAY_FIELD_NUMBER: _ClassVar[int] - OBJECT_ARRAY_FIELD_NUMBER: _ClassVar[int] + multiple_selection: _containers.RepeatedScalarFieldContainer[str] + multiple_objects: _containers.RepeatedCompositeFieldContainer[CustomFieldObjectReference] text: str + long_text: str integer: int decimal: float boolean: bool - timestamp: _timestamp_pb2.Timestamp + date: _timestamp_pb2.Timestamp + datetime: _timestamp_pb2.Timestamp + url: str + json: str + selection: str object: CustomFieldObjectReference - string_array: _containers.RepeatedScalarFieldContainer[str] - object_array: _containers.RepeatedCompositeFieldContainer[CustomFieldObjectReference] - def __init__(self, text: _Optional[str] = ..., integer: _Optional[int] = ..., decimal: _Optional[float] = ..., boolean: bool = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., object: _Optional[_Union[CustomFieldObjectReference, _Mapping]] = ..., string_array: _Optional[_Iterable[str]] = ..., object_array: _Optional[_Iterable[_Union[CustomFieldObjectReference, _Mapping]]] = ...) -> None: ... + def __init__(self, multiple_selection: _Optional[_Iterable[str]] = ..., multiple_objects: _Optional[_Iterable[_Union[CustomFieldObjectReference, _Mapping]]] = ..., text: _Optional[str] = ..., long_text: _Optional[str] = ..., integer: _Optional[int] = ..., decimal: _Optional[float] = ..., boolean: bool = ..., date: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., datetime: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., url: _Optional[str] = ..., json: _Optional[str] = ..., selection: _Optional[str] = ..., object: _Optional[_Union[CustomFieldObjectReference, _Mapping]] = ...) -> None: ... class Device(_message.Message): __slots__ = ("name", "device_type", "role", "tenant", "platform", "serial", "asset_tag", "site", "location", "rack", "position", "face", "latitude", "longitude", "status", "airflow", "primary_ip4", "primary_ip6", "oob_ip", "cluster", "virtual_chassis", "vc_position", "vc_priority", "description", "comments", "tags", "custom_fields") diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index a412594..c5c84ac 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -2,7 +2,7 @@ # # Generated code. DO NOT EDIT. -# Timestamp: 2025-04-01 21:05:15Z +# Timestamp: 2025-04-10 14:44:19Z # # ruff: noqa: C901 @@ -89,41 +89,9 @@ 'WirelessLANGroup': 'name', } -AUTO_SLUGIFY = frozenset([ - 'ASNRange', - 'CircuitGroup', - 'CircuitType', - 'ClusterGroup', - 'ClusterType', - 'ContactGroup', - 'ContactRole', - 'DeviceRole', - 'DeviceType', - 'InventoryItemRole', - 'L2VPN', - 'Location', - 'Manufacturer', - 'Platform', - 'Provider', - 'RIR', - 'RackRole', - 'RackType', - 'Region', - 'Role', - 'Site', - 'SiteGroup', - 'Tag', - 'Tenant', - 'TenantGroup', - 'TunnelGroup', - 'VLANGroup', - 'VirtualCircuitType', - 'WirelessLANGroup', -]) - def slugify(value: Any) -> str: - """Convert a value to a slug.""" + """Utility to convert a value to a slug.""" value = str(value).strip().strip('_').lower() value = re.sub(r'[^\w\s-]', '', value) return re.sub(r'[-\s]+', '-', value) @@ -149,11 +117,6 @@ def convert_to_protobuf(value: Any, protobuf_class): raise ValueError(f'{protobuf_class.__name__} cannot be initialized with {type(value)}') kwargs = {pvk: value} value = protobuf_class(**kwargs) - - if protobuf_class.__name__ in AUTO_SLUGIFY and value.slug == '': - pvk = PRIMARY_VALUE_MAP.get(protobuf_class.__name__) - value.slug = slugify(getattr(value, pvk)) - return value @@ -177,36 +140,33 @@ class Entity: def __new__( cls, timestamp: datetime.datetime | None = None, - asn_range: str | ASNRange | pb.ASNRange | None = None, asn: str | ASN | pb.ASN | None = None, + asn_range: str | ASNRange | pb.ASNRange | None = None, aggregate: str | Aggregate | pb.Aggregate | None = None, - cable_path: str | CablePath | pb.CablePath | None = None, cable: str | Cable | pb.Cable | None = None, + cable_path: str | CablePath | pb.CablePath | None = None, cable_termination: str | CableTermination | pb.CableTermination | None = None, - circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, - circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, - circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, circuit: str | Circuit | pb.Circuit | None = None, + circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, circuit_type: str | CircuitType | pb.CircuitType | None = None, - cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, cluster: str | Cluster | pb.Cluster | None = None, + cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, cluster_type: str | ClusterType | pb.ClusterType | None = None, console_port: str | ConsolePort | pb.ConsolePort | None = None, console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + contact: str | Contact | pb.Contact | None = None, contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, contact_group: str | ContactGroup | pb.ContactGroup | None = None, contact_role: str | ContactRole | pb.ContactRole | None = None, - contact: str | Contact | pb.Contact | None = None, - vlan: str | VLAN | pb.VLAN | None = None, + device: str | Device | pb.Device | None = None, device_bay: str | DeviceBay | pb.DeviceBay | None = None, device_role: str | DeviceRole | pb.DeviceRole | None = None, - device: str | Device | pb.Device | None = None, device_type: str | DeviceType | pb.DeviceType | None = None, - fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - rear_port: str | RearPort | pb.RearPort | None = None, + fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, front_port: str | FrontPort | pb.FrontPort | None = None, - generic_object: str | GenericObject | pb.GenericObject | None = None, ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, ip_address: str | IPAddress | pb.IPAddress | None = None, @@ -215,49 +175,48 @@ def __new__( ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, interface: str | Interface | pb.Interface | None = None, - inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, l2vpn: str | L2VPN | pb.L2VPN | None = None, l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, location: str | Location | pb.Location | None = None, mac_address: str | MACAddress | pb.MACAddress | None = None, manufacturer: str | Manufacturer | pb.Manufacturer | None = None, - module_bay: str | ModuleBay | pb.ModuleBay | None = None, module: str | Module | pb.Module | None = None, + module_bay: str | ModuleBay | pb.ModuleBay | None = None, module_type: str | ModuleType | pb.ModuleType | None = None, - region: str | Region | pb.Region | None = None, - site_group: str | SiteGroup | pb.SiteGroup | None = None, - tag: str | Tag | pb.Tag | None = None, - tenant_group: str | TenantGroup | pb.TenantGroup | None = None, - vm_interface: str | VMInterface | pb.VMInterface | None = None, - virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, - wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, - wireless_link: str | WirelessLink | pb.WirelessLink | None = None, platform: str | Platform | pb.Platform | None = None, power_feed: str | PowerFeed | pb.PowerFeed | None = None, power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, power_panel: str | PowerPanel | pb.PowerPanel | None = None, power_port: str | PowerPort | pb.PowerPort | None = None, prefix: str | Prefix | pb.Prefix | None = None, + provider: str | Provider | pb.Provider | None = None, provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, - provider: str | Provider | pb.Provider | None = None, rir: str | RIR | pb.RIR | None = None, + rack: str | Rack | pb.Rack | None = None, rack_reservation: str | RackReservation | pb.RackReservation | None = None, rack_role: str | RackRole | pb.RackRole | None = None, - rack: str | Rack | pb.Rack | None = None, rack_type: str | RackType | pb.RackType | None = None, + rear_port: str | RearPort | pb.RearPort | None = None, + region: str | Region | pb.Region | None = None, role: str | Role | pb.Role | None = None, route_target: str | RouteTarget | pb.RouteTarget | None = None, service: str | Service | pb.Service | None = None, site: str | Site | pb.Site | None = None, + site_group: str | SiteGroup | pb.SiteGroup | None = None, + tag: str | Tag | pb.Tag | None = None, tenant: str | Tenant | pb.Tenant | None = None, - tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + tenant_group: str | TenantGroup | pb.TenantGroup | None = None, tunnel: str | Tunnel | pb.Tunnel | None = None, + tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + vlan: str | VLAN | pb.VLAN | None = None, vlan_group: str | VLANGroup | pb.VLANGroup | None = None, vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + vm_interface: str | VMInterface | pb.VMInterface | None = None, vrf: str | VRF | pb.VRF | None = None, virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, @@ -265,39 +224,39 @@ def __new__( virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + wireless_link: str | WirelessLink | pb.WirelessLink | None = None, ) -> pb.Entity: """Create a new Entity.""" - asn_range = convert_to_protobuf(asn_range, pb.ASNRange) asn = convert_to_protobuf(asn, pb.ASN) + asn_range = convert_to_protobuf(asn_range, pb.ASNRange) aggregate = convert_to_protobuf(aggregate, pb.Aggregate) - cable_path = convert_to_protobuf(cable_path, pb.CablePath) cable = convert_to_protobuf(cable, pb.Cable) + cable_path = convert_to_protobuf(cable_path, pb.CablePath) cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) - circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) - circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) - circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) circuit = convert_to_protobuf(circuit, pb.Circuit) + circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) + circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) + circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) circuit_type = convert_to_protobuf(circuit_type, pb.CircuitType) - cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) cluster = convert_to_protobuf(cluster, pb.Cluster) + cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) cluster_type = convert_to_protobuf(cluster_type, pb.ClusterType) console_port = convert_to_protobuf(console_port, pb.ConsolePort) console_server_port = convert_to_protobuf(console_server_port, pb.ConsoleServerPort) + contact = convert_to_protobuf(contact, pb.Contact) contact_assignment = convert_to_protobuf(contact_assignment, pb.ContactAssignment) contact_group = convert_to_protobuf(contact_group, pb.ContactGroup) contact_role = convert_to_protobuf(contact_role, pb.ContactRole) - contact = convert_to_protobuf(contact, pb.Contact) - vlan = convert_to_protobuf(vlan, pb.VLAN) + device = convert_to_protobuf(device, pb.Device) device_bay = convert_to_protobuf(device_bay, pb.DeviceBay) device_role = convert_to_protobuf(device_role, pb.DeviceRole) - device = convert_to_protobuf(device, pb.Device) device_type = convert_to_protobuf(device_type, pb.DeviceType) - fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) - rear_port = convert_to_protobuf(rear_port, pb.RearPort) + fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) front_port = convert_to_protobuf(front_port, pb.FrontPort) - generic_object = convert_to_protobuf(generic_object, pb.GenericObject) ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) ip_address = convert_to_protobuf(ip_address, pb.IPAddress) @@ -306,49 +265,48 @@ def __new__( ip_sec_profile = convert_to_protobuf(ip_sec_profile, pb.IPSecProfile) ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) interface = convert_to_protobuf(interface, pb.Interface) - inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) + inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) l2vpn_termination = convert_to_protobuf(l2vpn_termination, pb.L2VPNTermination) location = convert_to_protobuf(location, pb.Location) mac_address = convert_to_protobuf(mac_address, pb.MACAddress) manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) - module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) module = convert_to_protobuf(module, pb.Module) + module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) module_type = convert_to_protobuf(module_type, pb.ModuleType) - region = convert_to_protobuf(region, pb.Region) - site_group = convert_to_protobuf(site_group, pb.SiteGroup) - tag = convert_to_protobuf(tag, pb.Tag) - tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) - vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) - virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) - wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) - wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) platform = convert_to_protobuf(platform, pb.Platform) power_feed = convert_to_protobuf(power_feed, pb.PowerFeed) power_outlet = convert_to_protobuf(power_outlet, pb.PowerOutlet) power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) power_port = convert_to_protobuf(power_port, pb.PowerPort) prefix = convert_to_protobuf(prefix, pb.Prefix) + provider = convert_to_protobuf(provider, pb.Provider) provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) - provider = convert_to_protobuf(provider, pb.Provider) rir = convert_to_protobuf(rir, pb.RIR) + rack = convert_to_protobuf(rack, pb.Rack) rack_reservation = convert_to_protobuf(rack_reservation, pb.RackReservation) rack_role = convert_to_protobuf(rack_role, pb.RackRole) - rack = convert_to_protobuf(rack, pb.Rack) rack_type = convert_to_protobuf(rack_type, pb.RackType) + rear_port = convert_to_protobuf(rear_port, pb.RearPort) + region = convert_to_protobuf(region, pb.Region) role = convert_to_protobuf(role, pb.Role) route_target = convert_to_protobuf(route_target, pb.RouteTarget) service = convert_to_protobuf(service, pb.Service) site = convert_to_protobuf(site, pb.Site) + site_group = convert_to_protobuf(site_group, pb.SiteGroup) + tag = convert_to_protobuf(tag, pb.Tag) tenant = convert_to_protobuf(tenant, pb.Tenant) - tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) + tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) tunnel = convert_to_protobuf(tunnel, pb.Tunnel) + tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) tunnel_termination = convert_to_protobuf(tunnel_termination, pb.TunnelTermination) + vlan = convert_to_protobuf(vlan, pb.VLAN) vlan_group = convert_to_protobuf(vlan_group, pb.VLANGroup) vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) vlan_translation_rule = convert_to_protobuf(vlan_translation_rule, pb.VLANTranslationRule) + vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) vrf = convert_to_protobuf(vrf, pb.VRF) virtual_chassis = convert_to_protobuf(virtual_chassis, pb.VirtualChassis) virtual_circuit = convert_to_protobuf(virtual_circuit, pb.VirtualCircuit) @@ -356,43 +314,43 @@ def __new__( virtual_circuit_type = convert_to_protobuf(virtual_circuit_type, pb.VirtualCircuitType) virtual_device_context = convert_to_protobuf(virtual_device_context, pb.VirtualDeviceContext) virtual_disk = convert_to_protobuf(virtual_disk, pb.VirtualDisk) + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) wireless_lan = convert_to_protobuf(wireless_lan, pb.WirelessLAN) + wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) + wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) if timestamp is None: ts = _timestamp_pb2.Timestamp() ts.GetCurrentTime() timestamp = ts return pb.Entity( timestamp=timestamp, - asn_range=asn_range, asn=asn, + asn_range=asn_range, aggregate=aggregate, - cable_path=cable_path, cable=cable, + cable_path=cable_path, cable_termination=cable_termination, - circuit_termination=circuit_termination, - circuit_group_assignment=circuit_group_assignment, - circuit_group=circuit_group, circuit=circuit, + circuit_group=circuit_group, + circuit_group_assignment=circuit_group_assignment, + circuit_termination=circuit_termination, circuit_type=circuit_type, - cluster_group=cluster_group, cluster=cluster, + cluster_group=cluster_group, cluster_type=cluster_type, console_port=console_port, console_server_port=console_server_port, + contact=contact, contact_assignment=contact_assignment, contact_group=contact_group, contact_role=contact_role, - contact=contact, - vlan=vlan, + device=device, device_bay=device_bay, device_role=device_role, - device=device, device_type=device_type, - fhrp_group_assignment=fhrp_group_assignment, fhrp_group=fhrp_group, - rear_port=rear_port, + fhrp_group_assignment=fhrp_group_assignment, front_port=front_port, - generic_object=generic_object, ike_policy=ike_policy, ike_proposal=ike_proposal, ip_address=ip_address, @@ -401,49 +359,48 @@ def __new__( ip_sec_profile=ip_sec_profile, ip_sec_proposal=ip_sec_proposal, interface=interface, - inventory_item_role=inventory_item_role, inventory_item=inventory_item, + inventory_item_role=inventory_item_role, l2vpn=l2vpn, l2vpn_termination=l2vpn_termination, location=location, mac_address=mac_address, manufacturer=manufacturer, - module_bay=module_bay, module=module, + module_bay=module_bay, module_type=module_type, - region=region, - site_group=site_group, - tag=tag, - tenant_group=tenant_group, - vm_interface=vm_interface, - virtual_machine=virtual_machine, - wireless_lan_group=wireless_lan_group, - wireless_link=wireless_link, platform=platform, power_feed=power_feed, power_outlet=power_outlet, power_panel=power_panel, power_port=power_port, prefix=prefix, + provider=provider, provider_account=provider_account, provider_network=provider_network, - provider=provider, rir=rir, + rack=rack, rack_reservation=rack_reservation, rack_role=rack_role, - rack=rack, rack_type=rack_type, + rear_port=rear_port, + region=region, role=role, route_target=route_target, service=service, site=site, + site_group=site_group, + tag=tag, tenant=tenant, - tunnel_group=tunnel_group, + tenant_group=tenant_group, tunnel=tunnel, + tunnel_group=tunnel_group, tunnel_termination=tunnel_termination, + vlan=vlan, vlan_group=vlan_group, vlan_translation_policy=vlan_translation_policy, vlan_translation_rule=vlan_translation_rule, + vm_interface=vm_interface, vrf=vrf, virtual_chassis=virtual_chassis, virtual_circuit=virtual_circuit, @@ -451,7 +408,10 @@ def __new__( virtual_circuit_type=virtual_circuit_type, virtual_device_context=virtual_device_context, virtual_disk=virtual_disk, + virtual_machine=virtual_machine, wireless_lan=wireless_lan, + wireless_lan_group=wireless_lan_group, + wireless_link=wireless_link, ) @@ -1366,36 +1326,33 @@ class CustomFieldObjectReference: def __new__( cls, - asn_range: str | ASNRange | pb.ASNRange | None = None, asn: str | ASN | pb.ASN | None = None, + asn_range: str | ASNRange | pb.ASNRange | None = None, aggregate: str | Aggregate | pb.Aggregate | None = None, - cable_path: str | CablePath | pb.CablePath | None = None, cable: str | Cable | pb.Cable | None = None, + cable_path: str | CablePath | pb.CablePath | None = None, cable_termination: str | CableTermination | pb.CableTermination | None = None, - circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, - circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, - circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, circuit: str | Circuit | pb.Circuit | None = None, + circuit_group: str | CircuitGroup | pb.CircuitGroup | None = None, + circuit_group_assignment: str | CircuitGroupAssignment | pb.CircuitGroupAssignment | None = None, + circuit_termination: str | CircuitTermination | pb.CircuitTermination | None = None, circuit_type: str | CircuitType | pb.CircuitType | None = None, - cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, cluster: str | Cluster | pb.Cluster | None = None, + cluster_group: str | ClusterGroup | pb.ClusterGroup | None = None, cluster_type: str | ClusterType | pb.ClusterType | None = None, console_port: str | ConsolePort | pb.ConsolePort | None = None, console_server_port: str | ConsoleServerPort | pb.ConsoleServerPort | None = None, + contact: str | Contact | pb.Contact | None = None, contact_assignment: str | ContactAssignment | pb.ContactAssignment | None = None, contact_group: str | ContactGroup | pb.ContactGroup | None = None, contact_role: str | ContactRole | pb.ContactRole | None = None, - contact: str | Contact | pb.Contact | None = None, - vlan: str | VLAN | pb.VLAN | None = None, + device: str | Device | pb.Device | None = None, device_bay: str | DeviceBay | pb.DeviceBay | None = None, device_role: str | DeviceRole | pb.DeviceRole | None = None, - device: str | Device | pb.Device | None = None, device_type: str | DeviceType | pb.DeviceType | None = None, - fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, fhrp_group: str | FHRPGroup | pb.FHRPGroup | None = None, - rear_port: str | RearPort | pb.RearPort | None = None, + fhrp_group_assignment: str | FHRPGroupAssignment | pb.FHRPGroupAssignment | None = None, front_port: str | FrontPort | pb.FrontPort | None = None, - generic_object: str | GenericObject | pb.GenericObject | None = None, ike_policy: str | IKEPolicy | pb.IKEPolicy | None = None, ike_proposal: str | IKEProposal | pb.IKEProposal | None = None, ip_address: str | IPAddress | pb.IPAddress | None = None, @@ -1404,49 +1361,48 @@ def __new__( ip_sec_profile: str | IPSecProfile | pb.IPSecProfile | None = None, ip_sec_proposal: str | IPSecProposal | pb.IPSecProposal | None = None, interface: str | Interface | pb.Interface | None = None, - inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, inventory_item: str | InventoryItem | pb.InventoryItem | None = None, + inventory_item_role: str | InventoryItemRole | pb.InventoryItemRole | None = None, l2vpn: str | L2VPN | pb.L2VPN | None = None, l2vpn_termination: str | L2VPNTermination | pb.L2VPNTermination | None = None, location: str | Location | pb.Location | None = None, mac_address: str | MACAddress | pb.MACAddress | None = None, manufacturer: str | Manufacturer | pb.Manufacturer | None = None, - module_bay: str | ModuleBay | pb.ModuleBay | None = None, module: str | Module | pb.Module | None = None, + module_bay: str | ModuleBay | pb.ModuleBay | None = None, module_type: str | ModuleType | pb.ModuleType | None = None, - region: str | Region | pb.Region | None = None, - site_group: str | SiteGroup | pb.SiteGroup | None = None, - tag: str | Tag | pb.Tag | None = None, - tenant_group: str | TenantGroup | pb.TenantGroup | None = None, - vm_interface: str | VMInterface | pb.VMInterface | None = None, - virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, - wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, - wireless_link: str | WirelessLink | pb.WirelessLink | None = None, platform: str | Platform | pb.Platform | None = None, power_feed: str | PowerFeed | pb.PowerFeed | None = None, power_outlet: str | PowerOutlet | pb.PowerOutlet | None = None, power_panel: str | PowerPanel | pb.PowerPanel | None = None, power_port: str | PowerPort | pb.PowerPort | None = None, prefix: str | Prefix | pb.Prefix | None = None, + provider: str | Provider | pb.Provider | None = None, provider_account: str | ProviderAccount | pb.ProviderAccount | None = None, provider_network: str | ProviderNetwork | pb.ProviderNetwork | None = None, - provider: str | Provider | pb.Provider | None = None, rir: str | RIR | pb.RIR | None = None, + rack: str | Rack | pb.Rack | None = None, rack_reservation: str | RackReservation | pb.RackReservation | None = None, rack_role: str | RackRole | pb.RackRole | None = None, - rack: str | Rack | pb.Rack | None = None, rack_type: str | RackType | pb.RackType | None = None, + rear_port: str | RearPort | pb.RearPort | None = None, + region: str | Region | pb.Region | None = None, role: str | Role | pb.Role | None = None, route_target: str | RouteTarget | pb.RouteTarget | None = None, service: str | Service | pb.Service | None = None, site: str | Site | pb.Site | None = None, + site_group: str | SiteGroup | pb.SiteGroup | None = None, + tag: str | Tag | pb.Tag | None = None, tenant: str | Tenant | pb.Tenant | None = None, - tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, + tenant_group: str | TenantGroup | pb.TenantGroup | None = None, tunnel: str | Tunnel | pb.Tunnel | None = None, + tunnel_group: str | TunnelGroup | pb.TunnelGroup | None = None, tunnel_termination: str | TunnelTermination | pb.TunnelTermination | None = None, + vlan: str | VLAN | pb.VLAN | None = None, vlan_group: str | VLANGroup | pb.VLANGroup | None = None, vlan_translation_policy: str | VLANTranslationPolicy | pb.VLANTranslationPolicy | None = None, vlan_translation_rule: str | VLANTranslationRule | pb.VLANTranslationRule | None = None, + vm_interface: str | VMInterface | pb.VMInterface | None = None, vrf: str | VRF | pb.VRF | None = None, virtual_chassis: str | VirtualChassis | pb.VirtualChassis | None = None, virtual_circuit: str | VirtualCircuit | pb.VirtualCircuit | None = None, @@ -1454,39 +1410,39 @@ def __new__( virtual_circuit_type: str | VirtualCircuitType | pb.VirtualCircuitType | None = None, virtual_device_context: str | VirtualDeviceContext | pb.VirtualDeviceContext | None = None, virtual_disk: str | VirtualDisk | pb.VirtualDisk | None = None, + virtual_machine: str | VirtualMachine | pb.VirtualMachine | None = None, wireless_lan: str | WirelessLAN | pb.WirelessLAN | None = None, + wireless_lan_group: str | WirelessLANGroup | pb.WirelessLANGroup | None = None, + wireless_link: str | WirelessLink | pb.WirelessLink | None = None, ) -> pb.CustomFieldObjectReference: """Create a new CustomFieldObjectReference.""" - asn_range = convert_to_protobuf(asn_range, pb.ASNRange) asn = convert_to_protobuf(asn, pb.ASN) + asn_range = convert_to_protobuf(asn_range, pb.ASNRange) aggregate = convert_to_protobuf(aggregate, pb.Aggregate) - cable_path = convert_to_protobuf(cable_path, pb.CablePath) cable = convert_to_protobuf(cable, pb.Cable) + cable_path = convert_to_protobuf(cable_path, pb.CablePath) cable_termination = convert_to_protobuf(cable_termination, pb.CableTermination) - circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) - circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) - circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) circuit = convert_to_protobuf(circuit, pb.Circuit) + circuit_group = convert_to_protobuf(circuit_group, pb.CircuitGroup) + circuit_group_assignment = convert_to_protobuf(circuit_group_assignment, pb.CircuitGroupAssignment) + circuit_termination = convert_to_protobuf(circuit_termination, pb.CircuitTermination) circuit_type = convert_to_protobuf(circuit_type, pb.CircuitType) - cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) cluster = convert_to_protobuf(cluster, pb.Cluster) + cluster_group = convert_to_protobuf(cluster_group, pb.ClusterGroup) cluster_type = convert_to_protobuf(cluster_type, pb.ClusterType) console_port = convert_to_protobuf(console_port, pb.ConsolePort) console_server_port = convert_to_protobuf(console_server_port, pb.ConsoleServerPort) + contact = convert_to_protobuf(contact, pb.Contact) contact_assignment = convert_to_protobuf(contact_assignment, pb.ContactAssignment) contact_group = convert_to_protobuf(contact_group, pb.ContactGroup) contact_role = convert_to_protobuf(contact_role, pb.ContactRole) - contact = convert_to_protobuf(contact, pb.Contact) - vlan = convert_to_protobuf(vlan, pb.VLAN) + device = convert_to_protobuf(device, pb.Device) device_bay = convert_to_protobuf(device_bay, pb.DeviceBay) device_role = convert_to_protobuf(device_role, pb.DeviceRole) - device = convert_to_protobuf(device, pb.Device) device_type = convert_to_protobuf(device_type, pb.DeviceType) - fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) fhrp_group = convert_to_protobuf(fhrp_group, pb.FHRPGroup) - rear_port = convert_to_protobuf(rear_port, pb.RearPort) + fhrp_group_assignment = convert_to_protobuf(fhrp_group_assignment, pb.FHRPGroupAssignment) front_port = convert_to_protobuf(front_port, pb.FrontPort) - generic_object = convert_to_protobuf(generic_object, pb.GenericObject) ike_policy = convert_to_protobuf(ike_policy, pb.IKEPolicy) ike_proposal = convert_to_protobuf(ike_proposal, pb.IKEProposal) ip_address = convert_to_protobuf(ip_address, pb.IPAddress) @@ -1495,49 +1451,48 @@ def __new__( ip_sec_profile = convert_to_protobuf(ip_sec_profile, pb.IPSecProfile) ip_sec_proposal = convert_to_protobuf(ip_sec_proposal, pb.IPSecProposal) interface = convert_to_protobuf(interface, pb.Interface) - inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) inventory_item = convert_to_protobuf(inventory_item, pb.InventoryItem) + inventory_item_role = convert_to_protobuf(inventory_item_role, pb.InventoryItemRole) l2vpn = convert_to_protobuf(l2vpn, pb.L2VPN) l2vpn_termination = convert_to_protobuf(l2vpn_termination, pb.L2VPNTermination) location = convert_to_protobuf(location, pb.Location) mac_address = convert_to_protobuf(mac_address, pb.MACAddress) manufacturer = convert_to_protobuf(manufacturer, pb.Manufacturer) - module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) module = convert_to_protobuf(module, pb.Module) + module_bay = convert_to_protobuf(module_bay, pb.ModuleBay) module_type = convert_to_protobuf(module_type, pb.ModuleType) - region = convert_to_protobuf(region, pb.Region) - site_group = convert_to_protobuf(site_group, pb.SiteGroup) - tag = convert_to_protobuf(tag, pb.Tag) - tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) - vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) - virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) - wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) - wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) platform = convert_to_protobuf(platform, pb.Platform) power_feed = convert_to_protobuf(power_feed, pb.PowerFeed) power_outlet = convert_to_protobuf(power_outlet, pb.PowerOutlet) power_panel = convert_to_protobuf(power_panel, pb.PowerPanel) power_port = convert_to_protobuf(power_port, pb.PowerPort) prefix = convert_to_protobuf(prefix, pb.Prefix) + provider = convert_to_protobuf(provider, pb.Provider) provider_account = convert_to_protobuf(provider_account, pb.ProviderAccount) provider_network = convert_to_protobuf(provider_network, pb.ProviderNetwork) - provider = convert_to_protobuf(provider, pb.Provider) rir = convert_to_protobuf(rir, pb.RIR) + rack = convert_to_protobuf(rack, pb.Rack) rack_reservation = convert_to_protobuf(rack_reservation, pb.RackReservation) rack_role = convert_to_protobuf(rack_role, pb.RackRole) - rack = convert_to_protobuf(rack, pb.Rack) rack_type = convert_to_protobuf(rack_type, pb.RackType) + rear_port = convert_to_protobuf(rear_port, pb.RearPort) + region = convert_to_protobuf(region, pb.Region) role = convert_to_protobuf(role, pb.Role) route_target = convert_to_protobuf(route_target, pb.RouteTarget) service = convert_to_protobuf(service, pb.Service) site = convert_to_protobuf(site, pb.Site) + site_group = convert_to_protobuf(site_group, pb.SiteGroup) + tag = convert_to_protobuf(tag, pb.Tag) tenant = convert_to_protobuf(tenant, pb.Tenant) - tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) + tenant_group = convert_to_protobuf(tenant_group, pb.TenantGroup) tunnel = convert_to_protobuf(tunnel, pb.Tunnel) + tunnel_group = convert_to_protobuf(tunnel_group, pb.TunnelGroup) tunnel_termination = convert_to_protobuf(tunnel_termination, pb.TunnelTermination) + vlan = convert_to_protobuf(vlan, pb.VLAN) vlan_group = convert_to_protobuf(vlan_group, pb.VLANGroup) vlan_translation_policy = convert_to_protobuf(vlan_translation_policy, pb.VLANTranslationPolicy) vlan_translation_rule = convert_to_protobuf(vlan_translation_rule, pb.VLANTranslationRule) + vm_interface = convert_to_protobuf(vm_interface, pb.VMInterface) vrf = convert_to_protobuf(vrf, pb.VRF) virtual_chassis = convert_to_protobuf(virtual_chassis, pb.VirtualChassis) virtual_circuit = convert_to_protobuf(virtual_circuit, pb.VirtualCircuit) @@ -1545,38 +1500,38 @@ def __new__( virtual_circuit_type = convert_to_protobuf(virtual_circuit_type, pb.VirtualCircuitType) virtual_device_context = convert_to_protobuf(virtual_device_context, pb.VirtualDeviceContext) virtual_disk = convert_to_protobuf(virtual_disk, pb.VirtualDisk) + virtual_machine = convert_to_protobuf(virtual_machine, pb.VirtualMachine) wireless_lan = convert_to_protobuf(wireless_lan, pb.WirelessLAN) + wireless_lan_group = convert_to_protobuf(wireless_lan_group, pb.WirelessLANGroup) + wireless_link = convert_to_protobuf(wireless_link, pb.WirelessLink) return pb.CustomFieldObjectReference( - asn_range=asn_range, asn=asn, + asn_range=asn_range, aggregate=aggregate, - cable_path=cable_path, cable=cable, + cable_path=cable_path, cable_termination=cable_termination, - circuit_termination=circuit_termination, - circuit_group_assignment=circuit_group_assignment, - circuit_group=circuit_group, circuit=circuit, + circuit_group=circuit_group, + circuit_group_assignment=circuit_group_assignment, + circuit_termination=circuit_termination, circuit_type=circuit_type, - cluster_group=cluster_group, cluster=cluster, + cluster_group=cluster_group, cluster_type=cluster_type, console_port=console_port, console_server_port=console_server_port, + contact=contact, contact_assignment=contact_assignment, contact_group=contact_group, contact_role=contact_role, - contact=contact, - vlan=vlan, + device=device, device_bay=device_bay, device_role=device_role, - device=device, device_type=device_type, - fhrp_group_assignment=fhrp_group_assignment, fhrp_group=fhrp_group, - rear_port=rear_port, + fhrp_group_assignment=fhrp_group_assignment, front_port=front_port, - generic_object=generic_object, ike_policy=ike_policy, ike_proposal=ike_proposal, ip_address=ip_address, @@ -1585,49 +1540,48 @@ def __new__( ip_sec_profile=ip_sec_profile, ip_sec_proposal=ip_sec_proposal, interface=interface, - inventory_item_role=inventory_item_role, inventory_item=inventory_item, + inventory_item_role=inventory_item_role, l2vpn=l2vpn, l2vpn_termination=l2vpn_termination, location=location, mac_address=mac_address, manufacturer=manufacturer, - module_bay=module_bay, module=module, + module_bay=module_bay, module_type=module_type, - region=region, - site_group=site_group, - tag=tag, - tenant_group=tenant_group, - vm_interface=vm_interface, - virtual_machine=virtual_machine, - wireless_lan_group=wireless_lan_group, - wireless_link=wireless_link, platform=platform, power_feed=power_feed, power_outlet=power_outlet, power_panel=power_panel, power_port=power_port, prefix=prefix, + provider=provider, provider_account=provider_account, provider_network=provider_network, - provider=provider, rir=rir, + rack=rack, rack_reservation=rack_reservation, rack_role=rack_role, - rack=rack, rack_type=rack_type, + rear_port=rear_port, + region=region, role=role, route_target=route_target, service=service, site=site, + site_group=site_group, + tag=tag, tenant=tenant, - tunnel_group=tunnel_group, + tenant_group=tenant_group, tunnel=tunnel, + tunnel_group=tunnel_group, tunnel_termination=tunnel_termination, + vlan=vlan, vlan_group=vlan_group, vlan_translation_policy=vlan_translation_policy, vlan_translation_rule=vlan_translation_rule, + vm_interface=vm_interface, vrf=vrf, virtual_chassis=virtual_chassis, virtual_circuit=virtual_circuit, @@ -1635,7 +1589,10 @@ def __new__( virtual_circuit_type=virtual_circuit_type, virtual_device_context=virtual_device_context, virtual_disk=virtual_disk, + virtual_machine=virtual_machine, wireless_lan=wireless_lan, + wireless_lan_group=wireless_lan_group, + wireless_link=wireless_link, ) @@ -1644,27 +1601,37 @@ class CustomFieldValue: def __new__( cls, + multiple_selection: list[str] | None = None, + multiple_objects: list[str | CustomFieldObjectReference | pb.CustomFieldObjectReference] | None = None, text: str | None = None, + long_text: str | None = None, integer: int | None = None, decimal: float | None = None, boolean: bool | None = None, - timestamp: datetime.datetime | None = None, + date: datetime.datetime | None = None, + datetime: datetime.datetime | None = None, + url: str | None = None, + json: str | None = None, + selection: str | None = None, object: str | CustomFieldObjectReference | pb.CustomFieldObjectReference | None = None, - string_array: list[str] | None = None, - object_array: list[str | CustomFieldObjectReference | pb.CustomFieldObjectReference] | None = None, ) -> pb.CustomFieldValue: """Create a new CustomFieldValue.""" + multiple_objects = convert_to_protobuf_list(multiple_objects, pb.CustomFieldObjectReference) object = convert_to_protobuf(object, pb.CustomFieldObjectReference) - object_array = convert_to_protobuf_list(object_array, pb.CustomFieldObjectReference) return pb.CustomFieldValue( + multiple_selection=multiple_selection, + multiple_objects=multiple_objects, text=text, + long_text=long_text, integer=integer, decimal=decimal, boolean=boolean, - timestamp=timestamp, + date=date, + datetime=datetime, + url=url, + json=json, + selection=selection, object=object, - string_array=string_array, - object_array=object_array, ) diff --git a/tests/test_ingester.py b/tests/test_ingester.py index 39b225a..56cf014 100644 --- a/tests/test_ingester.py +++ b/tests/test_ingester.py @@ -52,7 +52,6 @@ def test_convert_to_protobuf_returns_correct_class_when_value_is_string(): result = convert_to_protobuf("Test Site", SitePb) assert isinstance(result, SitePb) assert result.name == "Test Site" - assert result.slug == "test-site" def test_convert_to_protobuf_returns_value_when_value_is_not_string(): From d8baa104247f1c9f702091a2055376f6b763ad92 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 14:13:51 +0100 Subject: [PATCH 04/24] adds oauth2 authentication --- .gitignore | 3 +- README.md | 8 +- netboxlabs/diode/sdk/client.py | 103 ++++++++++++------ tests/test_client.py | 193 +++++++++++++++++++-------------- 4 files changed, 189 insertions(+), 118 deletions(-) diff --git a/.gitignore b/.gitignore index 257791d..65f0a15 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ __pycache__/ build/ dist/ .eggs/ -*.egg-info \ No newline at end of file +*.egg-info +poetry.lock diff --git a/README.md b/README.md index 53cac60..c181a55 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,10 @@ pip install netboxlabs-diode-sdk ### Environment variables -* `DIODE_API_KEY` - API key for the Diode service * `DIODE_SDK_LOG_LEVEL` - Log level for the SDK (default: `INFO`) * `DIODE_SENTRY_DSN` - Optional Sentry DSN for error reporting +* `DIODE_CLIENT_ID` - Client ID for OAuth2 authentication +* `DIODE_CLIENT_SECRET` - Client Secret for OAuth2 authentication ### Example @@ -94,8 +95,7 @@ if __name__ == "__main__": ## Development notes -Code in `netboxlabs/diode/sdk/diode/*` is generated from Protocol Buffers definitions (will be published and referred -here soon). +Code in `netboxlabs/diode/sdk/diode/*` is generated from Protocol Buffers definitions (will be published and referenced here soon). #### Linting @@ -107,7 +107,7 @@ black netboxlabs/ #### Testing ```shell -pytest tests/ +PYTHONPATH=$(pwd) pytest ``` ## License diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 44049c8..d528d04 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -1,13 +1,17 @@ #!/usr/bin/env python # Copyright 2024 NetBox Labs Inc """NetBox Labs, Diode - SDK - Client.""" + import collections +from collections.abc import Iterable +import http.client +import json import logging import os import platform +import ssl +from urllib.parse import urlparse, urlencode import uuid -from collections.abc import Iterable -from urllib.parse import urlparse import certifi import grpc @@ -18,9 +22,10 @@ from netboxlabs.diode.sdk.ingester import Entity from netboxlabs.diode.sdk.version import version_semver -_DIODE_API_KEY_ENVVAR_NAME = "DIODE_API_KEY" _DIODE_SDK_LOG_LEVEL_ENVVAR_NAME = "DIODE_SDK_LOG_LEVEL" _DIODE_SENTRY_DSN_ENVVAR_NAME = "DIODE_SENTRY_DSN" +_CLIENT_ID_ENVVAR_NAME = "DIODE_CLIENT_ID" +_CLIENT_SECRET_ENVVAR_NAME = "DIODE_CLIENT_SECRET" _DEFAULT_STREAM = "latest" _LOGGER = logging.getLogger(__name__) @@ -31,17 +36,6 @@ def _load_certs() -> bytes: return f.read() -def _get_api_key(api_key: str | None = None) -> str: - """Get API Key either from provided value or environment variable.""" - if api_key is None: - api_key = os.getenv(_DIODE_API_KEY_ENVVAR_NAME) - if api_key is None: - raise DiodeConfigError( - f"api_key param or {_DIODE_API_KEY_ENVVAR_NAME} environment variable required" - ) - return api_key - - def parse_target(target: str) -> tuple[str, str, bool]: """Parse the target into authority, path and tls_verify.""" parsed_target = urlparse(target) @@ -66,6 +60,15 @@ def _get_sentry_dsn(sentry_dsn: str | None = None) -> str | None: return sentry_dsn +def _get_required_config_value(env_var_name: str, value: str | None = None) -> str: + """Get required config value either from provided value or environment variable.""" + if value is None: + value = os.getenv(env_var_name) + if value is None: + raise DiodeConfigError(f"parameter or {env_var_name} environment variable required") + return value + + class DiodeClient: """Diode Client.""" @@ -81,7 +84,8 @@ def __init__( target: str, app_name: str, app_version: str, - api_key: str | None = None, + client_id: str | None = None, + client_secret: str | None = None, sentry_dsn: str = None, sentry_traces_sample_rate: float = 1.0, sentry_profiles_sample_rate: float = 1.0, @@ -96,15 +100,23 @@ def __init__( self._platform = platform.platform() self._python_version = platform.python_version() - api_key = _get_api_key(api_key) + # Read client credentials from environment variables + client_id = _get_required_config_value(_CLIENT_ID_ENVVAR_NAME, client_id) + client_secret = _get_required_config_value(_CLIENT_SECRET_ENVVAR_NAME, client_secret) + + authentication_client = _DiodeAuthentication(self._target, self._tls_verify, client_id, client_secret) + access_token = authentication_client.authenticate() self._metadata = ( - ("diode-api-key", api_key), ("platform", self._platform), ("python-version", self._python_version), + ("authorization", f"Bearer {access_token}"), ) channel_opts = ( - ("grpc.primary_user_agent", f"{self._name}/{self._version} {self._app_name}/{self._app_version}"), + ( + "grpc.primary_user_agent", + f"{self._name}/{self._version} {self._app_name}/{self._app_version}", + ), ) if self._tls_verify: @@ -129,9 +141,7 @@ def __init__( _LOGGER.debug(f"Setting up gRPC interceptor for path: {self._path}") rpc_method_interceptor = DiodeMethodClientInterceptor(subpath=self._path) - intercept_channel = grpc.intercept_channel( - self._channel, rpc_method_interceptor - ) + intercept_channel = grpc.intercept_channel(self._channel, rpc_method_interceptor) channel = intercept_channel self._stub = ingester_pb2_grpc.IngesterServiceStub(channel) @@ -140,9 +150,7 @@ def __init__( if self._sentry_dsn is not None: _LOGGER.debug("Setting up Sentry") - self._setup_sentry( - self._sentry_dsn, sentry_traces_sample_rate, sentry_profiles_sample_rate - ) + self._setup_sentry(self._sentry_dsn, sentry_traces_sample_rate, sentry_profiles_sample_rate) @property def name(self) -> str: @@ -212,14 +220,11 @@ def ingest( producer_app_name=self.app_name, producer_app_version=self.app_version, ) - return self._stub.Ingest(request, metadata=self._metadata) except grpc.RpcError as err: raise DiodeClientError(err) from err - def _setup_sentry( - self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float - ): + def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): sentry_sdk.init( dsn=dsn, release=self.version, @@ -235,6 +240,40 @@ def _setup_sentry( sentry_sdk.set_tag("python_version", self._python_version) +class _DiodeAuthentication: + def __init__(self, target: str, tls_verify: bool, client_id: str, client_secret: str): + self._target = target + self._tls_verify = tls_verify + self._client_id = client_id + self._client_secret = client_secret + + def authenticate(self) -> str: + """Request an OAuth2 token using client credentials and return it.""" + conn = http.client.HTTPSConnection( + self._target, + context=None if self._tls_verify else ssl._create_unverified_context(), + ) + headers = {"Content-type": "application/x-www-form-urlencoded"} + data = urlencode( + { + "grant_type": "client_credentials", + "client_id": self._client_id, + "client_secret": self._client_secret, + } + ) + conn.request("POST", "/token", data, headers) + response = conn.getresponse() + if response.status != 200: + raise DiodeConfigError(f"Failed to obtain access token: {response.reason}") + token_info = json.loads(response.read().decode()) + access_token = token_info.get("access_token") + if not access_token: + raise DiodeConfigError(f"Failed to obtain access token for client {self._client_id}") + + _LOGGER.debug(f"Access token obtained for client {self._client_id}") + return access_token + + class _ClientCallDetails( collections.namedtuple( "_ClientCallDetails", @@ -259,9 +298,7 @@ class _ClientCallDetails( pass -class DiodeMethodClientInterceptor( - grpc.UnaryUnaryClientInterceptor, grpc.StreamUnaryClientInterceptor -): +class DiodeMethodClientInterceptor(grpc.UnaryUnaryClientInterceptor, grpc.StreamUnaryClientInterceptor): """ Diode Method Client Interceptor class. @@ -300,8 +337,6 @@ def intercept_unary_unary(self, continuation, client_call_details, request): """Intercept unary unary.""" return self._intercept_call(continuation, client_call_details, request) - def intercept_stream_unary( - self, continuation, client_call_details, request_iterator - ): + def intercept_stream_unary(self, continuation, client_call_details, request_iterator): """Intercept stream unary.""" return self._intercept_call(continuation, client_call_details, request_iterator) diff --git a/tests/test_client.py b/tests/test_client.py index 02a319c..45be386 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,19 +1,19 @@ #!/usr/bin/env python # Copyright 2024 NetBox Labs Inc """NetBox Labs - Tests.""" + import os from unittest import mock +from unittest.mock import patch, MagicMock import grpc import pytest from netboxlabs.diode.sdk.client import ( - _DIODE_API_KEY_ENVVAR_NAME, _DIODE_SENTRY_DSN_ENVVAR_NAME, DiodeClient, DiodeMethodClientInterceptor, _ClientCallDetails, - _get_api_key, _get_sentry_dsn, _load_certs, parse_target, @@ -22,13 +22,14 @@ from netboxlabs.diode.sdk.version import version_semver -def test_init(): +def test_init(mock_diode_authentication): """Check we can initiate a client configuration.""" config = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) assert config.target == "localhost:8081" assert config.name == "diode-sdk-python" @@ -39,25 +40,36 @@ def test_init(): assert config.path == "" -def test_config_error(): +@pytest.mark.parametrize( + "client_id,client_secret,env_var_name", + [ + (None, "123", "DIODE_CLIENT_ID"), + ("123", None, "DIODE_CLIENT_SECRET"), + (None, None, "DIODE_CLIENT_ID"), + ], +) +def test_config_errors(client_id, client_secret, env_var_name): """Check we can raise a config error.""" with pytest.raises(DiodeConfigError) as err: DiodeClient( - target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1" + target="grpc://localhost:8081", + app_name="my-producer", + app_version="0.0.1", + client_id=client_id, + client_secret=client_secret, ) - assert ( - str(err.value) == "api_key param or DIODE_API_KEY environment variable required" - ) + assert str(err.value) == f"parameter or {env_var_name} environment variable required" -def test_client_error(): +def test_client_error(mock_diode_authentication): """Check we can raise a client error.""" with pytest.raises(DiodeClientError) as err: client = DiodeClient( target="grpc://invalid:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) client.ingest(entities=[]) assert err.value.status_code == grpc.StatusCode.UNAVAILABLE @@ -72,10 +84,7 @@ def test_diode_client_error_repr_returns_correct_string(): error = DiodeClientError(grpc_error) error._status_code = grpc.StatusCode.UNAVAILABLE error._details = "Some details about the error" - assert ( - repr(error) - == "" - ) + assert repr(error) == "" def test_load_certs_returns_bytes(): @@ -83,26 +92,6 @@ def test_load_certs_returns_bytes(): assert isinstance(_load_certs(), bytes) -def test_get_api_key_returns_env_var_when_no_input(): - """Check that _get_api_key returns the env var when no input is provided.""" - os.environ[_DIODE_API_KEY_ENVVAR_NAME] = "env_var_key" - assert _get_api_key() == "env_var_key" - - -def test_get_api_key_returns_input_when_provided(): - """Check that _get_api_key returns the input when provided.""" - os.environ[_DIODE_API_KEY_ENVVAR_NAME] = "env_var_key" - assert _get_api_key("input_key") == "input_key" - - -def test_get_api_key_raises_error_when_no_input_or_env_var(): - """Check that _get_api_key raises an error when no input or env var is provided.""" - if _DIODE_API_KEY_ENVVAR_NAME in os.environ: - del os.environ[_DIODE_API_KEY_ENVVAR_NAME] - with pytest.raises(DiodeConfigError): - _get_api_key() - - def test_parse_target_handles_http_prefix(): """Check that parse_target raises an error when the target contains http://.""" with pytest.raises(ValueError): @@ -166,13 +155,14 @@ def test_get_sentry_dsn_returns_none_when_no_input_or_env_var(): assert _get_sentry_dsn() is None -def test_setup_sentry_initializes_with_correct_parameters(): +def test_setup_sentry_initializes_with_correct_parameters(mock_diode_authentication): """Check that DiodeClient._setup_sentry() initializes with the correct parameters.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with mock.patch("sentry_sdk.init") as mock_init: client._setup_sentry("https://user@password.mock.dsn/123456", 0.5, 0.5) @@ -184,13 +174,14 @@ def test_setup_sentry_initializes_with_correct_parameters(): ) -def test_client_sets_up_secure_channel_when_grpcs_scheme_is_found_in_target(): +def test_client_sets_up_secure_channel_when_grpcs_scheme_is_found_in_target(mock_diode_authentication): """Check that DiodeClient.__init__() sets up the gRPC secure channel when grpcs:// scheme is found in the target.""" client = DiodeClient( target="grpcs://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with ( mock.patch("grpc.secure_channel") as mock_secure_channel, @@ -200,20 +191,22 @@ def test_client_sets_up_secure_channel_when_grpcs_scheme_is_found_in_target(): target="grpcs://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_debug.assert_called_once_with("Setting up gRPC secure channel") mock_secure_channel.assert_called_once() -def test_client_sets_up_insecure_channel_when_grpc_scheme_is_found_in_target(): +def test_client_sets_up_insecure_channel_when_grpc_scheme_is_found_in_target(mock_diode_authentication): """Check that DiodeClient.__init__() sets up the gRPC insecure channel when grpc:// scheme is found in the target.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with ( mock.patch("grpc.insecure_channel") as mock_insecure_channel, @@ -223,7 +216,8 @@ def test_client_sets_up_insecure_channel_when_grpc_scheme_is_found_in_target(): target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_debug.assert_called_with( @@ -232,14 +226,15 @@ def test_client_sets_up_insecure_channel_when_grpc_scheme_is_found_in_target(): mock_insecure_channel.assert_called_once() -def test_insecure_channel_options_with_primary_user_agent(): +def test_insecure_channel_options_with_primary_user_agent(mock_diode_authentication): """Check that DiodeClient.__init__() sets the gRPC primary_user_agent option for insecure channel.""" with mock.patch("grpc.insecure_channel") as mock_insecure_channel: client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_insecure_channel.assert_called_once() @@ -252,14 +247,15 @@ def test_insecure_channel_options_with_primary_user_agent(): ) -def test_secure_channel_options_with_primary_user_agent(): +def test_secure_channel_options_with_primary_user_agent(mock_diode_authentication): """Check that DiodeClient.__init__() sets the gRPC primary_user_agent option for secure channel.""" with mock.patch("grpc.secure_channel") as mock_secure_channel: client = DiodeClient( target="grpcs://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_secure_channel.assert_called_once() @@ -272,13 +268,14 @@ def test_secure_channel_options_with_primary_user_agent(): ) -def test_client_interceptor_setup_with_path(): +def test_client_interceptor_setup_with_path(mock_diode_authentication): """Check that DiodeClient.__init__() sets up the gRPC interceptor when a path is provided.""" client = DiodeClient( target="grpc://localhost:8081/my-path", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with ( mock.patch("grpc.intercept_channel") as mock_intercept_channel, @@ -288,7 +285,8 @@ def test_client_interceptor_setup_with_path(): target="grpc://localhost:8081/my-path", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_debug.assert_called_with( @@ -297,13 +295,14 @@ def test_client_interceptor_setup_with_path(): mock_intercept_channel.assert_called_once() -def test_client_interceptor_not_setup_without_path(): +def test_client_interceptor_not_setup_without_path(mock_diode_authentication): """Check that DiodeClient.__init__() does not set up the gRPC interceptor when no path is provided.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with ( mock.patch("grpc.intercept_channel") as mock_intercept_channel, @@ -313,7 +312,8 @@ def test_client_interceptor_not_setup_without_path(): target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_debug.assert_called_with( @@ -322,13 +322,14 @@ def test_client_interceptor_not_setup_without_path(): mock_intercept_channel.assert_not_called() -def test_client_setup_sentry_called_when_sentry_dsn_exists(): +def test_client_setup_sentry_called_when_sentry_dsn_exists(mock_diode_authentication): """Check that DiodeClient._setup_sentry() is called when sentry_dsn exists.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", sentry_dsn="https://user@password.mock.dsn/123456", ) with mock.patch.object(client, "_setup_sentry") as mock_setup_sentry: @@ -336,39 +337,41 @@ def test_client_setup_sentry_called_when_sentry_dsn_exists(): target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", sentry_dsn="https://user@password.mock.dsn/123456", ) - mock_setup_sentry.assert_called_once_with( - "https://user@password.mock.dsn/123456", 1.0, 1.0 - ) + mock_setup_sentry.assert_called_once_with("https://user@password.mock.dsn/123456", 1.0, 1.0) -def test_client_setup_sentry_not_called_when_sentry_dsn_not_exists(): +def test_client_setup_sentry_not_called_when_sentry_dsn_not_exists(mock_diode_authentication): """Check that DiodeClient._setup_sentry() is not called when sentry_dsn does not exist.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with mock.patch.object(client, "_setup_sentry") as mock_setup_sentry: client.__init__( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) mock_setup_sentry.assert_not_called() -def test_client_properties_return_expected_values(): +def test_client_properties_return_expected_values(mock_diode_authentication): """Check that DiodeClient properties return the expected values.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) assert client.name == "diode-sdk-python" assert client.version == version_semver() @@ -380,50 +383,54 @@ def test_client_properties_return_expected_values(): assert isinstance(client.channel, grpc.Channel) -def test_client_enter_returns_self(): +def test_client_enter_returns_self(mock_diode_authentication): """Check that DiodeClient.__enter__() returns self.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) assert client.__enter__() is client -def test_client_exit_closes_channel(): +def test_client_exit_closes_channel(mock_diode_authentication): """Check that DiodeClient.__exit__() closes the channel.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with mock.patch.object(client._channel, "close") as mock_close: client.__exit__(None, None, None) mock_close.assert_called_once() -def test_client_close_closes_channel(): +def test_client_close_closes_channel(mock_diode_authentication): """Check that DiodeClient.close() closes the channel.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with mock.patch.object(client._channel, "close") as mock_close: client.close() mock_close.assert_called_once() -def test_setup_sentry_sets_correct_tags(): +def test_setup_sentry_sets_correct_tags(mock_diode_authentication): """Check that DiodeClient._setup_sentry() sets the correct tags.""" client = DiodeClient( target="grpc://localhost:8081", app_name="my-producer", app_version="0.0.1", - api_key="abcde", + client_id="abcde", + client_secret="123456", ) with mock.patch("sentry_sdk.set_tag") as mock_set_tag: client._setup_sentry("https://user@password.mock.dsn/123456", 0.5, 0.5) @@ -458,10 +465,7 @@ def continuation(x, _): None, ) request = None - assert ( - interceptor.intercept_unary_unary(continuation, client_call_details, request) - == "/my/path/diode.v1.IngesterService/Ingest" - ) + assert interceptor.intercept_unary_unary(continuation, client_call_details, request) == "/my/path/diode.v1.IngesterService/Ingest" def test_interceptor_intercepts_stream_unary_calls(): @@ -481,8 +485,39 @@ def continuation(x, _): ) request_iterator = None assert ( - interceptor.intercept_stream_unary( - continuation, client_call_details, request_iterator - ) + interceptor.intercept_stream_unary(continuation, client_call_details, request_iterator) == "/my/path/diode.v1.IngesterService/Ingest" ) + + +@pytest.fixture +def mock_diode_authentication(): + """ + Fixture to mock the Diode authentication process. + + This mock replaces the _DiodeAuthentication class with a mock object + that returns a mocked token for authentication. + """ + with patch("netboxlabs.diode.sdk.client._DiodeAuthentication") as MockAuth: + mock_instance = MockAuth.return_value + mock_instance.authenticate.return_value = "mocked_token" + yield MockAuth + + +def test_diode_client_with_mocked_authentication(mock_diode_authentication): + """ + Test the DiodeClient initialization with mocked authentication. + + This test verifies that the client is initialized correctly with the mocked + authentication token and that the metadata includes the expected platform + and authorization headers. + """ + client = DiodeClient( + target="grpc://localhost:8080/diode", + app_name="my-test-app", + app_version="0.0.1", + client_id="test_client_id", + client_secret="test_client_secret", + ) + assert client._metadata[0] == ("platform", client._platform) + assert client._metadata[-1] == ("authorization", "Bearer mocked_token") \ No newline at end of file From 6b1df2542633ae987217017c59216976275c7952 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 14:17:50 +0100 Subject: [PATCH 05/24] fixes PR labeller --- .github/workflows/labeler.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index f4687be..8c1fa95 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -11,6 +11,7 @@ jobs: permissions: contents: read pull-requests: write + issues: write runs-on: ubuntu-latest timeout-minutes: 5 steps: From 9907b73037212d31c9e902231155188f99cd6f3f Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 14:31:27 +0100 Subject: [PATCH 06/24] linting --- netboxlabs/diode/sdk/client.py | 4 ++-- tests/test_client.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index d528d04..40d255f 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -3,15 +3,15 @@ """NetBox Labs, Diode - SDK - Client.""" import collections -from collections.abc import Iterable import http.client import json import logging import os import platform import ssl -from urllib.parse import urlparse, urlencode import uuid +from collections.abc import Iterable +from urllib.parse import urlencode, urlparse import certifi import grpc diff --git a/tests/test_client.py b/tests/test_client.py index 45be386..8acd9e9 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,7 +4,7 @@ import os from unittest import mock -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch import grpc import pytest @@ -520,4 +520,4 @@ def test_diode_client_with_mocked_authentication(mock_diode_authentication): client_secret="test_client_secret", ) assert client._metadata[0] == ("platform", client._platform) - assert client._metadata[-1] == ("authorization", "Bearer mocked_token") \ No newline at end of file + assert client._metadata[-1] == ("authorization", "Bearer mocked_token") From 1e0d9c54ef8e276e6543e176a3504b8404f10e7b Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 15:36:38 +0100 Subject: [PATCH 07/24] adds retries when 401 response --- netboxlabs/diode/sdk/client.py | 65 ++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 40d255f..425ea6d 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -101,17 +101,17 @@ def __init__( self._python_version = platform.python_version() # Read client credentials from environment variables - client_id = _get_required_config_value(_CLIENT_ID_ENVVAR_NAME, client_id) - client_secret = _get_required_config_value(_CLIENT_SECRET_ENVVAR_NAME, client_secret) + self._client_id = _get_required_config_value(_CLIENT_ID_ENVVAR_NAME, client_id) + self._client_secret = _get_required_config_value(_CLIENT_SECRET_ENVVAR_NAME, client_secret) + - authentication_client = _DiodeAuthentication(self._target, self._tls_verify, client_id, client_secret) - access_token = authentication_client.authenticate() self._metadata = ( ("platform", self._platform), ("python-version", self._python_version), - ("authorization", f"Bearer {access_token}"), ) + self._authenticate() + channel_opts = ( ( "grpc.primary_user_agent", @@ -210,19 +210,27 @@ def ingest( stream: str | None = _DEFAULT_STREAM, ) -> ingester_pb2.IngestResponse: """Ingest entities.""" - try: - request = ingester_pb2.IngestRequest( - stream=stream, - id=str(uuid.uuid4()), - entities=entities, - sdk_name=self.name, - sdk_version=self.version, - producer_app_name=self.app_name, - producer_app_version=self.app_version, - ) - return self._stub.Ingest(request, metadata=self._metadata) - except grpc.RpcError as err: - raise DiodeClientError(err) from err + max_retries = 3 + for attempt in range(max_retries): + try: + request = ingester_pb2.IngestRequest( + stream=stream, + id=str(uuid.uuid4()), + entities=entities, + sdk_name=self.name, + sdk_version=self.version, + producer_app_name=self.app_name, + producer_app_version=self.app_version, + ) + return self._stub.Ingest(request, metadata=self._metadata) + except grpc.RpcError as err: + if err.code() == grpc.StatusCode.UNAUTHENTICATED: + self._authenticate() + if attempt < max_retries - 1: + _LOGGER.info(f"Retrying ingestion due to UNAUTHENTICATED error, attempt {attempt + 1}") + continue + raise DiodeClientError(err) from err + return None # should never hit this but it makes the linter happy def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): sentry_sdk.init( @@ -239,6 +247,12 @@ def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rat sentry_sdk.set_tag("platform", self._platform) sentry_sdk.set_tag("python_version", self._python_version) + def _authenticate(self): + authentication_client = _DiodeAuthentication(self._target, self._tls_verify, self._client_id, self._client_secret) + access_token = authentication_client.authenticate() + self._metadata = list(filter(lambda x: x[0] != "authorization", self._metadata)) + \ + [("authorization", f"Bearer {access_token}")] + class _DiodeAuthentication: def __init__(self, target: str, tls_verify: bool, client_id: str, client_secret: str): @@ -249,10 +263,15 @@ def __init__(self, target: str, tls_verify: bool, client_id: str, client_secret: def authenticate(self) -> str: """Request an OAuth2 token using client credentials and return it.""" - conn = http.client.HTTPSConnection( - self._target, - context=None if self._tls_verify else ssl._create_unverified_context(), - ) + if self._tls_verify: + conn = http.client.HTTPSConnection( + self._target, + context=None if self._tls_verify else ssl._create_unverified_context(), + ) + else: + conn = http.client.HTTPConnection( + self._target, + ) headers = {"Content-type": "application/x-www-form-urlencoded"} data = urlencode( { @@ -261,7 +280,7 @@ def authenticate(self) -> str: "client_secret": self._client_secret, } ) - conn.request("POST", "/token", data, headers) + conn.request("POST", "/diode/auth/token", data, headers) response = conn.getresponse() if response.status != 200: raise DiodeConfigError(f"Failed to obtain access token: {response.reason}") From 6c1a76ea3df5837e9da7234d87d3be0d904549fc Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 15:39:28 +0100 Subject: [PATCH 08/24] adds config for auth retries --- netboxlabs/diode/sdk/client.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 425ea6d..ab267f2 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -22,6 +22,7 @@ from netboxlabs.diode.sdk.ingester import Entity from netboxlabs.diode.sdk.version import version_semver +_MAX_RETRIES_ENVVAR_NAME = "DIODE_MAX_AUTH_RETRIES" _DIODE_SDK_LOG_LEVEL_ENVVAR_NAME = "DIODE_SDK_LOG_LEVEL" _DIODE_SENTRY_DSN_ENVVAR_NAME = "DIODE_SENTRY_DSN" _CLIENT_ID_ENVVAR_NAME = "DIODE_CLIENT_ID" @@ -94,6 +95,7 @@ def __init__( log_level = os.getenv(_DIODE_SDK_LOG_LEVEL_ENVVAR_NAME, "INFO").upper() logging.basicConfig(level=log_level) + self._max_auth_retries = os.getenv(_MAX_RETRIES_ENVVAR_NAME, 3) self._target, self._path, self._tls_verify = parse_target(target) self._app_name = app_name self._app_version = app_version @@ -210,8 +212,7 @@ def ingest( stream: str | None = _DEFAULT_STREAM, ) -> ingester_pb2.IngestResponse: """Ingest entities.""" - max_retries = 3 - for attempt in range(max_retries): + for attempt in range(self._max_auth_retries): try: request = ingester_pb2.IngestRequest( stream=stream, @@ -226,7 +227,7 @@ def ingest( except grpc.RpcError as err: if err.code() == grpc.StatusCode.UNAUTHENTICATED: self._authenticate() - if attempt < max_retries - 1: + if attempt < self._max_auth_retries - 1: _LOGGER.info(f"Retrying ingestion due to UNAUTHENTICATED error, attempt {attempt + 1}") continue raise DiodeClientError(err) from err From 6b4ceea3aa4435699bfa68c74b0d9f0e844a0a95 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 15:52:24 +0100 Subject: [PATCH 09/24] add write access to contents for labeller action --- .github/workflows/labeler.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 8c1fa95..0a05de4 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -9,7 +9,7 @@ concurrency: jobs: triage: permissions: - contents: read + contents: write pull-requests: write issues: write runs-on: ubuntu-latest From 24e5c2c98ce6263b3d29e10e75e4afc9c5ded5d2 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 20:36:48 +0100 Subject: [PATCH 10/24] reverts action permissions --- .github/workflows/labeler.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/labeler.yaml b/.github/workflows/labeler.yaml index 0a05de4..f4687be 100644 --- a/.github/workflows/labeler.yaml +++ b/.github/workflows/labeler.yaml @@ -9,9 +9,8 @@ concurrency: jobs: triage: permissions: - contents: write + contents: read pull-requests: write - issues: write runs-on: ubuntu-latest timeout-minutes: 5 steps: From 0f87d1f343d63129a0ba0af8e8f3ef9f585e2c4d Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 15 Apr 2025 20:39:39 +0100 Subject: [PATCH 11/24] lock pytest-cov to 6.0.0 to avoid output parsing issue --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3388bec..ae49496 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ [project.optional-dependencies] # Optional dev = ["black", "check-manifest", "ruff"] -test = ["coverage", "pytest", "pytest-cov"] +test = ["coverage", "pytest", "pytest-cov==6.0.0"] [tool.coverage.run] omit = [ From 0197fc2c7b5140e35061e0090e0b4dd133c9ab51 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Wed, 16 Apr 2025 10:18:17 +0100 Subject: [PATCH 12/24] refactors error handling --- netboxlabs/diode/sdk/client.py | 10 +++++----- tests/test_client.py | 28 +++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index ab267f2..178fb65 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -226,12 +226,11 @@ def ingest( return self._stub.Ingest(request, metadata=self._metadata) except grpc.RpcError as err: if err.code() == grpc.StatusCode.UNAUTHENTICATED: - self._authenticate() if attempt < self._max_auth_retries - 1: _LOGGER.info(f"Retrying ingestion due to UNAUTHENTICATED error, attempt {attempt + 1}") + self._authenticate() continue raise DiodeClientError(err) from err - return None # should never hit this but it makes the linter happy def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): sentry_sdk.init( @@ -249,18 +248,19 @@ def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rat sentry_sdk.set_tag("python_version", self._python_version) def _authenticate(self): - authentication_client = _DiodeAuthentication(self._target, self._tls_verify, self._client_id, self._client_secret) + authentication_client = _DiodeAuthentication(self._target, self._tls_verify, self._client_id, self._client_secret, self._path) access_token = authentication_client.authenticate() self._metadata = list(filter(lambda x: x[0] != "authorization", self._metadata)) + \ [("authorization", f"Bearer {access_token}")] class _DiodeAuthentication: - def __init__(self, target: str, tls_verify: bool, client_id: str, client_secret: str): + def __init__(self, target: str, path: str, tls_verify: bool, client_id: str, client_secret: str): self._target = target self._tls_verify = tls_verify self._client_id = client_id self._client_secret = client_secret + self._path = path def authenticate(self) -> str: """Request an OAuth2 token using client credentials and return it.""" @@ -281,7 +281,7 @@ def authenticate(self) -> str: "client_secret": self._client_secret, } ) - conn.request("POST", "/diode/auth/token", data, headers) + conn.request("POST", f"{self._path}/auth/token", data, headers) response = conn.getresponse() if response.status != 200: raise DiodeConfigError(f"Failed to obtain access token: {response.reason}") diff --git a/tests/test_client.py b/tests/test_client.py index 8acd9e9..4329c62 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,7 +4,7 @@ import os from unittest import mock -from unittest.mock import MagicMock, patch +from unittest.mock import patch, MagicMock import grpc import pytest @@ -521,3 +521,29 @@ def test_diode_client_with_mocked_authentication(mock_diode_authentication): ) assert client._metadata[0] == ("platform", client._platform) assert client._metadata[-1] == ("authorization", "Bearer mocked_token") + +def test_ingest_retries_on_unauthenticated_error(mock_diode_authentication): + """Test that the ingest method retries on UNAUTHENTICATED error.""" + # Create a mock stub that raises UNAUTHENTICATED error + mock_stub = MagicMock() + mock_stub.Ingest.side_effect = grpc.RpcError() + mock_stub.Ingest.side_effect.code = lambda: grpc.StatusCode.UNAUTHENTICATED + mock_stub.Ingest.side_effect.details = lambda: "Something went wrong" + + client = DiodeClient( + target="grpc://localhost:8081", + app_name="my-producer", + app_version="0.0.1", + client_id="abcde", + client_secret="123456", + ) + + # Patch the DiodeClient to use the mock stub + client._stub = mock_stub + + # Attempt to ingest entities and expect a DiodeClientError after retries + with pytest.raises(DiodeClientError): + client.ingest(entities=[]) + + # Verify that the Ingest method was called the expected number of times + assert mock_stub.Ingest.call_count == client._max_auth_retries \ No newline at end of file From 5f3e93b5601a287bd282524ba0ba1a56e995ff70 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Wed, 16 Apr 2025 16:09:17 +0100 Subject: [PATCH 13/24] expose max auth retries on client constructor --- netboxlabs/diode/sdk/client.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 178fb65..79ec5e5 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -69,6 +69,12 @@ def _get_required_config_value(env_var_name: str, value: str | None = None) -> s raise DiodeConfigError(f"parameter or {env_var_name} environment variable required") return value +def _get_optional_config_value(env_var_name: str, value: str | None = None) -> str | None: + """Get optional config value either from provided value or environment variable.""" + if value is None: + value = os.getenv(env_var_name) + return value + class DiodeClient: """Diode Client.""" @@ -90,12 +96,13 @@ def __init__( sentry_dsn: str = None, sentry_traces_sample_rate: float = 1.0, sentry_profiles_sample_rate: float = 1.0, + max_auth_retries: int = 3, ): """Initiate a new client.""" log_level = os.getenv(_DIODE_SDK_LOG_LEVEL_ENVVAR_NAME, "INFO").upper() logging.basicConfig(level=log_level) - self._max_auth_retries = os.getenv(_MAX_RETRIES_ENVVAR_NAME, 3) + self._max_auth_retries = _get_optional_config_value(_MAX_RETRIES_ENVVAR_NAME, max_auth_retries) self._target, self._path, self._tls_verify = parse_target(target) self._app_name = app_name self._app_version = app_version From d97975f9dfef76f1e42b2cd2a7a84313b31e268c Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Wed, 16 Apr 2025 17:07:06 +0100 Subject: [PATCH 14/24] fixes linting --- netboxlabs/diode/sdk/client.py | 1 + tests/test_client.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 79ec5e5..758ce0f 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -238,6 +238,7 @@ def ingest( self._authenticate() continue raise DiodeClientError(err) from err + return RuntimeError("Max retries exceeded") def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): sentry_sdk.init( diff --git a/tests/test_client.py b/tests/test_client.py index 4329c62..b965bd8 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,7 +4,7 @@ import os from unittest import mock -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch import grpc import pytest @@ -546,4 +546,4 @@ def test_ingest_retries_on_unauthenticated_error(mock_diode_authentication): client.ingest(entities=[]) # Verify that the Ingest method was called the expected number of times - assert mock_stub.Ingest.call_count == client._max_auth_retries \ No newline at end of file + assert mock_stub.Ingest.call_count == client._max_auth_retries From 4b7ff6e9f5551a1bdb81bf23948a039f99a438c9 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Thu, 17 Apr 2025 09:38:54 +0100 Subject: [PATCH 15/24] fixes linting --- netboxlabs/diode/sdk/ingester.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netboxlabs/diode/sdk/ingester.py b/netboxlabs/diode/sdk/ingester.py index c5c84ac..3bf7f0b 100644 --- a/netboxlabs/diode/sdk/ingester.py +++ b/netboxlabs/diode/sdk/ingester.py @@ -11,7 +11,9 @@ import datetime import re from typing import Any + from google.protobuf import timestamp_pb2 as _timestamp_pb2 + import netboxlabs.diode.sdk.diode.v1.ingester_pb2 as pb PRIMARY_VALUE_MAP = { From 9bc9e0c74d004cb5a2e0221985755f4a03d9c433 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Thu, 17 Apr 2025 16:21:50 +0100 Subject: [PATCH 16/24] handle empty paths and adds tests --- netboxlabs/diode/sdk/client.py | 5 +-- tests/test_client.py | 58 ++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 758ce0f..ee7ae81 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -256,7 +256,7 @@ def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rat sentry_sdk.set_tag("python_version", self._python_version) def _authenticate(self): - authentication_client = _DiodeAuthentication(self._target, self._tls_verify, self._client_id, self._client_secret, self._path) + authentication_client = _DiodeAuthentication(self._target, self._path, self._tls_verify, self._client_id, self._client_secret) access_token = authentication_client.authenticate() self._metadata = list(filter(lambda x: x[0] != "authorization", self._metadata)) + \ [("authorization", f"Bearer {access_token}")] @@ -289,7 +289,8 @@ def authenticate(self) -> str: "client_secret": self._client_secret, } ) - conn.request("POST", f"{self._path}/auth/token", data, headers) + url = f"{self._path}/auth/token" if self._path and self._path != "/" else "/auth/token" + conn.request("POST", url, data, headers) response = conn.getresponse() if response.status != 200: raise DiodeConfigError(f"Failed to obtain access token: {response.reason}") diff --git a/tests/test_client.py b/tests/test_client.py index b965bd8..7c22a44 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -5,6 +5,7 @@ import os from unittest import mock from unittest.mock import MagicMock, patch +import json import grpc import pytest @@ -17,6 +18,7 @@ _get_sentry_dsn, _load_certs, parse_target, + _DiodeAuthentication, ) from netboxlabs.diode.sdk.exceptions import DiodeClientError, DiodeConfigError from netboxlabs.diode.sdk.version import version_semver @@ -522,6 +524,7 @@ def test_diode_client_with_mocked_authentication(mock_diode_authentication): assert client._metadata[0] == ("platform", client._platform) assert client._metadata[-1] == ("authorization", "Bearer mocked_token") + def test_ingest_retries_on_unauthenticated_error(mock_diode_authentication): """Test that the ingest method retries on UNAUTHENTICATED error.""" # Create a mock stub that raises UNAUTHENTICATED error @@ -547,3 +550,58 @@ def test_ingest_retries_on_unauthenticated_error(mock_diode_authentication): # Verify that the Ingest method was called the expected number of times assert mock_stub.Ingest.call_count == client._max_auth_retries + + +def test_diode_authentication_success(mock_diode_authentication): + """Test successful authentication in _DiodeAuthentication.""" + auth = _DiodeAuthentication( + target="localhost:8081", + path="/diode", + tls_verify=False, + client_id="test_client_id", + client_secret="test_client_secret", + ) + with mock.patch("http.client.HTTPConnection") as mock_http_conn: + mock_conn_instance = mock_http_conn.return_value + mock_conn_instance.getresponse.return_value.status = 200 + mock_conn_instance.getresponse.return_value.read.return_value = json.dumps({"access_token": "mocked_token"}).encode() + + token = auth.authenticate() + assert token == "mocked_token" + + +def test_diode_authentication_failure(mock_diode_authentication): + """Test authentication failure in _DiodeAuthentication.""" + auth = _DiodeAuthentication( + target="localhost:8081", + path="/diode", + tls_verify=False, + client_id="test_client_id", + client_secret="test_client_secret", + ) + with mock.patch("http.client.HTTPConnection") as mock_http_conn: + mock_conn_instance = mock_http_conn.return_value + mock_conn_instance.getresponse.return_value.status = 401 + mock_conn_instance.getresponse.return_value.reason = "Unauthorized" + + with pytest.raises(DiodeConfigError) as excinfo: + auth.authenticate() + assert "Failed to obtain access token" in str(excinfo.value) + +@pytest.mark.parametrize("path", ["/diode", "", None]) +def test_diode_authentication_url_with_path(mock_diode_authentication, path): + """Test that the authentication URL is correctly formatted with a path.""" + auth = _DiodeAuthentication( + target="localhost:8081", + path=path, + tls_verify=False, + client_id="test_client_id", + client_secret="test_client_secret", + ) + with mock.patch("http.client.HTTPConnection") as mock_http_conn: + mock_conn_instance = mock_http_conn.return_value + mock_conn_instance.getresponse.return_value.status = 200 + mock_conn_instance.getresponse.return_value.read.return_value = json.dumps({"access_token": "mocked_token"}).encode() + auth.authenticate() + mock_conn_instance.request.assert_called_once_with("POST", f"{path or ''}/auth/token", mock.ANY, mock.ANY) + From 90f33a9de3bf9ac7a3bd9b2b75c51a9d2734f526 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Thu, 17 Apr 2025 16:22:16 +0100 Subject: [PATCH 17/24] linting --- tests/test_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_client.py b/tests/test_client.py index 7c22a44..9273c35 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -2,10 +2,10 @@ # Copyright 2024 NetBox Labs Inc """NetBox Labs - Tests.""" +import json import os from unittest import mock from unittest.mock import MagicMock, patch -import json import grpc import pytest @@ -15,10 +15,10 @@ DiodeClient, DiodeMethodClientInterceptor, _ClientCallDetails, + _DiodeAuthentication, _get_sentry_dsn, _load_certs, parse_target, - _DiodeAuthentication, ) from netboxlabs.diode.sdk.exceptions import DiodeClientError, DiodeConfigError from netboxlabs.diode.sdk.version import version_semver From 210719a9fac437013b3ecdc23e2fe4a924baa6cf Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Thu, 17 Apr 2025 16:40:30 +0100 Subject: [PATCH 18/24] adds better bath handling --- netboxlabs/diode/sdk/client.py | 9 +++++++-- tests/test_client.py | 11 +++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index ee7ae81..429cab5 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -113,7 +113,6 @@ def __init__( self._client_id = _get_required_config_value(_CLIENT_ID_ENVVAR_NAME, client_id) self._client_secret = _get_required_config_value(_CLIENT_SECRET_ENVVAR_NAME, client_secret) - self._metadata = ( ("platform", self._platform), ("python-version", self._python_version), @@ -289,7 +288,7 @@ def authenticate(self) -> str: "client_secret": self._client_secret, } ) - url = f"{self._path}/auth/token" if self._path and self._path != "/" else "/auth/token" + url = self._get_auth_url() conn.request("POST", url, data, headers) response = conn.getresponse() if response.status != 200: @@ -302,6 +301,12 @@ def authenticate(self) -> str: _LOGGER.debug(f"Access token obtained for client {self._client_id}") return access_token + def _get_auth_url(self) -> str: + """Construct the authentication URL, handling trailing slashes in the path.""" + # Ensure the path does not have trailing slashes + path = self._path.rstrip('/') if self._path else '' + return f"{path}/auth/token" + class _ClientCallDetails( collections.namedtuple( diff --git a/tests/test_client.py b/tests/test_client.py index 9273c35..4cc510e 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -588,7 +588,14 @@ def test_diode_authentication_failure(mock_diode_authentication): auth.authenticate() assert "Failed to obtain access token" in str(excinfo.value) -@pytest.mark.parametrize("path", ["/diode", "", None]) +@pytest.mark.parametrize("path", [ + "/diode", + "", + None, + "/diode/", + "diode", + "diode/", + ]) def test_diode_authentication_url_with_path(mock_diode_authentication, path): """Test that the authentication URL is correctly formatted with a path.""" auth = _DiodeAuthentication( @@ -603,5 +610,5 @@ def test_diode_authentication_url_with_path(mock_diode_authentication, path): mock_conn_instance.getresponse.return_value.status = 200 mock_conn_instance.getresponse.return_value.read.return_value = json.dumps({"access_token": "mocked_token"}).encode() auth.authenticate() - mock_conn_instance.request.assert_called_once_with("POST", f"{path or ''}/auth/token", mock.ANY, mock.ANY) + mock_conn_instance.request.assert_called_once_with("POST", f"{(path or '').rstrip('/')}/auth/token", mock.ANY, mock.ANY) From a285af3d43d36e4ac0b06c912f38ab257cde561d Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Thu, 17 Apr 2025 16:45:53 +0100 Subject: [PATCH 19/24] omits ingester from coverage report --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index ae49496..31b892b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ test = ["coverage", "pytest", "pytest-cov==6.0.0"] [tool.coverage.run] omit = [ + "*/netboxlabs/diode/sdk/ingester.py", "*/netboxlabs/diode/sdk/diode/*", "*/netboxlabs/diode/sdk/validate/*", "*/tests/*", From 0b20fb01fdd5de3bb4cad4351051e44cd5b212b0 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Thu, 17 Apr 2025 21:32:43 +0200 Subject: [PATCH 20/24] chore: update dependencies to allow newer versions (#41) Signed-off-by: Michal Fiedorowicz --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 31b892b..249b6ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,9 +24,9 @@ classifiers = [ # Optional ] dependencies = [ - "certifi==2024.7.4", - "grpcio==1.68.1", - "grpcio-status==1.68.1", + "certifi>=2024.7.4", + "grpcio>=1.68.1", + "grpcio-status>=1.68.1", "sentry-sdk>=2.2.1", ] From 94114e9168d5940797db519faf11044ab31aa548 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Tue, 22 Apr 2025 16:09:07 +0100 Subject: [PATCH 21/24] wraps exceptions thrown while authenticating --- netboxlabs/diode/sdk/client.py | 9 ++++++--- tests/test_client.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index 429cab5..f9f94b1 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -237,7 +237,7 @@ def ingest( self._authenticate() continue raise DiodeClientError(err) from err - return RuntimeError("Max retries exceeded") + raise RuntimeError("Max retries exceeded") def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): sentry_sdk.init( @@ -289,8 +289,11 @@ def authenticate(self) -> str: } ) url = self._get_auth_url() - conn.request("POST", url, data, headers) - response = conn.getresponse() + try: + conn.request("POST", url, data, headers) + response = conn.getresponse() + except Exception as e: + raise DiodeConfigError(f"Failed to obtain access token: {e}") if response.status != 200: raise DiodeConfigError(f"Failed to obtain access token: {response.reason}") token_info = json.loads(response.read().decode()) diff --git a/tests/test_client.py b/tests/test_client.py index 4cc510e..e8383eb 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -588,6 +588,7 @@ def test_diode_authentication_failure(mock_diode_authentication): auth.authenticate() assert "Failed to obtain access token" in str(excinfo.value) + @pytest.mark.parametrize("path", [ "/diode", "", @@ -612,3 +613,21 @@ def test_diode_authentication_url_with_path(mock_diode_authentication, path): auth.authenticate() mock_conn_instance.request.assert_called_once_with("POST", f"{(path or '').rstrip('/')}/auth/token", mock.ANY, mock.ANY) + +def test_diode_authentication_request_exception(mock_diode_authentication): + """Test that an exception during the request raises a DiodeConfigError.""" + auth = _DiodeAuthentication( + target="localhost:8081", + path="/diode", + tls_verify=False, + client_id="test_client_id", + client_secret="test_client_secret", + ) + with mock.patch("http.client.HTTPConnection") as mock_http_conn: + mock_conn_instance = mock_http_conn.return_value + mock_conn_instance.request.side_effect = Exception("Connection error") + + with pytest.raises(DiodeConfigError) as excinfo: + auth.authenticate() + assert "Failed to obtain access token: Connection error" in str(excinfo.value) + From 53905071a3f0a72d0f520b9ebc5f5eb1fa70b2a6 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Wed, 23 Apr 2025 06:59:36 +0200 Subject: [PATCH 22/24] feat: add OAuth2 diode:ingest scope to authentication process (#43) Signed-off-by: Michal Fiedorowicz --- netboxlabs/diode/sdk/client.py | 82 +++++++++++++++++++++++++--------- tests/test_client.py | 4 ++ 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/netboxlabs/diode/sdk/client.py b/netboxlabs/diode/sdk/client.py index f9f94b1..3c650f1 100644 --- a/netboxlabs/diode/sdk/client.py +++ b/netboxlabs/diode/sdk/client.py @@ -27,6 +27,7 @@ _DIODE_SENTRY_DSN_ENVVAR_NAME = "DIODE_SENTRY_DSN" _CLIENT_ID_ENVVAR_NAME = "DIODE_CLIENT_ID" _CLIENT_SECRET_ENVVAR_NAME = "DIODE_CLIENT_SECRET" +_INGEST_SCOPE = "diode:ingest" _DEFAULT_STREAM = "latest" _LOGGER = logging.getLogger(__name__) @@ -66,10 +67,15 @@ def _get_required_config_value(env_var_name: str, value: str | None = None) -> s if value is None: value = os.getenv(env_var_name) if value is None: - raise DiodeConfigError(f"parameter or {env_var_name} environment variable required") + raise DiodeConfigError( + f"parameter or {env_var_name} environment variable required" + ) return value -def _get_optional_config_value(env_var_name: str, value: str | None = None) -> str | None: + +def _get_optional_config_value( + env_var_name: str, value: str | None = None +) -> str | None: """Get optional config value either from provided value or environment variable.""" if value is None: value = os.getenv(env_var_name) @@ -102,7 +108,9 @@ def __init__( log_level = os.getenv(_DIODE_SDK_LOG_LEVEL_ENVVAR_NAME, "INFO").upper() logging.basicConfig(level=log_level) - self._max_auth_retries = _get_optional_config_value(_MAX_RETRIES_ENVVAR_NAME, max_auth_retries) + self._max_auth_retries = _get_optional_config_value( + _MAX_RETRIES_ENVVAR_NAME, max_auth_retries + ) self._target, self._path, self._tls_verify = parse_target(target) self._app_name = app_name self._app_version = app_version @@ -111,14 +119,16 @@ def __init__( # Read client credentials from environment variables self._client_id = _get_required_config_value(_CLIENT_ID_ENVVAR_NAME, client_id) - self._client_secret = _get_required_config_value(_CLIENT_SECRET_ENVVAR_NAME, client_secret) + self._client_secret = _get_required_config_value( + _CLIENT_SECRET_ENVVAR_NAME, client_secret + ) self._metadata = ( ("platform", self._platform), ("python-version", self._python_version), ) - self._authenticate() + self._authenticate(_INGEST_SCOPE) channel_opts = ( ( @@ -149,7 +159,9 @@ def __init__( _LOGGER.debug(f"Setting up gRPC interceptor for path: {self._path}") rpc_method_interceptor = DiodeMethodClientInterceptor(subpath=self._path) - intercept_channel = grpc.intercept_channel(self._channel, rpc_method_interceptor) + intercept_channel = grpc.intercept_channel( + self._channel, rpc_method_interceptor + ) channel = intercept_channel self._stub = ingester_pb2_grpc.IngesterServiceStub(channel) @@ -158,7 +170,9 @@ def __init__( if self._sentry_dsn is not None: _LOGGER.debug("Setting up Sentry") - self._setup_sentry(self._sentry_dsn, sentry_traces_sample_rate, sentry_profiles_sample_rate) + self._setup_sentry( + self._sentry_dsn, sentry_traces_sample_rate, sentry_profiles_sample_rate + ) @property def name(self) -> str: @@ -233,13 +247,17 @@ def ingest( except grpc.RpcError as err: if err.code() == grpc.StatusCode.UNAUTHENTICATED: if attempt < self._max_auth_retries - 1: - _LOGGER.info(f"Retrying ingestion due to UNAUTHENTICATED error, attempt {attempt + 1}") - self._authenticate() + _LOGGER.info( + f"Retrying ingestion due to UNAUTHENTICATED error, attempt {attempt + 1}" + ) + self._authenticate(_INGEST_SCOPE) continue raise DiodeClientError(err) from err raise RuntimeError("Max retries exceeded") - def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float): + def _setup_sentry( + self, dsn: str, traces_sample_rate: float, profiles_sample_rate: float + ): sentry_sdk.init( dsn=dsn, release=self.version, @@ -254,20 +272,37 @@ def _setup_sentry(self, dsn: str, traces_sample_rate: float, profiles_sample_rat sentry_sdk.set_tag("platform", self._platform) sentry_sdk.set_tag("python_version", self._python_version) - def _authenticate(self): - authentication_client = _DiodeAuthentication(self._target, self._path, self._tls_verify, self._client_id, self._client_secret) + def _authenticate(self, scope: str): + authentication_client = _DiodeAuthentication( + self._target, + self._path, + self._tls_verify, + self._client_id, + self._client_secret, + scope, + ) access_token = authentication_client.authenticate() - self._metadata = list(filter(lambda x: x[0] != "authorization", self._metadata)) + \ - [("authorization", f"Bearer {access_token}")] + self._metadata = list( + filter(lambda x: x[0] != "authorization", self._metadata) + ) + [("authorization", f"Bearer {access_token}")] class _DiodeAuthentication: - def __init__(self, target: str, path: str, tls_verify: bool, client_id: str, client_secret: str): + def __init__( + self, + target: str, + path: str, + tls_verify: bool, + client_id: str, + client_secret: str, + scope: str, + ): self._target = target self._tls_verify = tls_verify self._client_id = client_id self._client_secret = client_secret self._path = path + self._scope = scope def authenticate(self) -> str: """Request an OAuth2 token using client credentials and return it.""" @@ -286,6 +321,7 @@ def authenticate(self) -> str: "grant_type": "client_credentials", "client_id": self._client_id, "client_secret": self._client_secret, + "scope": self._scope, } ) url = self._get_auth_url() @@ -299,7 +335,9 @@ def authenticate(self) -> str: token_info = json.loads(response.read().decode()) access_token = token_info.get("access_token") if not access_token: - raise DiodeConfigError(f"Failed to obtain access token for client {self._client_id}") + raise DiodeConfigError( + f"Failed to obtain access token for client {self._client_id}" + ) _LOGGER.debug(f"Access token obtained for client {self._client_id}") return access_token @@ -307,7 +345,7 @@ def authenticate(self) -> str: def _get_auth_url(self) -> str: """Construct the authentication URL, handling trailing slashes in the path.""" # Ensure the path does not have trailing slashes - path = self._path.rstrip('/') if self._path else '' + path = self._path.rstrip("/") if self._path else "" return f"{path}/auth/token" @@ -332,10 +370,10 @@ class _ClientCallDetails( """ - pass - -class DiodeMethodClientInterceptor(grpc.UnaryUnaryClientInterceptor, grpc.StreamUnaryClientInterceptor): +class DiodeMethodClientInterceptor( + grpc.UnaryUnaryClientInterceptor, grpc.StreamUnaryClientInterceptor +): """ Diode Method Client Interceptor class. @@ -374,6 +412,8 @@ def intercept_unary_unary(self, continuation, client_call_details, request): """Intercept unary unary.""" return self._intercept_call(continuation, client_call_details, request) - def intercept_stream_unary(self, continuation, client_call_details, request_iterator): + def intercept_stream_unary( + self, continuation, client_call_details, request_iterator + ): """Intercept stream unary.""" return self._intercept_call(continuation, client_call_details, request_iterator) diff --git a/tests/test_client.py b/tests/test_client.py index e8383eb..7af797d 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -560,6 +560,7 @@ def test_diode_authentication_success(mock_diode_authentication): tls_verify=False, client_id="test_client_id", client_secret="test_client_secret", + scope="diode:ingest", ) with mock.patch("http.client.HTTPConnection") as mock_http_conn: mock_conn_instance = mock_http_conn.return_value @@ -578,6 +579,7 @@ def test_diode_authentication_failure(mock_diode_authentication): tls_verify=False, client_id="test_client_id", client_secret="test_client_secret", + scope="diode:ingest", ) with mock.patch("http.client.HTTPConnection") as mock_http_conn: mock_conn_instance = mock_http_conn.return_value @@ -605,6 +607,7 @@ def test_diode_authentication_url_with_path(mock_diode_authentication, path): tls_verify=False, client_id="test_client_id", client_secret="test_client_secret", + scope="diode:ingest", ) with mock.patch("http.client.HTTPConnection") as mock_http_conn: mock_conn_instance = mock_http_conn.return_value @@ -622,6 +625,7 @@ def test_diode_authentication_request_exception(mock_diode_authentication): tls_verify=False, client_id="test_client_id", client_secret="test_client_secret", + scope="diode:ingest", ) with mock.patch("http.client.HTTPConnection") as mock_http_conn: mock_conn_instance = mock_http_conn.return_value From 9c705e99a4e6142f90f4af788e3b61b6925e54ff Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Wed, 23 Apr 2025 22:42:02 +0200 Subject: [PATCH 23/24] perf: update supported object types list Signed-off-by: Michal Fiedorowicz --- README.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 83 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index c181a55..50e9eb4 100644 --- a/README.md +++ b/README.md @@ -77,21 +77,89 @@ if __name__ == "__main__": ## Supported entities (object types) -* [Device](./docs/entities.md#device) -* [Interface](./docs/entities.md#interface) -* [Device Type](./docs/entities.md#device-type) -* [Platform](./docs/entities.md#platform) -* [Manufacturer](./docs/entities.md#manufacturer) -* [Site](./docs/entities.md#site) -* [Role](./docs/entities.md#role) -* [IP Address](./docs/entities.md#ip-address) -* [Prefix](./docs/entities.md#prefix) -* [Cluster Group](./docs/entities.md#cluster-group) -* [Cluster Type](./docs/entities.md#cluster-type) -* [Cluster](./docs/entities.md#cluster) -* [Virtual Machine](./docs/entities.md#virtual-machine) -* [Virtual Disk](./docs/entities.md#virtual-disk) -* [VM Interface](./docs/entities.md#vm-interface) +* ASN +* ASN Range +* Aggregate +* Circuit +* Circuit Group +* Circuit Group Assignment +* Circuit Termination +* Circuit Type +* Cluster +* Cluster Group +* Cluster Type +* Console Port +* Console Server Port +* Contact +* Contact Assignment +* Contact Group +* Contact Role +* Device +* Device Bay +* Device Role +* Device Type +* FHRP Group +* FHRP Group Assignment +* Front Port +* IKE Policy +* IKE Proposal +* IP Address +* IP Range +* IP Sec Policy +* IP Sec Profile +* IP Sec Proposal +* Interface +* Inventory Item +* Inventory Item Role +* L2VPN +* L2VPN Termination +* Location +* MAC Address +* Manufacturer +* Module +* Module Bay +* Module Type +* Platform +* Power Feed +* Power Outlet +* Power Panel +* Power Port +* Prefix +* Provider +* Provider Account +* Provider Network +* RIR +* Rack +* Rack Type +* Rear Port +* Region +* Role +* Route Target +* Service +* Site +* Site Group +* Tag +* Tenant +* Tenant Group +* Tunnel +* Tunnel Group +* Tunnel Termination +* VLAN +* VLAN Group +* VLAN Translation Policy +* VLAN Translation Rule +* VM Interface +* VRF +* Virtual Chassis +* Virtual Circuit +* Virtual Circuit Termination +* Virtual Circuit Type +* Virtual Device Context +* Virtual Disk +* Virtual Machine +* Wireless Lan +* Wireless Lan Group +* Wireless Link ## Development notes From ccce82553bf6546f8bd73cd28a82165ad5aa0bd9 Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Wed, 23 Apr 2025 22:46:00 +0200 Subject: [PATCH 24/24] docs: add Rack Role to supported object types list in README Signed-off-by: Michal Fiedorowicz --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 50e9eb4..10119ce 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,7 @@ if __name__ == "__main__": * Provider Network * RIR * Rack +* Rack Role * Rack Type * Rear Port * Region